1. 程式人生 > >雲風的 BLOG: 伺服器排隊系統的一點想法

雲風的 BLOG: 伺服器排隊系統的一點想法

遊戲系統需要估計自己的環境大約可以支援一定時間段多少人可以進入。這個用來估算每個新使用者的大致等待時間。

遊戲系統採用一個以時間為演算因子的序列 key ,用來做進入的驗證。只有持有這個 key 的使用者才認為是經過排隊的。允許進入。

排隊伺服器獨立安置,當用戶直接連線遊戲伺服器遇到擁堵時,伺服器簡單記錄他的使用者名稱,和等待鑑權的口令,然後讓其去排隊伺服器排隊。如果使用者再次連線上來而沒有經過排隊。因為有使用者名稱記錄,所以可以在帳戶資訊裡做記錄。之後的處理就比較簡單了。

使用者的這個流程(先嚐試遊戲伺服器,再被轉到排隊伺服器,並不可以二次嘗試),這個過程由使用者 Client 保證。使用者不修改 Client 是不會違規的。遊戲伺服器只是記錄那些用異常手法插隊的使用者。

在排隊伺服器,首先向第一次進來的使用者發放序號,以及通知大約等待時間。並記錄使用者的使用者名稱,以及一個等待鑑權的口令。使用者則可以離線,由 Client 等待指定時間再上來排隊。為何要提交鑑權口令?因為要防止有人惡意冒充插隊。當排隊伺服器檢測到使用者不守規定不在規定等待時間內重複嘗試,則回頭鑑定使用者是否的確是本人,而後再決定在其帳號裡做違規記錄。

等待使用者快排到了,則可以向排隊伺服器保持長連線,直到排隊伺服器發放進入遊戲伺服器的口令。他就可以離開隊伍,前去遊戲了。

這樣做這個系統,可以讓排隊系統和遊戲足夠分離。便於開發。不受遊戲伺服器的構架變換影響,也更容易部署。