标签:
消息队列(Message Queue,简称MQ),从字面上的意思来看,本质就是一个队列,FIFO(先入先出),只不过队列中存放的内容是Message而已。
消息队列主要用于不同进程(Process)/线程(Thread)之间通信。它主要解决两个问题:
FIFO
满足队列的FIFO,先入先出策略
可靠性
可扩展性
可追踪性
保证一致性
异步性
说到分布式就必然牵扯出一系列的话题,负载均衡、服务定位、通信协议、序列化协议…… 不是一两句话就能说明白的。在这里咱们只说有关分布式消息队列的概念。
分布式队列编程模型
分布式队列编程模型包含三类角色:发送者(Sender)、分布式(Queue)、接收者(Receiver)。发送者和接收者分别指的是生产消息和接收消息的应用程序或服务。
点对点模型(Point-to-Point)
基础模型中,只有一个发送这、一个接收者和一个分布式队列。如下图:
生产者消费者模型(Producer-consumer)
如果发送这和接收者都可以有多个部署实例,甚至不同的类型;但是共用同一个队列,就变成了标准的生产者消费者模型。在该模型中,三个角色一般称之为生产者(Producer)、分布式队列(Queue)、消费者(Consumer)。如下图:
发布订阅模型(PubSub)
如果只有一类发送者,发送者将产生的消息实体按照不同的主题(Topic)分发到不同的逻辑队列。每种主题队列对应一类接收者。这就变成了典型的发布订阅模型。在该模型,三个角色被称之为发布者(Publisher)、分布式队列(Queue)、订阅者(Subscriber),如下图:
MVC模型
如果发送者和接收者存在同一个实体中,但是共享一个分布式队列。这就像很经典的MVC模型。如下图
最后,源码下载
参考资料
消息队列(Message Queue)基本概念
分布式队列编程:模型、实战
标签:
原文地址:http://www.cnblogs.com/Khadron/p/5738009.html