背景
在遊戲登錄過程中,涉及分配玩家的服務器資源
同時,這個信息也會用於後續的某些路由
考慮到登錄過程的複雜性與一些切實的需求:
- 重複登錄
- 保持會話與服務資源的親和性問題
- 新舊會話創建與銷燬的併發問題
- 強行切換服務資源
- 服務節點失效,維持高可用性進行切換服務節點
- 如,某些硬性規定,接外部 SLB 系統,導致服務節點每次分配不一樣
- 路由緩存一致性
- 以上各種情況下,路由緩存的正確性問題
本人經過多次的實踐迭代,確定通過租約機制
可以解決分佈式過程中的服務資源分配及路由訪問問題
租約機制
租約機制是分佈式鎖中的一種解決方案,具備簡單兼具性能的優點
主要有以下特點:
- 沒有重互斥
- 不會鎖過程,只需原子續租操作
- 去中心化,壓力分攤
- 能保證緩存的正確性,從而租賃中心的壓力分攤
映射到遊戲應用中:
- 登錄 --> 新的租賃開始或續租上次
- 登出 --> 解除租賃關係(合理縮短續約時間)
- 路由 --> 單次行爲續租
- 本地緩存 --> 維持整個續租過程,本地備份路由信息