这是我参与「第五届青训营 」伴学笔记创作活动的第 36 天
RocketMQ
使用场景
低延时
针对电商业务线,其业务涉及广泛,如注册、订单、库存、物流等;同时,也会涉及许多业务峰值时刻,如秒杀活动、周年庆、定期优惠等
RocketMQ 基本概念
Partution和ConsumerQueue一样
RocketMQ 架构
数据流也是通过Producer发送给Broker集群,再由Consumer进行消费
Broker节点有Master和Slave概念;
NameServer为集群提供轻量级服务发现和注册路由
存储模型
对于一个Broker来说,所有的消息会append到一个CommitLog上面,然后按照不同的Queue,重新Dispatch到不同的Consumer中,这样Consumer就可以按照Queue进行拉取消费,但需要注意的是,这里的ConsumerQueue所存储的不是真实的数据,真实的数据只存储再CommitLog中,这里存的仅仅是这个Queue所有消息在CommitLog上的位置,相当于是一个Queue的密集索引
高级特性
高级特性 - 事务场景
下单流程:首先保证库存足够更够顺利-1,这时候再让消息队列让我其他系统来处理,比如订单系统和商家系统,但是这里重要的是,库存服务和消息队列必须是在一个事务里,ACID,因此RocketMQ提供事务消息来保证类似场景