【问题标题】:ZeroMQ REQ/REP the other way roundZeroMQ REQ/REP 反过来
【发布时间】:2013-11-26 15:46:30
【问题描述】:

我有一个奇怪的场景:

Webserver / Appserver (Java) 将请求发送到许多不同的卫星系统(在客户站点上)。由于防火墙规则,只有卫星系统可以发起连接。

我认为模型应该类似于 REQ/REP,但是这里 REQuester 必须绑定,REPlyer 必须连接。

这是可能的并且是一个稳定的架构吗?

有更好的解决方案吗? (我们首先想到的是 WebSockets...)

备注:我们不必在两端都使用 Java。确切地说,在客户网站上,我们有 Delphi,但我们可以通过某种方式将其连接起来。

【问题讨论】:

    标签: network-programming websocket zeromq


    【解决方案1】:

    我认为模型应该类似于 REQ/REP,但这里的 REQuester 必须绑定,REPlyer 必须连接。

    这将是有问题的。当服务器启动连接时,它必须知道所有对等方及其绑定地址。对于少数同行来说没什么大不了的,但对于许多不断变化的同行来说,这就是一团糟。

    由于防火墙规则,只有卫星系统可以发起连接。

    如果是这种情况,您的里程将因 WebSockets 而异; google一下,有很多这方面的信息。

    有更好的解决方案吗?

    嗯,对于 ZeroMq,想到的支持客户端请求发起的一种解决方案是:

    • 服务器绑定ROUTER
    • 客户端通过DEALER连接。

    此方法提供双向请求/回复,不会阻塞(异步),并消除了您问题中提到的客户端绑定问题。在这里,服务器绑定,任何一方都可以发起对话。

    我建议阅读指南中的 section,它涵盖了扩展的异步请求/回复和消息封装,这在使用 ROUTER/DEALER 套接字时很重要。

    【讨论】:

      猜你喜欢
      • 2016-11-17
      • 2014-01-03
      • 2020-07-17
      • 2013-06-07
      • 2014-10-11
      • 2017-02-13
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      相关资源
      最近更新 更多