首页 > 其他 > 详细

消息队列

时间:2017-01-20 16:09:05      阅读:236      评论:0      收藏:0      [点我收藏+]

大型网站设计中,进场需要用到消息队列。 消息队列的使用可以有效的降低熊个模块间的耦合,提高提醒的可扩展性,特别是在SOA影响下,原本一个独立的系统被拆分成多个不同的子系统,提高系统和模块的复用性,大量的功能被API化,但是也增加了系统之间的耦合,比如一个用户的请求,在服务器端可能要数十个甚至更多的模块,子系统间相互配合,一起作用才能得到结果,然后返回客户端,如果某个模块,或功能速度慢,比如高并发场景下的多任务处理,单个点的延迟会影响到对用户的整体反馈速度。消息队列(Queue),可以提供一种可靠的,异步处理能力,请求到达消息队列后即可返回,比如订单提交的过程中,系统设计到各种后台计算,整个过程可以封装成一个任务存储到消息队列,然后直接返回订单提交成功的消息给到用户,实际的处理过程可以用另一个消费者线程在系统后台异步处理。

 

有很多场景可以用消息队列,特别是那些会占用系统处理时间,拖慢系统响应速度,但又不是一定要及时反馈追中处理结果的任务, 比如,日志存储,数据在不同系统间的同步,等,

我们现在使用的消息队列工具是RabbitMQ, Redis也有消息对列的功能支持。

 

RabbitMQ可以提供高可用的,分布式,并可以持久化存储的消息队列服务,核心概念有 Broker, Virtual host, Exchange, Queue,Shovel,Federation. Broker可以理解成是部署RabbitMQ的服务器,分布式环境下,会有多个Broker. Virtual Host提供了不同Exchange/Queue的隔离,不同Virtual Host里的 Exchange/Queue不能相互直接访问。 Shovel提供跨Virtual Host/Broker的不同Exchage/Queue间的访问,Federation和Shovel类似,但是Shovel运行的更底层一些,Shovel相当于一个消息队列的消费者程序。

 

Redis本质上提供分布式存储服务的,类似MemoryCache,但是支撑更多的数据类型,比如Hash, List, Set, ZSet, 另外Redis 支持数据的持久化存成和高可用。另外Redis也有消息队列的功能,可以提供消息队列服务

 

消息队列

原文:http://www.cnblogs.com/garyblog/p/6322831.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!