ZeroMQ注意事项

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这边放入队列中

Divide and Conquer

此模式解释例如以下:

  • 一个ventilator负责生产能够并行运行的任务
  • 一系列的workers负责处理任务
  • sink负责从工作进程收集处理结果
  • 在Ventilator和worker之间必需要有同步。这点是非常难处理。

    当全部的Worker就绪之后,再生产任务,这样Worker就能够平均处理。

    假设不做同步,第一个连接上Ventilator的Worker将会做大量的工作


Sink从Worker进程收集处理结果,结果存放在fair-queuing队列。其模型例如以下:





版权声明:本文博主原创文章。博客,未经同意不得转载。

原文地址:https://www.cnblogs.com/zfyouxi/p/4868132.html