在 D21 到 D24 這幾天,老實說我們做的更像是 RPG 而不是 MMORPG。因為我們還一直沒有考慮到這些問題
如果依照一般 web 應用的三層式架構模式,在每一個事件發生當下,都馬上變更資料庫狀態並且給予回應,可以預想會產生災難性的後果...
因為同一個地圖、多個使用者的互動事件可能一秒就有上千上萬個,假設平均一秒來10000個請求,伺服器卻每秒卻只能處理5000個請求,就會造成嚴重的壅塞問題。
有時候即使像上圖一樣在整體系統架構上做調整,成效仍然有限,這是因為當許多事件很依賴同一個資料庫物件時,還是會無可避免的把傳輸延遲疊加起來,因此有些遊戲伺服器會有定時器機制來對效能做優化。用我們前面的地圖當例子,大概會是這樣子的
每一段時間,把許多事件匯總起來一起處理,處理完後一起對資料庫更新,並統一回應給客戶端,這樣就大幅降低成本最高的傳輸以及資料操作的延遲,並且能更充分的發揮伺服器計算效能,接下來預計會用RxJS來模擬以上的事件處理方式。