消息队列

大型网站设计中,进场需要用到消息队列。 消息队列的使用可以有效的降低熊个模块间的耦合,提高提醒的可扩展性,特别是在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也有消息队列的功能,可以提供消息队列服务

 

转载于:https://www.cnblogs.com/garyblog/p/6322831.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值