架構之美閱讀筆記三

2022-07-15 13:09:13 字數 1088 閱讀 2080

今天閱讀了《架構之美》第三章,主要利用遊戲軟體開發作為例子,向我們展示了在設計一些系統架構時,確保系統的伸縮性的重要性。對於一款執行在網路上或網際網路上的系統,如果你希望在設計之初就將系統的適用範圍的誤差控制在幾個數量級以內的想法是荒謬的。因為我們無法確定設計出的系統在將來的運用時將會有多少客戶會同時使用它,且不同時間使用量也會有不同,此時我們要做的就是讓我們的體統具有很強的伸縮性,以適應不斷變換的需求,主要使用胖客戶端瘦伺服器的方式,同時配備並行連線伺服器的方式。

書中以darkstar專案作為例子,講述了它的架構。遊戲架構要求使用者體驗好,大的延遲不被接受,甚至犧牲吞吐量換取少的延遲。而企業環境的架構重在吞吐量,管理業務。有一點延遲可以接受。

一般情況下,處理擁塞的解決方案:

1. 基於地理位置來實現。遊戲設計包含不同的遊戲區域,每個虛擬區域執行一台伺服器,每個區域擁有自我限制功能,當人數過多時,服務擁塞,遊戲變慢,趣味性下降,使用者就轉向更有趣的區域,響應時間就會得到改進。(對於棋牌類遊戲,每個房間或區域有人數限制,滿的房間可以限制進入)

這種開發方法的問題:遊戲設計時,需要決定哪些區域放在一台伺服器上,而新增新的區域時比較容易,若改動原來的區域,可能需要改動**,這些都是開發的工作量。

2. 分割槽sharding。乙個分割槽是乙個區域的副本,執行在自己的伺服器上,獨立於其他分割槽,不同的玩家進入同乙個區域的不同副本(分割槽)。這樣的缺點時,不允許不同副本的玩家彼此進行互動。

3. darkstar架構就是克服以上缺點,支援隨時伸縮,同時又不要求遊戲邏輯受到伸縮影響。支援動態響應負載,而不是放在遊戲設計中完成。  

darkstar是由一組服務組成。每個服務定義為乙個小的程式設計介面。這些介面很像經典作業系統的服務,支援對服務端的訪問持久儲存、排程並執行任務、與遊戲的客戶端進行通訊。這些服務的程式不會受低層實現變更的影響,因為每個服務由乙個介面來描述。當介面不變時,乙個服務的變更,不會影響其他服務的實現。這是乙個"分治"的過程。另外,將基礎設施設計為一組服務,可以將這些服務在不同場景下進行不同的組合,更加靈活,復用性強。一組服務可以組成乙個darkstar棧,darkstar棧中具體包含哪些服務可以由乙個配置檔案來設定。

darkstar架構利用一些創新的方法解決了,伸縮性,延遲和通訊的要求,這種架構在之後是非常可以借鑑的。

架構之美閱讀筆記(三)

架構之美告訴我們什麼是架構,那什麼是架構呢?架構應該是一組結構,於一組設計規則,能減少複雜性。常見定義是,每種結構由各種型別的元件和關係組成,它們如何組合 相互呼叫 通訊 同步 及其其他互動,簡單來說就是元件及元件間的關係。其次我們要理解架構存在的目的,是確保利益相關人員的關注點能夠得到滿足,而在構...

《架構之美》閱讀筆記02

1.新 的定位 一開始就有系統結構清晰的總體檢視,所以,新的功能單元可以新增到正確的功能區域,而不是為了一時方便,隨意新增。這樣,有的時候開發者的工作會需要動寫腦筋,但是在系統維護和擴充套件時,就變得容易了 2.系統的一致性 頂層設計的良好風格和決定,為底層 好處,是統 一 整潔的。清晰的定義,確保...

《架構之美》閱讀筆記01

1丶架構是什麼 架構應該是一組結構,於一組設計規則,能減少複雜性。常見定義是,每種結構由各種型別的元件和關係組成,它們如何組合 相互呼叫 通訊 同步 及其其他互動。元件及元件之間的關係 2丶架構目的 確保利益相關人員的關注點能夠得到滿足,而在構想 計畫 構建和維護系統時,系統架構能夠處理複雜性。為了...