【问题标题】:Communication between Rails processesRails 进程之间的通信
【发布时间】:2013-02-25 16:14:59
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 2011-08-03
      相关资源
      最近更新 更多