2013-02-21 60 views
1

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

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

enter image description here

回答

1

在这种情况下,你应该建立独立的WebSocket服务器和用户和Rails的服务器连接到它。这样你就可以处理来自一台服务器的所有用户而不用担心分片。

在高流量情况下,您还可以设置多个WebSocket服务器,并在它们之间实现某种类型的队列或消息总线,以传播新消息 - 例如仅处理传播消息的主服务器和将连接的从属服务器并将所有来自用户的消息发送给它。请注意,在这种配置中,主服务器不应处理来自用户和服务器的连接,仅用于在从属之间传播消息。最后,直接回答你的最后一个问题,通常不需要直接在Rails服务器之间联系 - 与WebSocket服务器相反,它们是基于请求响应服务的,所以在大多数情况下通过数据库交换信息就足够了。如果你真的需要立即改变,那么像AMQP这样的解决方案应该有所帮助。