赞
踩
换句话说:
有一个大的系统由A系统和B系统组成,A系统先将数据发送给MQ,然后MQ将数据发送给B系统,实现A系统和B系统之间的数据传输。A系统生产数据,称为生产者。B系统消费数据,称为消费者。MQ为存储数据的消息中间件。
MQ 分类
目前市面上常见的MQ有以下几款,从下图可以看出他们之间的区别。
以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。
在软件设计或者编写代码时,都会追求高内聚低耦合,耦合性降低,系统可用性,扩展性增强。在分布式系统中,需要降低系统之间的耦合性。
用户点击提交订单按钮,访问到订单系统,订单系统需要操作库存、支付、物流三个系统,从上图中的架构方式可以看到,各个系统之间的耦合性较高。当库存系统出现问题后,订单系统操作的整个链路将无法继续进行,导致订单系统出现问题,这是其一。
其二,如果在上图的架构中再加入一个X系统,开发订单系统的人员需要修改订单系统的代码,添加访问X系统的链路代码。如果后期再加系统呢,开发人员需要天天改动,导致代码的可维护性降低。
总结:如果系统耦合性越高的话就会导致系统的容错性降低,可维护性也降低。
这时就需要引入MQ解决以上问题。
用户点击提交订单按钮,访问到订单系统,订单系统只需要发送消息给MQ就可以,然后返回给用户订单提交成功。下游的库存、支付、物流系统只需要消费MQ中的消息数据就可以。当库存系统出问题时,不会影响其他系统的使用;如果需要加入新系统,订单系统的开发人员也无需修改代码,直接让新的系统消费MQ中数据就好。提升了容错性和可维护性。
如上图,使用同步方式订单系统进行调用库存、支付、物流三个系统
分别消耗时间300ms,当用户进行下订单操作时总共花费920ms,时长去进行等待,可见系统的响应时间非常慢,为了提升系统的响应速度,引入MQ实现异步处理。
如上图,当用户进行下订单操作后,订单系统向MQ发送数据花费5ms,操作数据库花费20ms,订单系统向用户响应下单成功,整体只消耗25ms处理完一个请求,提高用户的体验和系统的吞吐量。
举个例子:A系统接收用户的请求,每秒钟处理1000个请求。
在双十一的时候,为了提高网站的用户使用量,推出了一个秒杀活动。在当天的12点左右,大量的用户进入A系统,产生大量的请求访问,当请求量剧增时,A系统无法处理,导致A系统宕机。
引入MQ进行流量削峰,当大量的用户进行秒杀活动时,请求数据都先到MQ,然后A系统去消费MQ中的数据,提高A系统的可用性和稳定性。
四个关键概念
名词解释
RabbitMQ提供了六种工作模式:简单模式、work queues、发布订阅模式、路由模式、主题模式、RPC远程调用模式。
本次分享RabbitMQ入门概述到这里就结束了,希望对大家有所帮助!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。