为什么用MQ?
解耦异步:系统间接口调用,耦合性高,一旦某个系统出问题,整个流程报错,引入mq,可以将消息发给mq就可以了,如果库存挂了,重启后再去消费就行了。
削峰:减轻数据库压力
数据分发:
用mq考虑问题?
1.可用性降低:mq宕机,影响业务
2.复杂性提高:同步消息如何保证幂等性?消息丢失问题如何处理?如何保证消息顺序性?
3.一致性问题:A处理完后,BCD都去处理,如果D处理失败,那么如何保证消息处理一致性?
几大主流MQ:
Activemq
小规模吞吐量,可能丢消息
Rabbitmq
万级吞吐量,功能完备,管理界面友好,社区活跃,erlang开发(性能好并发高,但erlang很少人做,不好看源码),可用性ok,一般不丢消息
Rocketmq
10万级吞吐,阿里开源,社区活跃,topic可以有很多(几百几千),分布式扩展好,可支撑大规模吞吐,高并发,复杂业务场景,中大型公司用好一些
Kafka
10万级吞吐,功能简单,适合大数据实时计算和日志采集,社区不活跃
总结:
下一篇总结RabbitMQ内部知识体系,欢迎大家访问!