服务器集群中代理服的选取与迁移

服务器集群中代理服的选取与迁移

        在服务集群中,处于减小系统开销或者访问受限的情况, 某项功能可能需要在服务端集群中选择出一个代理来完成任务,那么就牵扯到代理服务器的选择,故障迁移, 数据传播等问题, 以下为游戏中直播数据请求功能的代理服务的样例。数据广播通过两级关播的方式, 代理服的初始选取通过统一的准则,代理服的迁移则通过当前代理服宣布代理失败或被代理服务器长期说不到数据进行代理权的迁移

        直播数据的请求简单的实现可以每个游戏服单独一个进程进行处理, 但是受到白名单和数据访问次数限时, 就不得不考虑所有游戏服都单独访问会超过平台令牌次数限制,以及游戏服扩展后白名的问题, 因此有必要使用代理服的结构。最好的方式就是在游戏服集群中选择出来一个作为代理服务器, 然后向其它游戏服的Friend 进程进行关播数据, 然后Friend进程再负责关播到各个游戏进程,结构如图所示:

        但是代理服存在的问题就是如果代理服挂了, 整个直播功能会失效, 或者代理服如果不在白名单等情况,同时代理服的选择也是一个问题,在具体的实现过程中通过选择游戏服中host_num最小的服作为代理服, 这个选举代理服的过程会定时的刷新, 以便代理服挂掉之后依然能够很快的选出新的代理服,那么一旦代理服选出后,其它服就会收到代理服的直播数据,但是存在代理服不再某些直播平台白名单的情况, 这时代理服发现自己不能成为代理, 就会广播给其它游戏服, 从可行代理服候选中选出hos_num 最小的, 继续作为代理服进行工作, 这样, 即便我们的代理服挂掉, 新的代理服也会很快的产生, 从而使得直播功能正常。


猜你喜欢

转载自blog.csdn.net/ybn6775/article/details/80865598