浅谈系统架构
“架構(gòu)”一詞對程序員來說是再常見不過的詞了,一提到架構(gòu)絕大部分的技術(shù)人員都會有一種不可企及、十分高大上的感覺,其實架構(gòu)就在我們身邊,是我們看得到摸的著的東西。
我們先看看幾個概念,系統(tǒng)與子系統(tǒng),模塊與組件,框架與架構(gòu)的關(guān)系和區(qū)別。
系統(tǒng)與子系統(tǒng)
系統(tǒng)是由一群有關(guān)聯(lián)的個體按照指定的規(guī)則運作,從而能完成個別元件不能單獨完成的工作的整體。例如:汽車與發(fā)動機、輪胎等元件的關(guān)系。 子系統(tǒng)也是一個系統(tǒng),他與系統(tǒng)的定義是一致的,只是觀察的角度不同,一個系統(tǒng)可能是更大系統(tǒng)的一個子系統(tǒng)。模塊與組件
模塊和組件都是系統(tǒng)的組成部分,只是從不同角度拆分系統(tǒng)而已; 從邏輯的角度來拆分就是“模塊”,從物理的角度拆分后就是“組件”; 劃分模塊的主要目的是職責(zé)分離,劃分“組件”的目的是單元復(fù)用。框架與架構(gòu)
框架(Framework)關(guān)注的是規(guī)范與功能產(chǎn)品,例如MVC規(guī)范與SpringMVC這個MVC的開發(fā)框架;架構(gòu)(Architecture)關(guān)注的是“結(jié)構(gòu)”,他是系統(tǒng)的頂層結(jié)構(gòu)。總結(jié):系統(tǒng)根據(jù)業(yè)務(wù)或功能劃分為各個模塊,某些模塊可能又被升級為了子系統(tǒng);模塊中可能使用了很多組件來實現(xiàn)某些具體功能;同時,也可能使用了某些框架來作為開發(fā)的基礎(chǔ),而架構(gòu)則描述了各個子系統(tǒng)或模塊間如何協(xié)調(diào)工作。
為什么要做架構(gòu)
**架構(gòu)設(shè)計的主要目的是為了解決軟件系統(tǒng)復(fù)雜度帶來的問題**那么系統(tǒng)的復(fù)雜度主要來源于哪些方面呢?其主要來源與以下幾個方面
1)高性能
2)高可用
3)可擴展性
4)低成本
5)安全
6)規(guī)模
也就是說結(jié)構(gòu)設(shè)計是為了解決某些關(guān)鍵的問題而存在,并不是每個系統(tǒng)都需要進行架構(gòu)設(shè)計的。
在做架構(gòu)設(shè)計的時候不能貪大而全,而是要遵循幾個簡單的原則
1)合適原則:合適優(yōu)于業(yè)界領(lǐng)先
沒有那么多人,卻想干那么多人的活,是失敗的第一個主要原因;沒有那么多積累卻想一步登天,是失敗的第二個主要原因;沒有那額卓越的業(yè)務(wù)場景,卻幻想靈光一閃成為天才,是失敗的第三個主要原因。
2)簡單原則:簡單優(yōu)于復(fù)雜
結(jié)構(gòu)的簡單,邏輯的簡單
3)演化原則:演化優(yōu)于一步到位
對于建筑來說,永恒是主題;而對于軟件來說,變化才是主題。
轉(zhuǎn)載于:https://blog.51cto.com/dengshuangfu/2354869
總結(jié)
- 上一篇: 图形学之开篇概念及综述
- 下一篇: Windows守护进程简单示例