摘自: 多人在線游戲服務器構架
http://wenku.baidu.com/view/aac987eae009581b6bd9eb8a.html
MMORPG負載均衡機制
1.靜態分布玩家到服務器
平均分配玩家給每個Server,使每個Server有相同數量的玩家。這種方法的優點是算法簡單,但玩家在地圖上移動,因此過一段時間,最差的情 況下,Server之間可能有大量的網絡流量,因為當玩家在完成一個動作后,所有的Server必須獲得另一個Server的玩家數據,而其附近的玩家皆 在不同的Server上,如此依賴,每個玩家的一個動作需要傳送消息到不同的Server上,將造成communication的極大負擔。
利用空間切割的方式將虛擬世界切割成和Server同等數量的地圖片段,再將這些地圖片段分配給每一個Server負責,然后再有一個 Dispacher Server負責將每一個玩家分配到所對應的Server上去,但由于玩家會在地圖上移動,因此時間一久,在最差情況下,玩家可能都到同一個Server 的地圖片段上,這樣當初的負載平衡就完全被破壞了。
靜態分配地圖片段至每個Server雖然可以減少Server間網絡的頻寬和負載,但必須使玩家在正確的分布地圖上,玩家的位置是由玩家所操作的, 因此會發生不可預料的問題,為了克服這類問題,將地圖分切成更小的片段,然后動態的分配地圖片段至Server上是需要的。然而這種方法要有效率,其關鍵 在于如何切割地圖片段,要切成何種幾何形狀的,該切成多少片段?傳統的方法大都是切成正方形方塊,切割數根據實際情況或模擬后作適當的處理。
Powered by: C++博客 Copyright © 金慶