消息队列ZeroMQ

消息队列概念

消息队列技术是分布式应用间交换信息的一种技术。消息队列能够驻留在内存或者磁盘上,队列存储消息直到它们被应用程序读走。经过消息队列,应用程序能够独立的执行,它们不须要知道彼此的位置,或者在继续执行前不须要等待接受程序接收此消息。html

消息队列相关的概念有:node

  1. 消息(Message)
    消息是MQ中最小的概念,本质上就是一段数据,它能被一个或者多个应用程序所理解,是应用程序之间传递的信息载体。
  2. 队列(Queue)
    1. 本地队列

      本地队列按照功能可划分为初始化队列,传输队列,目标队列和死信队列。数据库

      初始化队列用做消息触发功能。服务器

      传输队列只是暂存待传的消息,条件许可的状况下,经过管道将消息传送到其余的队列管理器。网络

      目标队列是消息的目的地,能够长期存放消息。异步

      若是消息不能送达目标队列,也不能再路由出去,则被自动放入死信队列保存。socket

    2. 别名队列&远程队列
      用来指定远端队列管理器的队列。使用了远程队列,程序就不须要知道目标队列的位置。
    3. 模型队列
      模型队列定义了一套本地队列的属性结合,一旦打开模型队列,队列管理器会按照这些属性动态地建立出一个本地队列。
  3. 队列管理器(Queue Manager)
    队列管理器是一个负责向应用程序提供消息服务的机构,若是把队列管理器比做数据库,那么队列就是其中一张表。
  4. 通道(Channel)
    通道是两个管理器之间的一种单向点对点的的通讯链接,若是须要双向交流,能够创建一对通道。

消息队列的主要特色是松耦合。尤为是分布式环境下的应用程序,若是须要进行数据的交换,须要结合主机间和主机内部进程间的通讯知识,编写大量的代码,和应用程序自己牢牢耦合在一块儿,此外,还要面对应用所在的不一样环境的差别。而有了消息队列中间件,分布式环境下的数据传输和交换工做就彻底移交给了消息队列中间件,并让他来确保数据传输的可靠性,此外还提供独有的异步传输机制,便于和异步事务处理的应用整合。分布式

消息队列的特色有:函数

  1. 可靠传输:消息中间件确保不一样环境下数据传输不丢失
  2. 不重复传输:断点续传
  3. 异步传输:发送和接收方没必要同时在线
  4. 消息驱动:主动通知消息给接收方
  5. 支持事务

消息队列适用的场景有:学习

  1. 消息通道:客户端和服务器端创建一条通道,完成数据的可靠交互
  2. 消息总线:经过服务总线将不一样服务串联起来,完成不一样服务间的数据传输
  3. 消息路由:根据指定的规则将不一样的消息路由到不一样的队列中去
  4. 发布订阅:消息发布者向一个Topic发送一条消息后,全部的订阅者都会接收到它

ZeroMQ

ZeroMQ(ZMQ)号称史上最快中间件。它对socket通讯进行了封装,使得咱们不须要写一行socket函数调用就能完成复杂的网络通讯。和通常意义上的消息队列产品不一样的是,它没有消息队列服务器,而更像是一个网络通讯库。使用它可以轻松的完成多个node之间的传输。

ZMQ有三个基本通讯模型:

  1. 请求应答(Request-Reply): client端发起请求,server端响应请求
  2. 发布订阅(Publisher-Subscriber):发布者发布指定主题的消息,订阅端订阅感兴趣的主题

  3. Parallel Pipeline: 消息通过分发到各个节点,处理以后再进行汇总

参考资料:

【MQ消息队列】:http://blog.csdn.net/wxyfighting/article/details/8866437

ZeroMQ的学习和研究】:http://www.searchtb.com/2012/08/zeromq-primer.html

【ZMQ官网】:http://zeromq.org

相关文章
相关标签/搜索