【问题标题】:Heartbeat in Harmony pattern with ZeroMQ使用 ZeroMQ 的 Harmony 模式中的心跳
【发布时间】:2014-07-07 23:05:02
【问题描述】:

我读过一篇关于 ZeroMQ 的 Harmony 模式的好文章

这里供参考http://randalh.blogspot.ie/2012/12/zeromq-true-peer-connectivity-harmony.html

它建议将 DEALER 套接字用于传出数据,将 ROUTER 用于传入数据。

我正在考虑使用此模式,但在实施此模式之前,我还不太清楚一件事。这就是心跳应该如何正确完成。

假设我是通过 DEALER 进行的。如果经销商认为没有另一端连接(通过任何内部检查),如果我正确理解语义,我的 ping 消息会卡住并发送应该阻止。我是否应该尝试切换到非阻塞模式而不重新发送 ping,除非一个已经挂起?

如果我应该通过 ROUTER 进行,那么如何通过我的 DEALER 连接来控制连接?

附:感觉就像我正在重新实现 ZeroMQ 已经可用的东西,例如一些连接检查。我可以重复使用吗?

【问题讨论】:

    标签: zeromq


    【解决方案1】:

    心跳让您的应用程序知道连接是否成功,因为 ZMQ 知道哪些套接字已连接或未连接是不可靠的(因此,您甚至无法获得)。

    至于怎么做,这取决于你的具体情况。一般来说,如果你因为对等方断开连接而获得 ping 排队并不重要,所以我会说继续发送它们。您使用阻塞还是非阻塞取决于您的应用程序和您的语言。但是你可能想从两边心跳,只要你控制两边,所以从 DEALER 和 ROUTER 都 ping。

    【讨论】:

    • 我感觉很不对劲,一旦我发送了消息并没有得到服务器的响应,我不知道它是否没有传递或者它仍然在队列中。如果我可以让应用程序断开一天的连接,一天后它会用 10000k ping 敲击服务器。这不是一个很大的数字,但有些浪费。此外,如果我在一个周期内处理多个节点,它会以不可预知的方式阻塞,不是因为真正的压力,而是因为幻象断开。
    • 有没有办法让不可靠的平等对等点 N 对 N?我只需要缓冲区处理、分离线程 IO 和与 ZMQ 分隔,仅此而已
    • 简短回答:您可能可以做您想做的事,但我对您的情况知之甚少,无法确定您是否会做或如何做。这感觉好像它偏离了 StackOverflow 的适当问题,您可能需要做更多的研究并尝试一些东西,然后返回一个可以用代码演示的特定问题。
    猜你喜欢
    • 1970-01-01
    • 2016-07-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2012-01-02
    • 2017-05-06
    相关资源
    最近更新 更多