背景
在游戏登录过程中,涉及分配玩家的服务器资源
同时,这个信息也会用于后续的某些路由
考虑到登录过程的复杂性与一些切实的需求:
- 重复登录
- 保持会话与服务资源的亲和性问题
- 新旧会话创建与销毁的并发问题
- 强行切换服务资源
- 服务节点失效,维持高可用性进行切换服务节点
- 如,某些硬性规定,接外部 SLB 系统,导致服务节点每次分配不一样
- 路由缓存一致性
- 以上各种情况下,路由缓存的正确性问题
本人经过多次的实践迭代,确定通过租约机制
可以解决分布式过程中的服务资源分配及路由访问问题
租约机制
租约机制是分布式锁中的一种解决方案,具备简单兼具性能的优点
主要有以下特点:
- 没有重互斥
- 不会锁过程,只需原子续租操作
- 去中心化,压力分摊
- 能保证缓存的正确性,从而租赁中心的压力分摊
映射到游戏应用中:
- 登录 --> 新的租赁开始或续租上次
- 登出 --> 解除租赁关系(合理缩短续约时间)
- 路由 --> 单次行为续租
- 本地缓存 --> 维持整个续租过程,本地备份路由信息