但自我開始閱讀“架構(gòu)之美”這本書后,開始對架構(gòu)有了進一步的認識:
本質(zhì)上,架構(gòu)只是系統(tǒng)設計中的一部分,無非架構(gòu)更突出某些細節(jié),并通過抽象省略另一些細節(jié)。關(guān)注實現(xiàn)系統(tǒng)組件的開發(fā)者可能不會特別關(guān)心所有組件是如何裝配在一起,而是主要關(guān)注少數(shù)組件的設計和開發(fā),包括他們必須遵守的架構(gòu)約束和可以應用的規(guī)則。因此,開發(fā)者和架構(gòu)師面對的是系統(tǒng)設計的不同方面。如果說架構(gòu)關(guān)注的是組件之間的關(guān)系和系統(tǒng)組件外部可見的屬性,那么設計還要關(guān)注這些組件的內(nèi)部結(jié)構(gòu)。
架構(gòu)這個詞本質(zhì)上是從建筑學這個行業(yè)引申過來的,所以在軟件開發(fā)這個領域好多概念跟現(xiàn)在的建筑都相似。
項目關(guān)注點:
功能性、
可變性、
容量、
生態(tài)系統(tǒng)、
模塊化、
可構(gòu)建性、
產(chǎn)品化、
安全性
架構(gòu)還會影響到組織機構(gòu)。
架構(gòu)觀點中的常見思想是結(jié)構(gòu),每種結(jié)構(gòu)都由各種類型的組件及其關(guān)系構(gòu)成:它們?nèi)绾谓M合、相互調(diào)用、通信、同步,以及進行其他交互。組件可以是建筑中的支架棟梁或故事中的章節(jié)或人物。每種結(jié)構(gòu)都是為了幫助架構(gòu)師理解如何來滿足特定的關(guān)注點,如可變性或性能。展示某些關(guān)注點得到滿足時,可能會影響到其他方面的關(guān)注點,但架構(gòu)師必須能夠說明所有關(guān)注點都已得到滿足。
架構(gòu)師的角色:就是做設計上的決定包括行為上和結(jié)構(gòu)上。
信息隱藏結(jié)構(gòu)是面向?qū)ο笤O計方法的基礎,它滿足的關(guān)注點:信息隱藏結(jié)構(gòu)的設計應該能滿足可變性、模塊化和可構(gòu)建性的要求。
定義良好的使用結(jié)構(gòu)將創(chuàng)建系統(tǒng)的適當子集,可以用于驅(qū)動迭代式或增量式的開發(fā)循環(huán),滿足的關(guān)注點:產(chǎn)品化和生態(tài)系統(tǒng)。
信息隱藏模塊結(jié)構(gòu)和使用結(jié)構(gòu)是靜態(tài)的結(jié)構(gòu),存在于設計時和編碼時,進程結(jié)構(gòu)是運行時的結(jié)構(gòu)。
進程結(jié)構(gòu)滿足的關(guān)注點:性能和容量。
一:伸縮性架構(gòu)設計
胖客戶端與廋客戶端
在線游戲環(huán)境與企業(yè)環(huán)境幾乎完全相反,
經(jīng)典的企業(yè)環(huán)境可以描述為一個“瘦”客戶端連接一個“胖”服務器(這個服務器又常常連接到一個更“胖”的數(shù)據(jù)庫服務器)。服務器將保存客戶端需要的絕大部分信息,在最理想的情況下,客戶端內(nèi)在不多,沒有自已的硬盤,它是服務器的一個稱職的顯示設備,絕大多數(shù)據(jù)真正的工作在服務器上完成。
在線游戲環(huán)境與企業(yè)環(huán)境的共同關(guān)注點:
1,對伸縮性的需求表明,系統(tǒng)應該是分布式的、并發(fā)的,游戲程序員應該把系統(tǒng)視為一臺單機,運行著一個線程,所有允許部署到多線程和多
2,支持隨時伸縮,同時不要求游戲邏輯受到伸縮的影響,這個架構(gòu)應該支持游戲動態(tài)地響應負載,而不是讓這種響應成為游戲設計的工作的一部分。
架構(gòu):
客戶端連接到游戲邏輯使用的通信機制是基礎設施的一部分,這些機制支持客戶端到服務器的直接通信,也支持一種“發(fā)布-訂閱”通道,任何發(fā)往通道的消息都會送達該通道的所有訂閱者。
游戲服務器的設計方式和游戲為為支持并玩家所采取的伸縮性技術(shù)。
并行與延遲