Rails进程之间的通信

时间:2013-02-21 02:36:05

标签: ruby-on-rails ruby-on-rails-3 nginx websocket

考虑使用Nginx构建的tic-tac-toe游戏作为反向代理并具有多个Rails后端。每个客户端都设置一个带有一些Rails后端的websocket连接。如果玩游戏的两个客户端都连接到不同的Rails后端,那么发送到一个后端的移动需要被路由到另一个后端,因此可以将其推送到另一个websocket上,如下图所示。

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

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

最后,直接回答你的上一个问题,通常没有必要直接联系Rails服务器 - 与他们在请求 - 响应基础上服务的WebSocket服务器相反,因此在大多数情况下通过数据库交换信息就足够了。如果你真的需要立即改变,那么像AMQP这样的解决方案应该有所帮助。