Request-Reply状态
- 供client它必须是严肃的格在根据第一呼叫zmq_send()
函数,然后调用zmq_recv()函数的顺序来运行 - 对于server来说,运行时序相反
- 假设不依照这个时序来,可能会错误发生。或者信息丢失
- 能够有多个client同一时候连接到server
Publish-Subscribe模式
- SUB socket必须调用zmq_setsockopt()函数设置描写叙述符。
- client能够调用 zmq_recv()。从SUB socket上读取数据,可是不能往SUB socket上写数据。否则会错误发生
- 此模式是异步通信模式,即使没有client连接上server,server也在源源不断的发送数据。所以。即使client各种设置正确,也有可能接收不到数据,由于当client连接上的时候可能它所关心的数据已经发送完成了。
- 一个subscriber 能够连接到多个publisher
- 假设publisher 没有subscribers连接他。发送的消息会被简单的丢弃
- 假设使用TCP连接,而且subscribers处理非常慢。那么消息会在publisher这边放入队列中
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWZsb3ZlZWxzZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Divide and Conquer
此模式解释例如以下:
- 一个ventilator负责生产能够并行运行的任务
- 一系列的workers负责处理任务
- sink负责从工作进程收集处理结果
- 在Ventilator和worker之间必需要有同步。这点是非常难处理。
当全部的Worker就绪之后,再生产任务,这样Worker就能够平均处理。
假设不做同步,第一个连接上Ventilator的Worker将会做大量的工作
Sink从Worker进程收集处理结果,结果存放在fair-queuing队列。其模型例如以下:
版权声明:本文博主原创文章。博客,未经同意不得转载。