JimmyJin
          走在架構(gòu)師的大道上,學習的樂趣就在于將知識應用于具體實踐中,在實戰(zhàn)中實現(xiàn)知識的價值。
          posts - 4,comments - 0,trackbacks - 0
          之前只要一提起架構(gòu),給我一種很深奧、玄妙的感覺,認為很牛X,曾幾何,以為軟件架構(gòu)無非就是將幾大框架(各層次)整合在一起而已,后來當我從事系分一段時間之后,體會到如果你不能從整體上認識一個系統(tǒng)(軟件)的話是沒法做架構(gòu)的,因為滿足系統(tǒng)(軟件)的功能是一個架構(gòu)師最起碼的要求。從這個層面上講,那系統(tǒng)分析師與系統(tǒng)架構(gòu)師一樣都要對系統(tǒng)有一個整體的認識,更要認識到該系統(tǒng)在未來可能的變化及做成產(chǎn)品后如何時維護的問題。感覺系統(tǒng)分析師與系統(tǒng)架構(gòu)師好像沒什么區(qū)別似的,雖說早就知道一個偏重業(yè)務一個偏重技術(shù)。
          但自我開始閱讀“架構(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ù)真正的工作在服務器上完成。
          游戲世界特別是大型多人在線游戲(MMO)
          MMO和虛擬世界的環(huán)境始于一個非常胖的客戶端:
          它通常是頂級的PC、具有最強勁的CPU、很大的內(nèi)存,以及本身計算能力很強的顯卡。只要有可能,數(shù)據(jù)就會存放在這些客戶端上,特別是那些不會改變的信息,如地理信息、材質(zhì)貼圖和規(guī)則集。服務器保持盡可能的簡單,通常只保存非常抽象的世界表示和其世界中的實體的表示。而且服務器的設計目標是盡可能少地進行計算。絕大部分的計算留給了客戶端。服務器的真正工作是保存共享的世界真實狀態(tài),確保不同客戶端對世界的看法差異可以根據(jù)需要得到糾正。真實狀態(tài)需要由服務器來保存,因為控制客戶端的玩家很有興趣讓他們的表現(xiàn)變成最強,所以可能會受到誘惑,根據(jù)他們的喜好修改共享的真實(如查他們可以)。在一般情況下,如果有可能,玩家就會作弊,所以服務器必須是共享真實的最終來源。
          MMO和虛擬世界的數(shù)據(jù)訪問模式也和企業(yè)中看到的情有著很大的區(qū)別。企業(yè)中的一般經(jīng)驗法則是90%的數(shù)據(jù)訪問都是只讀的,大多數(shù)任務會讀取大量數(shù)據(jù),然后會再改寫少量數(shù)據(jù)。在MMO和虛擬世界的環(huán)境中,大多數(shù)任務只訪問服務器上少量的狀態(tài)數(shù)據(jù),但在它們訪問的數(shù)據(jù)中,大約一半會被改寫
          在線游戲環(huán)境與企業(yè)環(huán)境的共同關(guān)注點:
          1,延遲是敵人,但也有不同。最大的不同要追溯到用戶所做的事情的不同。在企業(yè)環(huán)境中,目標是管理業(yè)務,如果總吞吐量得到改進,在處理中有一點延遲是可以接受的,在MMO和虛擬世界的環(huán)境中,目標是開心,而延遲是開心的敵人,所以MMO或虛擬世界的基礎設施需要圍繞著盡可能限定延遲的需求來設計即便以吞吐量為代價也在所不惜。
          XX在線游戲(Darkstar)架構(gòu)的目標:
          1,對伸縮性的需求表明,系統(tǒng)應該是分布式的、并發(fā)的,游戲程序員應該把系統(tǒng)視為一臺單機,運行著一個線程,所有允許部署到多線程和多
          計算機上的機制都應由XX在線游戲的基礎設施來考慮。
          2,支持隨時伸縮,同時不要求游戲邏輯受到伸縮的影響,這個架構(gòu)應該支持游戲動態(tài)地響應負載,而不是讓這種響應成為游戲設計的工作的一部分。
          架構(gòu):
          Darkstar由一組獨立的服務構(gòu)成,用一組相互聯(lián)系的服務來構(gòu)建系統(tǒng),“分而治之”,分而治之是設計所有大型計算機系統(tǒng)的基本方法。
          客戶端連接到游戲邏輯使用的通信機制是基礎設施的一部分,這些機制支持客戶端到服務器的直接通信,也支持一種“發(fā)布-訂閱”通道,任何發(fā)往通道的消息都會送達該通道的所有訂閱者。
          游戲服務器的設計方式和游戲為為支持并玩家所采取的伸縮性技術(shù)。
          并行與延遲

          二:數(shù)據(jù)增長——Facebook平臺的架構(gòu)

          posted on 2012-05-24 12:31 jimmy2009 閱讀(236) 評論(0)  編輯  收藏 所屬分類: 系統(tǒng)架構(gòu)

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 葵青区| 平远县| 修文县| 张家界市| 巴中市| 宿州市| 修武县| 新泰市| 荥阳市| 昭觉县| 云南省| 武义县| 巴彦淖尔市| 同心县| 乌兰县| 兴海县| 咸阳市| 内江市| 宁陵县| 高平市| 吴忠市| 什邡市| 宝清县| 扶风县| 永康市| 黄龙县| 沈阳市| 祁东县| 忻州市| 越西县| 西乌| 奉新县| 定结县| 通化市| 西充县| 洱源县| 宣威市| 德江县| 浏阳市| 栖霞市| 温州市|