因为上次删档封测测试存在统计CCU时出现不准确的情况,需要做负载均衡的优化:
每个类型的服务器可以多配置但是每个服务器在处理逻辑时是单线程的,但每个服务器就并行与Center交互的,不能由Proxy、AC、Logic在检测到玩家上线时将各自的CCU通知Center更新,因为当时大量玩家通过某个服务器涌入进来时CCU的更新消息还没到达Center的时候,Center在负载分配时则自然不再均衡,因为Center根据每个服务器的CCU来以及其他指标来分配最低CCU最优的服务器给玩家,而真实CCU都还没来的及更新过来就已来负载分配显然不合理。
0、由玩家从AC登陆时Center统一累加AC、Proxy、Logic的CCU,其中Proxy和Logic提前累加CCU(第2、3点会纠正可能出现的误差),该步骤解决了大量玩家正常流程同时涌入进来负载不均衡的问题。
1、每个AC和Proxy以及Logic在检测到玩家掉线时通知Center对各服务器的CCU减值
2、每30秒将CCU通过AC和Proxy将当前Session里真实的在线状态的人数告知Center覆盖当前的统计,以纠正负载误差(比如只连接上AC时将Proxy和Logic的CCU也加上去了但玩家因为网络信号特殊情况或者逻辑异常并未在接下来连接上Proxy和进入Logic)。
3、异地登陆时要将AC和Proxy中的所有旧的玩家的session断开(同时通知Center的CCU减减)。
本思路不局限于LegendServer拓扑架构且仅供本人笔记记录与参考。