使用Linux Virtual Server在MMO游戏中对区域进行负载均衡
我是一个MMO游戏的开发者,目前我们在我的公司面临一些可扩展性问题,我认为这些问题可以通过正确的游戏世界聚类来解决.
我真的不想重新发明轮子,这就是为什么我认为Linux Virtual Server可能是一个不错的选择,特别是使用一些7级负载平衡技术. 我目前正在将ktcpvs作为负载平衡解决方案,并想知道它是否是一个合适的选择. 主要思想是在专用服务器上运行多个区域(就我的游戏而言“位置”).当玩家决定前往某个特定位置时,负载均衡器会决定哪个区域服务器将实际为玩家提供服务(这实际上是我需要7级负载均衡器的原因) 你们对上述所有人都有什么看法? 更新:我向LVS用户邮件列表http://marc.info/?l=linux-virtual-server&m=124976265209769&w=2发布了同样的问题 更新:我也在gamedev.net论坛http://www.gamedev.net/community/forums/topic.asp?topic_id=544386上开始了类似的话题 解决方法
为了解决您的问题,我们需要了解您是否需要音量或响应,但很难同时获得两者.
第7层负载均衡 – 基于数据的应用程序级别平衡,因此需要将网络数据包的数据内容路由到端点.您可以通过在应用程序级别,服务级别或内核级别实现路由来实现卷(更多用户). 可伸缩性 – 我假设您的内存,CPU资源和网络带宽不足. >应用程序级别 – 您的应用程序逻辑接收应用程序数据包并相应地进 你越接近金属,你的反应就越好.我建议使用专用的linux服务器预先执行路由 – 去本机,而不是虚拟.为WAN使用多个或组合网络适配器,为每个端点使用专用适配器(每个连接的应用服务器一个,每个端口一个) 如果响应时间很重要,那么您需要一个内核/管理员状态解决方案,它将为您节省一些上下文切换,但要注意您需要不惜一切代价限制跳数,并且可以更好地由更少,更大的机器提供服务,并且您的可扩展性将始终如一有限.使用KTCPVS存在风险,它很老,没有主动更新.如果您判断它对您有用,那么只要它在系统状态下运行,就可以考虑写一些类似于网络过滤器的东西. 如果卷很重要但响应时间是次要的,那么实现一个内置在C中运行的问题/用户状态的自定义高速套接字交换机.它是最容易维护的,并且将提供最佳的可扩展性. 您需要构建一些原型来确定最适合您需求的原型. 最后的想法 – 在执行上述任何操作之前,请先确保您已优化游戏设计.你可能知道大部分内容,我在这里列出它是为了所有人的利益. (a)消息应舒适地放在一个网络数据包中,对于大多数家用路由器来说,小于1500字节 (b)尝试在您的游戏客户端而不是服务器中使用路由逻辑.只需将一个带有区域和IP地址的小表下载到客户端,就可以放弃以上所有内容. (c)尝试将区域可见性限制为客户,他们应该只知道他们的区域和相邻区域(如果您实施上面的点b) 希望这会有所帮助,抱歉,对于KTCPVS,我不能更具体. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |