RocketMQ面渣如何逆袭?二十三问
- 内容介绍
- 文章标签
- 相关推荐
本文共计11470个文字,预计阅读时间需要46分钟。
基础1. 为什么要使用消息队列呢?消息队列主要有三大用途,以一个电商系统的订单为例:便捷:在消息队列引入之前,订单完成后需要立即调用数据库存储服务进行库存减少,引入消息队列后,订单完成消息发送到队列,降低系统耦合度,提高系统稳定性。高效:消息队列可以异步处理,订单完成消息发送到队列,不立即调用数据库服务,减少数据库压力,提高系统吞吐量。解耦:订单完成后,通过消息队列传递消息,数据库服务无需关心订单逻辑,降低系统复杂度。
基础 1.为什么要使用消息队列呢?消息队列主要有三大用途,我们拿一个电商系统的下单举例:
-
解耦:引入消息队列之前,下单完成之后,需要订单服务去调用库存服务减库存,调用营销服务加营销数据……引入消息队列之后,可以把订单完成的消息丢进队列里,下游服务自己去调用就行了,这样就完成了订单服务和其它服务的解耦合。
-
异步:订单支付之后,我们要扣减库存、增加积分、发送消息等等,这样一来这个链路就长了,链路一长,响应时间就变长了。引入消息队列,除了
更新订单状态,其它的都可以异步去做,这样一来就来,就能降低响应时间。 -
削峰:消息队列合一用来削峰,例如秒杀系统,平时流量很低,但是要做秒杀活动,秒杀的时候流量疯狂怼进来,我们的服务器,Redis,MySQL各自的承受能力都不一样,直接全部流量照单全收肯定有问题啊,严重点可能直接打挂了。
我们可以把请求扔到队列里面,只放出我们服务能处理的流量,这样就能抗住短时间的大流量了。
本文共计11470个文字,预计阅读时间需要46分钟。
基础1. 为什么要使用消息队列呢?消息队列主要有三大用途,以一个电商系统的订单为例:便捷:在消息队列引入之前,订单完成后需要立即调用数据库存储服务进行库存减少,引入消息队列后,订单完成消息发送到队列,降低系统耦合度,提高系统稳定性。高效:消息队列可以异步处理,订单完成消息发送到队列,不立即调用数据库服务,减少数据库压力,提高系统吞吐量。解耦:订单完成后,通过消息队列传递消息,数据库服务无需关心订单逻辑,降低系统复杂度。
基础 1.为什么要使用消息队列呢?消息队列主要有三大用途,我们拿一个电商系统的下单举例:
-
解耦:引入消息队列之前,下单完成之后,需要订单服务去调用库存服务减库存,调用营销服务加营销数据……引入消息队列之后,可以把订单完成的消息丢进队列里,下游服务自己去调用就行了,这样就完成了订单服务和其它服务的解耦合。
-
异步:订单支付之后,我们要扣减库存、增加积分、发送消息等等,这样一来这个链路就长了,链路一长,响应时间就变长了。引入消息队列,除了
更新订单状态,其它的都可以异步去做,这样一来就来,就能降低响应时间。 -
削峰:消息队列合一用来削峰,例如秒杀系统,平时流量很低,但是要做秒杀活动,秒杀的时候流量疯狂怼进来,我们的服务器,Redis,MySQL各自的承受能力都不一样,直接全部流量照单全收肯定有问题啊,严重点可能直接打挂了。
我们可以把请求扔到队列里面,只放出我们服务能处理的流量,这样就能抗住短时间的大流量了。

