MQ(消息中间件)
MQ是什么?
1.消息队列
接收、存储、转发消息的中间件,主要用于解决以下问题:
解耦
消峰/限流:比如秒杀场景
异步
2.主流消息中间件:MQ、 kafka
mq
对数据可靠性、实时性要求高,一般不会进行汇聚批量发送消息,所以读写数据量不会很大,性能比较一般。
kafka
主要是用于日志传输,处理海量数据,对于数据的正确度要求不是很高,支持批量发送消息,处理效率高
3.架构
常见的应用场景:
1.分布式事务消息
解决了数据一致性
事务消息适用的场景主要是那些需要异步更新数据,并且对数据实时性要求不太高的场景
事务的反查机制
自动重试、幂等问题
例子:打包出库
wms: 生成包裹号、库存释放、发货单状态变更
单据状态同步
tms运单初始化
打包台
2.严格的顺序消息
比如交易,订单创建 ,订单支付,订单完成 需要保证同一个订单单消息在一个队列中,通常的做法,是拿订单号作一个取模运算,根据索引获取队列来进行发送,保证在一个队列中,顺序消费。
3.定时消息(可以设置一个延迟时间,延迟消费)
场景:
发送消息时,指定消费的时间点
消费失败后,指定下次重试的时间点
举例,履约这边发货后物流轨迹的更新,需要定时的去查询第三方的最新物流,更新物流状态,创建运单以后,会给自己发送一个延时消息,目前设置的1小时,收到消息后,查询最新物流消息并更新。
4.广播刷缓存
如何测试?
一、消息丢失。
二、幂等。
只被消费一次
三、性能
模拟大量堆积 *** 作,检测消费者处理能力
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)