咨询邮箱 咨询邮箱:1947790376@qq.com 咨询热线 咨询热线:0371-56752222 微博 微信
游戏服务器中寻址对象和缩放的方法
发表日期:2017-09-14    来源:帝通科技http://www.9dm.cn    浏览次数:
 
寻址对象
 
游戏对象通过异步事件交互。这通常允许高  并发性。它还确保游戏对象一致地进行交互,无论它们处于相同的进程还是在不同的进程中。当不同进程中的对象进行交互时,这些事件将通过游戏服务器间消息传递到相应的服务器进程,从而将它们分派到目标游戏对象。
 
该游戏必须提供一种设备,用于在服务器集群中定位对象并将路由事件发送给它们。实施细节有所不同,但请考虑以下几点:
 
使用  逻辑地址  来定位游戏服务器代码中的游戏对象。该  逻辑地址应包括目标对象的ID。它不应该包含任何物理主机或路由信息。它可能包含有关 包含目标游戏对象的服务器类型的信息  。有效方案的一个例子可能是<server_type> :: <object_id>,但是方案<host_address>:<port> :: <object_id>将无效。
定义服务器类型以充当游戏对象实例的注册表或目录。该服务器应将游戏对象的逻辑地址映射  到其  物理地址。将对象分配给服务器进程实例并定位它们的权限。
使用  一致的散列,  分布式哈希表(DHT)或某种组合来将游戏对象分配给服务器进程实例。一致的散列很容易实现,快速和确定性。但是,它容易出现“热点”,并且不允许在运行时重新分配ID。动态哈希表更灵活,但更复杂。它们允许在运行时重新定位游戏对象,并支持更强大的故障恢复。 1)
考虑在每个服务器进程中本地缓存游戏对象地址和映射,以减少到目录服务器的往返。当游戏对象在创建后不会在进程之间移动时,这一点尤为重要。
游戏服务器寻址
缩放
 
这种模式的主要优点之一是它支持高效地扩展游戏群集。这通常意味着  水平而不是  垂直缩放。具体来说,此模式支持添加一个或多个服务器类型的新进程实例来处理增加的负载。增加负载的理想情况来自于增加更多玩家,但也可能来自增加需要更多处理能力的游戏功能。此图案处理任一种情况。额外的进程根据需要在新的或现有的硬件或虚拟节点上运行。
 
理想情况下,每个服务器类型的进程实例的数量与其他服务器类型的数量不同。这允许您将计算资源分配给需要游戏的部分。实现此目标的关键是确定适当的服务器类型及其职责。
 
缩放集群意味着管理集群成员资格或集群中运行的一组进程。静态集群成员资格  要求手动添加或删除集群成员。 根据负载指标和启发式方式,动态集群成员 自动缩放。
 
静态集群成员资格是最简单的实现和理解。它需要维护集群中的所有流程实例和运行它们的节点的清单。最简单的方法是将所有运行时工件部署到所有节点,并使用清单来控制哪些服务器在每个节点上运行。这种方法的缺点是通过重新分配服务器类型的实例或节点来重新配置集群通常需要服务中断。此外,当机器发生故障时,它不是容错的,因为更换节点意味着更新清单的所有副本。
 
动态集群成员 提供更多的灵活性和效率来应对变化的负载。但是,它要复杂得多,需要专门的逻辑。甲  动态群集成员系统监控集群添加或根据需要除去处理实例或机节点的性能和健康。该系统必须了解集群的不同服务器类型,其性能特征及其处理要求。
 游戏服务器缩放
一个简单的方法是使用中央权威服务器和数据存储。但是,这会创建一个单一故障点,从而破坏了动态集群管理的目的。两种普遍接受的方法包括使用  八卦协议 或  基于共识的解决方案。2)3)这些分布式解决方案包括强大的故障处理和动态缩放的设施。
 
应用此模式时,您应该考虑以下几点:
 
首先通过实施手动方法。几乎所有你从中学到的东西,以及你实现的大部分内容,如果您以后决定采用动态解决方案,仍然适用。
如果您使用手动配置方法,一定要建立自动化系统来部署和应用更改。足够的工具和自动化可以大大减少由于集群重新配置而导致的服务中断长度。
无论您是手动还是自动,请考虑使用  actor模型  来实现游戏服务器。首先,它是游戏对象  抽象的自然契合。第二,这是开发人员以最小的复杂性获得并发支持的好方法。最后,存在包含对动态集群成员资格的支持的第三方actor框架。一些例子包括微软的项目奥尔良 4)(.Net),  Akka 5)(Java / Scala)和  Akka.NET  6)
如果您决定采用自动化方法,请考虑使用云提供商托管游戏。这可能会更具成本效益,因为您只需要为您使用的资源付费。此外,云托管通常带有广泛的自动化支持,您可以利用它来获得更好的动态功能。


本文链接:http://www.9dm.cn/industry/178.html转载请注明。
标签:游戏服务器,游戏服务器托管,服务器托管公司


上一篇:游戏服务器分布式网络连接的好处 下一篇:自己拥有一台游戏服务器的好处