架构之美读书笔记03
1. 系統(tǒng)的伸縮性需求。如大型在線游戲,需要滿足大量用戶。在線用戶數(shù)量短時間內(nèi)可能有很大的變化。
這其中隱含的需求是:
多用戶并行分布式系統(tǒng),系統(tǒng)運行在多臺機器上
高可擴展性(用于加入新的故事情節(jié),意味著新的代碼)
高穩(wěn)定性、可靠性(一個用戶崩潰,不影響其他用戶)
數(shù)據(jù)一致性(多個用戶看到同一個東西的狀態(tài)應(yīng)該是一樣的)?
2. 架構(gòu)設(shè)計目標
即另外一個需求,對其他開發(fā)者部署出一個簡單的編程模型,程序員可以將系統(tǒng)視為一個單機開發(fā)環(huán)境。
隱藏分布式和并發(fā)是一件困難的事。需要一種嚴格限制的編程模型。?
典型的游戲服務(wù)器開發(fā)模型:反應(yīng)式
客戶端(游戲機)(生成事件) - 服務(wù)端的事件監(jiān)聽器(監(jiān)聽事件,并生成任務(wù)) - 此任務(wù)可與多個客戶端進行交互
或者是服務(wù)端自己周期性生成任務(wù)。
這是一種典型的胖客戶端機制,適用于游戲和虛擬世界,也適用于J2EE和Web服務(wù)的應(yīng)用。?
區(qū)別另外一種經(jīng)典的企業(yè)級架構(gòu):
瘦客戶端 - 胖客戶端 - 更胖的數(shù)據(jù)庫服務(wù)器。服務(wù)器保存客戶端的絕大部分信息,絕大多數(shù)真正的工作在服務(wù)器上完成。?
在游戲的軟件架構(gòu)中。不被修改的數(shù)據(jù)都被放在客戶端完成,只有共享的數(shù)據(jù)才放在服務(wù)器,服務(wù)器盡量保持簡單,減少計算。保持共享事實的最終來源,防止玩家作弊。客戶端只訪問少量的狀態(tài)數(shù)據(jù),但訪問的數(shù)據(jù)大部分會被改寫。?
而另外一種架構(gòu)是90%的數(shù)據(jù)都是只讀的,大多數(shù)任務(wù)會讀取大量數(shù)據(jù),再修改少量數(shù)據(jù)。?
3. 延遲的需求
游戲架構(gòu)要求用戶體驗好,大的延遲不被接受,甚至犧牲吞吐量換取少的延遲。
而企業(yè)環(huán)境的架構(gòu)重在吞吐量,管理業(yè)務(wù)。有一點延遲可以接受。?
一般情況下,處理擁塞的解決方案:
1. 基于地理位置來實現(xiàn)。游戲設(shè)計包含不同的游戲區(qū)域,每個虛擬區(qū)域運行一臺服務(wù)器,每個區(qū)域擁有自我限制功能,當人數(shù)過多時,服務(wù)擁塞,游戲變慢,趣味性下降,用戶就轉(zhuǎn)向更有趣的區(qū)域,響應(yīng)時間就會得到改進。(對于棋牌類游戲,每個房間或區(qū)域有人數(shù)限制,滿的房間可以限制進入)
這種開發(fā)方法的問題:游戲設(shè)計時,需要決定哪些區(qū)域放在一臺服務(wù)器上,而添加新的區(qū)域時比較容易,若改動原來的區(qū)域,可能需要改動代碼,這些都是開發(fā)的工作量。?
2. 分區(qū)sharding。一個分區(qū)是一個區(qū)域的副本,運行在自己的服務(wù)器上,獨立于其他分區(qū),不同的玩家進入同一個區(qū)域的不同副本(分區(qū))。這樣的缺點時,不允許不同副本的玩家彼此進行交互。?
3.?Darkstar架構(gòu)就是克服以上缺點,支持隨時伸縮,同時又不要求游戲邏輯受到伸縮影響。支持動態(tài)響應(yīng)負載,而不是放在游戲設(shè)計中完成。?
Darkstar的架構(gòu)
DarkStar是由一組服務(wù)組成。每個服務(wù)定義為一個小的編程接口。這些接口很像經(jīng)典操作系統(tǒng)的服務(wù),支持對服務(wù)端的訪問持久存儲、調(diào)度并執(zhí)行任務(wù)、與游戲的客戶端進行通信。
這些服務(wù)的程序不會受低層實現(xiàn)變更的影響,因為每個服務(wù)由一個接口來描述。當接口不變時,一個服務(wù)的變更,不會影響其他服務(wù)的實現(xiàn)。這是一個"分治"的過程。
另外,將基礎(chǔ)設(shè)施設(shè)計為一組服務(wù),可以將這些服務(wù)在不同場景下進行不同的組合,更加靈活,復(fù)用性強。一組服務(wù)可以組成一個Darkstar棧,Darkstar棧中具體包含哪些服務(wù)可以由一個配置文件來設(shè)置。?
Darkstar的介紹還是比較通俗易懂的,本以為能很快看完,但是發(fā)現(xiàn)里面的信息量還很大的,需要比較細致的思考。不管這個項目最終結(jié)果如何,它提供了一種思路,將基礎(chǔ)設(shè)施和上層應(yīng)用邏輯分來,很有參考價值。
轉(zhuǎn)載于:https://www.cnblogs.com/liying123/p/6415836.html
總結(jié)
以上是生活随笔為你收集整理的架构之美读书笔记03的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS6.8 安装/升级Pytho
- 下一篇: salt常用命令(一)