游戲服務器架構中至關重要的服務:網關服務器

游戲服務器架構中至關重要的服務:網關服務器。
服務描述:即用于維持玩家客戶端的連接,將玩家發的游戲請求轉發到具體后端服務的服務器。
游戲服務器功能特性:
1. 對外開放:即客戶端需要知道網關的IP和端口,才能連接上來;
2. 統一入口:架構中可能存在很多后端服務,如果沒有一個統一入口,則客戶端需要知道每個后端服務的IP和端口。
3. 請求轉發:由于統一了入口,所以網關必須能將客戶端的請求轉發到準確的服務上。
4. 無感更新:由于玩家連接的是網關服務器,只要連接不斷;更新后端服務器對玩家來說是無感知的,或者感知很少(根據實現方式不同)。
一般情況下,有了以上4個特性,這個網關就可以用了。
但是如果只有上面4個特性,我們用Nginx做為網關也是可以的,為什么還需要自己做網關?
因為我們的游戲網關還需要具備以下特殊功能:
游戲服務器特殊功能:
1. Session認證:即能維護客戶端是否登錄成功的狀態,對于未登錄的請求,不予以轉發,從而預防惡意攻擊。
2. 流量限流:游戲經常會遇到DDOS攻擊,一個客戶端可以通過一個for循環一直給你發請求,所以必須進行限制。
3. 踢下線:游戲維護時,為了讓玩家能更新補丁,會將玩家踢下線,重新走一遍登錄流程,避免客戶端與服務端的數據不一致,造成顯示上的BUG。此外客服也需要經常對一些違規的玩家進行踢下線處理。
4. 在線統計:為什么網關來做在線統計呢?因為只有它有所有的玩家連接信息,所以可以輕松統計當前有多少玩家在線。
5. 協議加密:為了避免客戶端的惡意攻擊,我們需要將請求進行加密,由于統一了入口,所以網關來做非常容易。
6. 心跳檢測:用于檢測客戶端是否已經掉線,一般超過幾分鐘沒有收到心跳請求,則認為客戶端已經掉線,直接請求登錄數據,讓玩家重新走登錄流程。【艾娜】

