本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
多人游戏的大规模 Real-Time 消息
发布日期:2020 年 11 月 11 日 (图表历史)
该架构展示了如何为可扩展以支持数百万并发用户 (CCU) 的多人游戏提供实时消息。该解决方案使用亚马逊的多个Redis PubSub 集群 WebSockets 来 ElastiCache Redis提供横向可扩展性。
多人游戏的大规模 Real-Time 消息示意图
以下步骤描述了架构:
-
当实时消息服务器启动时,它会检查服务发现缓存(使用亚马逊 ElastiCache Redis)以获取可用Redis PubSub 实例列表。服务器在每个 PubSub 实例中订阅相同的主题。这种方法可以在多个 ElastiCache 集群之间分割流量,同时仍能到达正确的服务器。
-
客户端向服务发现 API 发送请求,以检索要连接的实时消息服务器。可用消息实例列表存储在服务发现缓存中。
-
Service Discovery 缓存存储有关连接的终端节点的信息,包括客户端、实时消息传递实例以及每个消息传送实例可以接收的Redis PubSub 集群和主题。如果客户端断开连接,则此信息将从缓存中删除。
-
应用程序使用消息 API 向客户端传送消息。API 将消息发布到相应的主题,该主题会到达正确的实时消息服务器和游戏客户端。
-
消息 API 在其中一个Redis PubSub 实例中将消息发布到主题。由于每个实时消息服务器在每个 PubSub 实例中监听相同的主题,因此无论哪个 ElastiCache 集群接收消息,都会传送消息。
延伸阅读
有关更多信息,请参阅以下资源:
图表历史
要获得有关此参考架构图更新的通知,请订阅 RSS 提要。
| 变更 | 说明 | 日期 |
|---|---|---|
初次发布 | 参考架构图首次发布。 | 2020 年 11 月 11 日 |
注意
要订阅 RSS 更新,必须为正在使用的浏览器启用 RSS 插件。