- 为什么要用mq
业务场景是什么?有什么技术挑战,不用mq很多挑战,用了以后有什么好处
解耦
下游系统挂了,要考虑重试,业务修改(增加减少调用下游系统)
异步
削峰
结合项目 - mq有什么优缺点
缺点:
一致性
mq故障导致系统不可用
消息丢失、顺序性 - 各种mq对比,区别、场景、技术选型
activeMq
单机吞吐量在1秒万级,比较小
延迟毫秒级
可用性可以保证(主从)
消息丢失的可能
社区越来越不活跃、维护少、更新慢
功能完善、成熟
rabbitMq
延迟低
管理界面完备
社区比较活跃
单机吞吐量几万级
erlang开发
rocketMq
单机吞吐量十万
topic数量
分布式扩展好
可用性
java开发
kafka
功能简单
吞吐量大
分布式架构
延迟低 - 高可用
rabbitMq
1.普通集群部署-集群中的每个实例保存queue元数据,但是消息数据只保存在一个实例中-无法保证高可用
2.镜像集群部署-queue的数据在每个集群中的实例都有保存,可以保证可用,
但是集群实例之间有大量数据传输,数据上限受限制
kafka
重复消息
消息丢失
顺序性
5. 消息堆积,延迟过期
6. 怎么设计消息队列