大綱
全區全服架構是通過一組相同的遊戲邏輯程序提供對外服務。客戶端通過負載均衡策略如tgw接入後台 任一遊戲邏輯程序, 對於玩家而言,這一過程是透明的,玩家並不會感覺到這次連線和上次連線的程序有什麼不同,所有的玩家相當於在同乙個大區裡面進行遊戲。另外,玩家自身其實並不關心自己在哪台伺服器上。
全區全服的特點主要有:承載能力強,資源利用率高,擴容方便,容災能力強,運營維護方便。
pk系統
pk系統主要分為兩種:好友pk和世界pk。pk傾向於一種友好比賽的性質,好友pk通過選擇乙個好友,而世界pk則是通過系統匹配乙個合適的對手。然後雙方同時進入遊戲,最後根據比賽的結果來決定勝負。
世界pk匹配系統的設計
常規pk匹配系統的設計方案
在這個方案中需要設計乙個專門用於pk的伺服器,所有pk操作通過遊戲邏輯程序到pk伺服器進行操作。
常規pk匹配系統設計方案的缺點
分布式pk系統設計方案
事件pk報名資料是直接儲存在遊戲邏輯程序內的,這一點和傳統方式是不同的。
世界pk的匹配演算法是分布執行在邏輯程序和pk伺服器上的。
pk伺服器除了執行匹配演算法之外沒有其它任何的邏輯。而和pk相關的其它邏輯都在遊戲程序之內完成。
pk伺服器不儲存資料,所以也沒有狀態。
遊戲邏輯程序對於pk伺服器是沒有依賴性的,所以對於故障也不敏感。
分布式世界pk的匹配演算法
分布式世界pk的匹配演算法
匹配演算法分為兩個部分,分別執行在遊戲邏輯程序和pk伺服器程序內,執行在遊戲邏輯程序內的演算法部分,執行乙個本地對於報名資料的快速匹配,這一過程會短路掉大部分的pk請求。而執行在pk伺服器內的演算法會定期向各個遊戲程序請求報名資料。根據特定的篩選規則,遊戲邏輯程序間會將暫時沒有匹配成功的資料篩選一部分上傳到pk伺服器。在pk伺服器搜尋這些資料之後會執行乙個相同的匹配演算法,並且將結果返回給遊戲邏輯程序。而其後所有的操作都會在遊戲邏輯程序內部進行。仔細思考會發現,這個匹配演算法是一種二級執行,第一級是遊戲邏輯程序內的匹配,在第一級匹配隨著參與人數的增長,第一級匹配效率會越來越高,所以到了第二級匹配的人數會比較固定,不會隨著負載的增加而增加。
另乙個特點是pk伺服器提供的時候一種主動式的服務,因此遊戲邏輯程序對它是沒有依賴性的,而pk伺服器本身也不儲存資料和狀態,所以它對故障是不敏感的。即使出現了故障之後也很容易恢復。
週期本地匹配和雲端匹配關係對比
上圖橫座標是參與pk人數的增長,縱座標是pk伺服器上匹配的資料。隨著參與pk人數的增加,pk伺服器內進行匹配的人不會一直增加,會趨向於乙個恆定的值。
分布式pk系統的特點
分布式環境下的解決方案 分布式鎖
分布式鎖,也就是在多程序情況下的鎖。需要有儲存鎖的空間,並且鎖的空間是可以訪問到的。鎖需要被唯一標識。鎖要有至少兩種狀態。儲存空間 鎖是乙個抽象的概念,鎖的實現,需要依存於乙個可以儲存鎖的空間。在多執行緒中是記憶體,在多程序中是記憶體或者磁碟。更重要的是,這個空間是可以被訪問到的。多執行緒中,不同的...
分布式事務解決方案
一 結合mq訊息中介軟體實現的可靠訊息最終一致性 二 tcc補償性事務解決 三 最大努力通知型方案 第一種方案 可靠訊息最終一致性,需要業務系統結合mq訊息中介軟體實現,在實現過程中需要保證訊息的成功傳送及成功消費。即需要通過業務系統控制mq的訊息狀態 第二種方案 tcc補償性,分為三個階段tryi...
分布式事務解決方案
當資料庫單錶一年產生的資料超過1000w,那麼就要考慮分庫分表,具體分庫分表的原理在此不做解釋,以後有空詳細說,簡單的說就是原來的乙個資料庫變成了多個資料庫。這時候,如果乙個操作既訪問01庫,又訪問02庫,而且要保證資料的一致性,那麼就要用到分布式事務。所謂的soa化,就是業務的服務化。比如原來單機...