hazelcast的性能是否足以进行实时游戏?

pcww981p  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(368)

我有这样一个概念:将游戏引擎重写为可伸缩的微服务集合。
这是目前的概念证明,但主要原则在于每个玩家都有一个单独的容器来控制和管理他们的会话/连接,因此容器将根据连接用户的数量进行上下扩展。
每个播放器容器将与多个其他微服务对话以收集数据并执行操作,这些服务将是2或3的静态副本。
有一个微型服务,我在脑海中,我觉得是有点瓶颈,我目前正在寻找方法,使更多的'可扩展性'和'健壮'。
这个有问题的微服务是gamemap服务。将会有多个游戏Map服务(每个uniqe或示例游戏Map至少有一个服务)。每个贴图将包含n个单元格,每个单元格可以包含具有不同类型/状态的对象(例如,其他playerobjects、itemobjects)
我想能够有一个副本,至少2为每个游戏Map立即翻转,如果一个是由于某种原因失败和关闭。。对于用户来说,在失败和故障转移游戏Map之间实现无缝过渡非常重要。为了实现这一点,我需要在他们之间共享一致/最新的状态。
需要能够在两个复制副本之间实现负载平衡,这是一个不错的选择,但不是必需的。
到目前为止,我提出的一个可能的解决方案是hazelcast。这将允许我在可伸缩内存数据网格中保持每个map单元的状态(同样是为了健壮性和可伸缩性)。
我预计,在一个游戏Map中,每秒钟可能会有多达100次的状态变化,我担心的是,这可能太慢,导致用户之间的巨大延迟。
有人根据这两个场景或者更重要的是hazelcast的用例得到任何提示、建议或反馈吗?
p、 如果有帮助或者有人感兴趣的话,我可以在某个时候上传我的游戏引擎非常粗糙的连接/架构图作为微服务。

9ceoxa92

9ceoxa921#

这取决于你的要求,环境等。
尤其是如果您想成为ha,您可能希望复制到不同的可用性区域或潜在的不同区域,并且您将受到光速的限制(或者需要接受数据丢失的可能性)。换句话说就是这样;性能主要由基础结构决定。
只是给你一些大概的数字;对于同一低延迟组中的机器之间的ec上c5.9xlarge示例的简单读取,您将看到100/200us。每个示例运行几十万次get秒通常不是问题。
换句话说;很难说这是不是正确的方法。根据您的情况以及这一点的重要性,我将从您的整个系统中选取一部分,并制定一些基准测试,以了解它的性能和可扩展性。
但当我看到微服务与“实时”和“游戏引擎”的结合时,我的警钟就响了。

相关问题