View a markdown version of this page

多人游戏的大规模 Real-Time 消息 - 多人游戏的大规模 Real-Time 消息

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

多人游戏的大规模 Real-Time 消息

发布日期:2020 年 11 月 11 日 (图表历史)

该架构展示了如何为可扩展以支持数百万并发用户 (CCU) 的多人游戏提供实时消息。该解决方案使用亚马逊的多个Redis PubSub 集群 WebSockets 来 ElastiCache Redis提供横向可扩展性。

多人游戏的大规模 Real-Time 消息示意图

参考架构图显示了如何使用适用于Redis PubSub 集群的亚马逊 ElastiCache 为多人游戏提供实时消息,以及 WebSockets.

以下步骤描述了架构:

  1. 当实时消息服务器启动时,它会检查服务发现缓存(使用亚马逊 ElastiCache Redis)以获取可用Redis PubSub 实例列表。服务器在每个 PubSub 实例中订阅相同的主题。这种方法可以在多个 ElastiCache 集群之间分割流量,同时仍能到达正确的服务器。

  2. 客户端向服务发现 API 发送请求,以检索要连接的实时消息服务器。可用消息实例列表存储在服务发现缓存中。

  3. Service Discovery 缓存存储有关连接的终端节点的信息,包括客户端、实时消息传递实例以及每个消息传送实例可以接收的Redis PubSub 集群和主题。如果客户端断开连接,则此信息将从缓存中删除。

  4. 应用程序使用消息 API 向客户端传送消息。API 将消息发布到相应的主题,该主题会到达正确的实时消息服务器和游戏客户端。

  5. 消息 API 在其中一个Redis PubSub 实例中将消息发布到主题。由于每个实时消息服务器在每个 PubSub 实例中监听相同的主题,因此无论哪个 ElastiCache 集群接收消息,都会传送消息。

延伸阅读

有关更多信息,请参阅以下资源:

图表历史

要获得有关此参考架构图更新的通知,请订阅 RSS 提要。

变更说明日期

初次发布

参考架构图首次发布。

2020 年 11 月 11 日

注意

要订阅 RSS 更新,必须为正在使用的浏览器启用 RSS 插件。