Asynchronous ZeroMQ能否为双向非阻塞异步传输提供基础?

Asynchronous ZeroMQ能否为双向非阻塞异步传输提供基础?,asynchronous,zeromq,bidirectional,Asynchronous,Zeromq,Bidirectional,我有一个由两个应用程序组成的系统。目前,两个应用程序使用为每种特定类型的传输生成的多个模式进行通信。插座是用C语言编程的 比如说,,AppX使用一个SUB正式套接字原型从AppY接收信息struct,并使用另一个PUB正式套接字原型将原始比特块传输到AppY,同样适用于AppY。它使用PUB/SUB模式进行传输和接收 要清除AppX和AppY执行以下通信: AppX->AppY:-1kbit的原始位块(连续),-整型命令(不连续,取决于用户) AppY->AppX:信息结构的10kbits(连续

我有一个由两个应用程序组成的系统。目前,两个应用程序使用为每种特定类型的传输生成的多个模式进行通信。插座是用C语言编程的

比如说,,AppX使用一个
SUB
正式套接字原型从AppY接收信息
struct
,并使用另一个
PUB
正式套接字原型将原始比特块传输到AppY,同样适用于AppY。它使用
PUB/SUB
模式进行传输和接收

要清除AppX和AppY执行以下通信:

AppX->AppY
-1kbit的原始位块(连续),
-整型命令(不连续,取决于用户)

AppY->AppX
信息
结构
10kbits
(连续)


设计目标: a)我的目标是在每侧仅使用一个插座在非阻塞模式下进行双向通信。
b)我想要两个应用程序在没有额外延迟的情况下处理排队接收的数据包。
c)我不希望AppX在崩溃的AppY之后崩溃



Q1:
使用
ZeroMQ
是否可能?
Q2:
我可以使用
路由器/经销商
或任何其他模式来完成此工作吗

我读过指南,但有些方面我搞不懂

实际上,我对
ZeroMQ
没有很好的经验。我很高兴听到关于这个问题的更多提示。

A1:
是的,这在
ZeroMQ
nanomsg
类工具中是可能的
ZeroMQ
和它的妹妹
nanomsg
都有可伸缩的
愿景(你还没有强调过)
正式的
(硬连线的正式行为)
沟通
(是的,就是这样)
图案(精心雕刻,可根据需要重新使用和组合)

这就是说,如果您希望在每个“边”上只有一个套接字模式,那么您必须选择这样一个正式的模式,这将使您免于任何硬连线行为,从而实现您的目标

因此,a)“…只有一个”是可以实现的——如果你从只允许一个单一的
zmq.PAIR
(文档的某些部分将其标记为仍然是一个实验设备)或
NN.BUS
或一对
推/拉
,如果你后退一步,就可以实现(这实际上消除了共享
zmq.Context()
实例化IO线程的所有酷功能)用于重新使用低级IO引擎。如果您花几分钟时间阅读下面提到的示例,您很快就会意识到,当您在系统架构中使用更多甚至更多的模式时,完全相反的策略非常常见,并且对设计目标有利。

通过为相应的
.send()/.recv()
函数声明正确的指令
zmq.NOBLOCK
,并在应用程序设计体系结构中使用快速、非阻塞的
.poll()
循环,a)“…非阻塞”
是可行的

b)“…没有…延迟”与关于应用程序设计体系结构的非常著名的评论有关,因为您可能仅仅依赖于错误的选择和/或不可能调整事件处理程序的内部计时和延迟惩罚而失去这一点。如果仔细设计,您可能会完全控制系统将经历的延迟/延迟,而不会成为任何框架的黑盒事件循环的牺牲品,在这种循环中,您只能等待在繁重的系统或流量负载下出现意外

c)“…Y崩溃后的X崩溃”可以在
{ZeroMQ | nanomsg}-
的基础上,通过仔细组合所有函数的非阻塞模式+通过您的设计,在没有从预期的
{local | remote}收到任何
POS U ACK
的情况下,能够处理异常-
功能。在这方面,可以公平地说,由于某种强制性的内部行为,即内部“硬连线”,一些正常的FC
通信P尝试没有这种灵活性,因此,在为每个仍然可扩展但具有故障恢复能力的角色选择适当的FCP-原型时,应格外小心


Q2:
No。
最好的下一步:
您可能对
Q1:

Q2:
否,应用程序X和应用程序Y均应使用ZMQ\u经销商。
看见请注意,本例中的ZMQ_路由器只是将请求从多客户端分发到ZMQ_经销商进行实际工作的不同线程。

这个问题不是关于C或套接字等,而是关于。不适合这个论坛。试试这个链接,它是给程序员堆栈交换的。谢谢,我会试试你提供的链接。非常感谢你的帮助。我会花时间在这件事上,看看我能不能处理好。再次感谢。欢迎,@blackmore\u 24。StackOverflow鼓励用户表达他们对帮助贴的想法。通过在问题或答案一侧投上一票[+1],激发灵感或类似的帮助。无论何时,只要你发现了这个问题,不要犹豫