Cloud Wind的BLOG ZeroMQ模型
栏目:365bet皇冠平台 发布时间:2019-02-11 10:57
请求响应模型。
请求在应用程序结束时启动,并等待响应响应请求。
从请求方面,必须有成对的发送和接收对。否则,响应者必须是发送和接收对。
申请人和被申请人均可为1:N模式。
通常,1被认为是服务器,N被认为是客户端。
ZeroMQ可以支持路由功能(实现路由功能的组件称为Device),它从1:N扩展到N:M(它只需要组合一些路由节点)这是必要的)。
从该模型中,较低级别的端点地址从上层隐藏。
每个请求都隐式包含一个回复地址,应用程序并不关心这一点。
发布订阅模型。
在此模型中,发布者仅在一个方向上发送数据,而不考虑是否所有信息都发送给订阅者。
当发行者开始发布信息时,订户未连接并且信息被直接丢弃。
但是,一旦订户连接,媒体将确保没有信息丢失。
同样,订户仅负责接收,反馈不负责。
如果发布者和订阅者需要进行交互(例如,确认订阅者已经连接),请使用附加响应套接字使用请求响应模型来满足此要求。
管模型
在此模型中,管道是单向的,数据流在一个方向上从PUSH侧推到PULL侧。
为了解决这个问题,可以将任意并行分布问题与这三个模型结合起来。
ZeroMQ专注于消息通信的基本问题并解决了它,它非常漂亮。
基于定义明确的模型,您可以看到API可以非常简单地实现。
由于此模型为1:N而不是1:1,因此不再需要链接/监听/接受来配置服务器。您也不需要为每个频道保留标识符。
在客户端连接之前,您不必担心服务器是否启动(链接)。
在之前的模型中,重点是通信方面的责任,而不是它们的实现方式(侦听端口或连接端口)。
在协同工作的复杂多进程系统中,您不必担心调用进程的顺序(启动脚本在前几年设计的系统中非常复杂)。
使用ZeroMQ,您不必担心底层实现是使用短连接还是长连接。
ZeroMQ的临时和持久套接字与实现层维护TCP连接时相同。
这是一个概念上的差异。
在Durablesocket的情况下,其寿命可能比过程的寿命长。即使在该过程结束后,您也可以在重新开始后保留前一个套接字。
当然,这无助于防止程序崩溃。
它只是提出了这个模型,它允许您根据您的设计需求来完成它。
在ZeroMQ中,根据需要,还在磁盘上放置数据传输缓冲区(如果内存有限)。