如何保护ZeroMQ请求回复模式免受潜在的消息丢失的影响?

如何保护ZeroMQ请求回复模式免受潜在的消息丢失的影响?,第1张

如何保护ZeroMQ请求回复模式免受潜在的消息丢失的影响?

广告1)不
用户没有任何套接字链接管理接口可以测试/重置ZeroMQ框架中FSA到FSA的状态。

是的,

XREQ/XREP
可以帮助您克服僵局,在
REQ/REP
可伸缩的正式沟通模式中可能会发生以下情况:

Fig.1:
为什么在+主要是有限状态自动机的相互死锁且永远不会到达“下一个”内部状态的情况下,天真地使用所有情况都是错误的。
REQ/REP

[1]
in_WaitToRecvSTATE_W2R
[2]
in_WaitToRecvSTATE_W2R

REQ-FSA/REP-FSA
in_WaitToSendSTATE_W2S

    XTRN_RISK_OF_FSA_DEADLOCKED ~ {  NETWORK_LoS        :   || NETWORK_LoM        :   || SIG_KILL( App2 )        :   || ...        :      }        :[App1]      ![ZeroMQ]         :    [ZeroMQ]   ![App2] pre-control! pre-control    :    [pre-control         ! pre-control+===========!=======================+    :    +=====================!===========+|! ZMQ        |    :    |   ZMQ    !||! REQ-FSA    |    :    |   REP-FSA!||!+------+BUF> .connect()|    v    |.bind()  +BUF>------+!||!|W2S   |___|>tcp:>---------[*]-----(tcp:)--|___|W2R   |!||     .send()>-o--->|___||         |         |___|-o---->.recv()     || ___/      !| ^  | |___||         |         |___| ^  | |!      ___ || REQ       !| |  v |___||         |         |___| |  v |!       REP || ___.recv()<----o-|___||         |         |___|<---o-<.send()___/ ||!|   W2R|___||         |         |___|   W2S|!||!+------<BUF+|         |         <BUF+------+!||! |         |          !||! ZMQ        |         |   ZMQ    !||! REQ-FSA    |         |   REP-FSA!|~~~~~~~~~~~~~ DEADLOCKED in W2R ~~~~~~~~ * ~~~~~~ DEADLOCKED in W2R ~~~~~~~~~~~~~|! ///////////|         |///////////!||! ///////////|         |//////////!|+===========!=======================+         +=====================!===========+

Fig.2:
可以使用几个纯
ZeroMQ
内置函数来实现自由步进传输层,并添加一些SIG层工具以完全控制所有可能的分布式系统状态。

App1.PULL.recv( ZMQ.NOBLOCK )
而且
App1.PULL.poll( 0 )
很明显

[App1]      ![ZeroMQ]pre-control! pre-control+===========!=======================+|! ||!+----------+|         |     .poll()|   W2R ___|.bind()    |         | ____.recv()<----o-|___|-(tcp:)--------O     | PULL      !|      |___||   :   |!|      |___||   :   |!|      |___||   :   |!+------<BUF+|   :     |! |   :     ![App2]|! |   :     [ZeroMQ]   ! pre-control|! |   :     [pre-control         ! once gets started ...|! |   :     +=====================!===========+|! |   :     |          !||! |   :     |         +----------+!||! |   :     |         |___       |!||! |   :     |         |___| <--o-<.send()____ ||! |   :<<-------<tcp:<|___|   W2S|!      PUSH ||! |   :    .connect() <BUF+------+!||! |   :     |          !||! |   :     |          !|+===========!=======================+   :     +=====================!===========+

广告2)否
但是 如果RTO测试无法证明这两个(多个),则 可以创建自己的 “ ZeroMQ消耗品” 来测试分布式系统设置新的传输/信令套接字的能力,
并准备对其进行处理。双方准备通过ZeroMQ基础架构进行设置+进行通信
(请注意,问题不仅在于ZeroMQ层,而且应用程序方面也不需要处于就绪状态/处于这样的状态以处理预期的通信交互(并且可能导致软锁/死锁)。


最好的下一步?

我能为你进一步的问题,现在做是引导你看到一个 **关于这个问题

更大的画面更多的参数 ,一个简单
的信令平面/消息面插图直接链接到必读的书** ,从Pieter HINTJENS。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5654066.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存