Linux   发布时间:2022-05-08  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用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资源和网络带宽不足.

>应用程序级别 – 您的应用程序逻辑接收应用程序数据包并相应地进
>服务级别 – 您的系统框架(某种类型的前端服务)接收数据包并通过模块执行路由(考虑自定义Apache模块,甚至是网络驱动程序模块 – 比如编写网络过滤器)
>内核级别 – 在网络数据包级别执行路由.

你越接近金属,你的反应就越好.我建议使用专用的linux服务器预先执行路由 – 去本机,而不是虚拟.为WAN使用多个或组合网络适配器,为每个端点使用专用适配器(每个连接的应用服务器一个,每个端口一个)

如果响应时间很重要,那么您需要一个内核/管理员状态解决方案,它将为您节省一些上下文切换,但要注意您需要不惜一切代价限制跳数,并且可以更好地由更少,更大的机器提供服务,并且您的可扩展性将始终如一有限.使用KTCPVS存在风险,它很老,没有主动更新.如果您判断它对您有用,那么只要它在系统状态下运行,就可以考虑写一些类似于网络过滤器的东西.

如果卷很重要但响应时间是次要的,那么实现一个内置在C中运行的问题/用户状态的自定义高速套接字交换机.它是最容易维护的,并且将提供最佳的可扩展性.

您需要构建一些原型来确定最适合您需求的原型.

最后的想法 –

在执行上述任何操作之前,请先确保您已优化游戏设计.你可能知道大部分内容,我在这里列出它是为了所有人的利益.

(a)消息应舒适地放在一个网络数据包中,对于大多数家用路由器来说,小于1500字节

(b)尝试在您的游戏客户端而不是服务器中使用路由逻辑.只需将一个带有区域和IP地址的小表下载到客户端,就可以放弃以上所有内容.

(c)尝试将区域可见性限制为客户,他们应该只知道他们的区域和相邻区域(如果您实施上面的点b)

希望这会有所帮助,抱歉,对于KTCPVS,我不能更具体.

大佬总结

以上是大佬教程为你收集整理的使用Linux Virtual Server在MMO游戏中对区域进行负载均衡全部内容,希望文章能够帮你解决使用Linux Virtual Server在MMO游戏中对区域进行负载均衡所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: