1

考虑使用 Nginx 作为反向代理并具有多个 Rails 后端构建的井字游戏。每个客户端都与一些 Rails 后端建立一个 websocket 连接。如果玩游戏的两个客户端都连接到不同的 Rails 后端,则发送到一个后端的移动需要路由到另一个后端,以便可以将其推送到另一个 websocket,如下图所示。

在 Rails 中,两个 Rails 后端之间通信的惯用方式是什么?

在此处输入图像描述

4

1 回答 1

1

在这种情况下,您应该设置单独的 WebSocket 服务器并将用户和 Rails 服务器连接到它。这样,您将能够处理来自一台服务器的所有用户,而无需担心分片。

在高流量的情况下,您还可以设置多个 WebSocket 服务器并在它们之间实现某种队列或消息总线来传播新消息 - 例如,主服务器将只处理传播消息,从服务器将连接到它并发送从用户那里收到的所有消息。请注意,在这样的配置中,主服务器不应处理来自用户和服务器的连接,仅用于在从属之间传播消息。

最后,直接回答您的最后一个问题,通常不需要在 Rails 服务器之间直接联系 - 与 WebSocket 服务器相反,它们基于请求-响应提供服务,因此在大多数情况下通过数据库交换信息就足够了。如果您确实需要立即进行更改,那么AMQP 之类的解决方案应该会有所帮助。

于 2013-02-25T08:14:59.940 回答