zeromq - 路由器经销商模式的优势

时间:2016-08-26 10:15:12

标签: zeromq

有没有人可以提供一个使用zmq与路由器/经销商模式的真实示例,并解释它优于更简单的发布/订阅模式?感谢。

2 个答案:

答案 0 :(得分:7)

“真实世界”的例子:股市模拟

路由器套接字是服务器(或“市场”),经销商套接字是客户端(或“交易者”)。

  1. 交易员通过发送相关的“订单”来买卖订单 消息到市场。
  2. 市场立即回复“确认”消息
  3. 稍后当订单完成时,市场会发送 向所有相关交易者发出“订购完整”消息。
  4. 使用pub / sub实现这种行为非常麻烦,因为您需要Market和Traders来运行Publisher和订阅者套接字以允许双向通信。如果所有已完成的交易都是“已发布”而不是直接发送给相关交易商,那么也会存在隐私问题。 (交易员B不应该知道交易员A买入或卖出的东西)。

    什么使路由器套接字不同

    从路由器套接字发送和接收稍微复杂一点,以允许异步响应:

    1. 任何收到的消息在收到时都会在收到的消息前面加上一个标识框,这表示该消息来自哪个客户端。
    2. 删除任何已发送邮件的第一帧,并用于标识要将响应发送到哪个客户端。
    3. 'identity'是一个字符串,默认情况下将设置为每个连接客户端的唯一内容,但您可以通过套接字选项在客户端套接字上设置自定义标识。

答案 1 :(得分:0)

经销商随每封邮件一起发送其客户ID。路由器能够接受来自多个经销商的连接,并且每次接收到消息时,它都能够辨别哪个客户端发送了消息。它还可以通过参考特定客户端的ID向其发送消息。

现实生活中的示例:游戏服务器允许客户加入房间,直到房间满为止。它跟踪房间中的每个客户ID。房间满时,它将遍历该房间内的每个客户端ID,并向他们发送“游戏开始”消息。