導語:一般的網站應用程序采用的模式是Request-Response,然后通過tcp和服務器建立一次鏈接,請求的數據是通過http協議進行重新組裝,服務器端和客戶端完成一次交互之后,就會釋放tcp鏈接,新的客戶端就可以使用服務器端的socket資源。web程序的擴展相對來說比價容易,在行業中,比較常用的方法是硬件負載均衡和添加web服務器。
網絡游戲就不一樣了,它比較突出的一點是客戶端和服務器端要進行比較長時間的連接,幾乎是不間斷的。游戲服務器的原理是Client主動給Server發送數據,Server也可能主動往Client發送數據,每次發送的數據比較少,但是頻率比較高,和常見的Request-Response模式不同。
因為需要長時間的連接,所以服務器端的socket是不能重復使用的,單臺服務器處理請求是會有限。也不太適合使用web的方案解決擴展問題,因為在web程序中,客戶端是沒有數據交互的,數據都是通過web服務器響應給客戶端的,但是游戲服務器中,每個客戶端的數據都在時刻的變化,這些都需要通過服務器端廣播給其他客戶端。所以客戶端會有上限,這也就是為什么服務器要進行分區,一個區里面同時在線人數會有限制。