Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用tornado的分布式游戏服务器_C++_Python_Tornado_Game Engine_Gevent - Fatal编程技术网

C++ 使用tornado的分布式游戏服务器

C++ 使用tornado的分布式游戏服务器,c++,python,tornado,game-engine,gevent,C++,Python,Tornado,Game Engine,Gevent,我们正在开发一个有助于学习“无聊”材料的工具。最近,我们发布了1.0版本,其中包括以下模块: 基于Django的门户网站,用于学习课程、查看排行榜(评分)、个人活动和成就 基于Tornado的实时提要和通知服务。我们是被开发的。我们从共享会话中获益:若用户登录到django站点,他会自动用我们的Comet后端打开一个通道 基于龙卷风的异步多人游戏服务器。同样,我们也使用了连接和服务玩家(套接字),通过网络同步游戏循环事件 现在,我正在研究系统的可伸缩性和高可用性特性主要挑战是在游戏集群节点之间正

我们正在开发一个有助于学习“无聊”材料的工具。最近,我们发布了1.0版本,其中包括以下模块:

  • 基于Django的门户网站,用于学习课程、查看排行榜(评分)、个人活动和成就
  • 基于Tornado的实时提要和通知服务。我们是被开发的。我们从共享会话中获益:若用户登录到django站点,他会自动用我们的Comet后端打开一个通道
  • 基于龙卷风的异步多人游戏服务器。同样,我们也使用了连接和服务玩家(套接字),通过网络同步游戏循环事件
  • 现在,我正在研究系统的可伸缩性和高可用性特性主要挑战是在游戏集群节点之间正确且一致地分配负载(无数据丢失、崩溃时故障转移、其中一台游戏服务器(循环)突然崩溃时重新平衡)。主要目标是使客户端与游戏的交互尽可能无缝:客户端不应执行其他操作:如果游戏因服务器故障而崩溃,则手动重新连接描述了分布式游戏服务器的可能架构

    如果在Django站点上的…/游戏上执行某些操作(CRUD操作),则基于tornado的游戏路由器会通过一种oplog集合(mongodb中的封顶集合,由游戏路由器跟踪)实时通知。如果这是一个新游戏,游戏路由器将通过特殊算法(最快的心跳行程,或活动(活动)游戏的最小数量)确定游戏的下一个主机(游戏服务器)。此外,游戏路由器通过向主题交换发布消息来通知适当的循环

    如果任何游戏服务器崩溃,游戏路由器将立即得到通知,并通过在memcached集群中获取空闲游戏来重新平衡负载

    在失败的情况下,客户端如何无缝地重新连接到新的游戏服务器?我不想打开冗余通道(套接字连接)。 我是否走对了路?请给我一些好的方法,评论和技巧。如果你能通过画图表来分享你的想法,那就太好了


    提前谢谢。

    请阅读@Rustem和@mrjoes之间的对话,方法如下: