玩家過萬時如何選擇游戲服務器
在大型游戲的應用過程中,實際需要處理的玩家數量可能過萬,一臺普通的游戲服務器是無法完成所要完成的工作,因此,在實際應用的時候,通常是由一組多臺游戲服務器共同完成一個功能。
例如地圖游戲服務器,可以根據需要,把游戲里所有的地域進行劃分,劃分為N個區域,然后讓這一個區域里發生的事件都用一個特定的游戲服務器進行處理。這樣做的目的是減少一個服務器所承擔的計算量,把整個系統組成一個分布式的網絡。
不過這樣做的同時會造成一個麻煩:當一位玩家從區域1,移動到區域2。這個時候,就必須先在服務器1里把玩家刪除,然后再在區域2里加入玩家。
同時需要由服務器1向服務器2轉移玩家的數據信息(因為服務器組在工作的時候,玩家的信息只能保存在當前所在區域的游戲服務器里),也就是說一旦玩家發生服務器間區域移動,服務器端就不可避免的造成數據通訊。因為這種移動并不是有規律的,玩家所在的服務器都有可能到達其它服務器。
這樣,如果服務器組里有N臺地圖服務器,那么,每個游戲服務器都可能向其它N-1臺服務器產生連接,總共就可能產生N×N個連接。如此數量連接如果只是使用普通的socket設計,就很有可能會給服務器通訊間的各種問題所困擾,為此,在商業網絡游戲的游戲服務器之間,通常都使用成熟的第三方的通訊中間件,如ACE,ICE等作為網絡連接的傳輸層。【艾娜小編】