本文簡要介紹ZMQ常用的通信模式
請求響應模式
- 常規搭配:
ZMQ_REQ+ZMQ_REP - 帶輸入負載(Round Robin)均衡搭配:
ZMQ_REQ+ZMQ_ROUTER - 消息分發搭配:
ZMQ_ROUTER+ZMQ_DEALER - 帶輸出負載(load-balance)均衡搭配:
ZMQ_DEALER+ZMQ_REP
ZMQ_REQ模式在發送消息時,ZMQ底層會在消息內容頭部插入一個空幀,在接收消息時,會去掉空幀,將內容返回給應用層。
ZMQ_REP模式在接收消息時,會將消息空幀之前的信封幀保存起來,將空幀之后的內容傳給上層應用。上層應用在響應消息時,底層會在響應消息前加上空幀以及對應請求的信封幀。
ZMQ_ROUTER模式在接收消息時,ZMQ底層會在消息頭部添加上一個信封幀,用於標記消息來源。該信封幀可由發送端指定(調用zmq_setsockopt(ZMQ_IDENTITY)),也可由接收端自動生成唯一標識作為信封幀。在發送消息時,將信封幀之后的內容發送到以信封幀為標識的地址。
ZMQ_DEALER模式,對接收到的消息公平排隊fair-queue,以Round-Robin方式發送消息。
發布訂閱模式
ZMQ_SUB <-- ZMQ_PUB
任務管道模式
ZMQ_PUSH -> [ ZMQ_PULL , ZMQ_PUSH] --> ZMQ_PULL
一對一通信
ZMQ_PAIR <--> ZMQ_PAIR
