【发布时间】:2020-02-25 22:14:23
【问题描述】:
我正在阅读 ZeroMQ Guide 并看到以下关于 ROUTER 套接字和身份的段落:
使用
ROUTER套接字与特定对等方通信的应用程序可以 将逻辑地址转换为标识,如果它已经建立了必要的 哈希表。因为ROUTER套接字只宣布一个 连接(到特定的对等方) 当该对等方发送消息时,您 只能真正回复消息,不能自发与同伴交谈。即使您翻转规则并使
ROUTER连接到 而不是等待对等方连接到ROUTER。 但是,您可以强制ROUTER套接字在 其身份的地方。zmq_setsockopt参考页面称此为 设置套接字标识。
根据这段话,“你只能真正回复消息,不能自发与同伴交谈”,意思是ROUTER不能发送向特定的DEALER 发送消息,但下一句暗示您可以强制路由器套接字使用逻辑地址:“但是您可以强制使用ROUTER 套接字一个逻辑地址代替其身份”。这部分让我感到困惑,因为他们刚刚说你不能自发地从路由器向经销商发送消息,但现在他们声称你可以。如果您按照this 链接到该指南,您会看到在这篇文章之后,他们说“它的工作原理如下”,但他们给出的步骤似乎并没有弄清楚如何从@ 发送自发消息987654335@ 到特定的DEALER 并将响应返回到原始ROUTER。
我的问题:单个ROUTER 套接字是否可以向特定的DEALER(多个)套接字发送请求,而DEALER 发送请求的结果回到ROUTER?如果可能的话,如何做到这一点?
后续问题:如果这是不可能的,是否有更好的套接字组合来解决这个问题?
下面是我的预期设计的粗略图:
基本上,客户端向 1 个特定服务器发送请求,该服务器处理请求并将请求结果返回给客户端。客户端现在有了这个结果,它知道它是在哪个服务器上处理的。
【问题讨论】:
标签: sockets zeromq distributed-computing distributed-system low-latency