消息队列用途:解耦,异步,削峰
解耦:将多个需要消费同样消息的功能解耦开,逻辑互不影响
异步:消息异步处理,提高吞吐
削峰:大批消息快速流入时保证系统整体稳定可用
缺点:系统复杂性,消息丢失
系统复杂性:系统引入了额外的复杂性,要额外维护消息队列相关功能,生产,消费等
消息丢失:消息有概率丢失,根据不同架构有不同的原因,如消息还未存储时机器挂掉
主流MQ:Kafka,RocketMQ,rabbitMQ,ActiveMQ
引用一张知乎大佬的图,原文链接
总结:
高吞吐用 kafak 和 RocketMQ,需要功能简单用kafka(如日志),复杂用RocketMQ
rabbitMQ 延迟最低,ActiveMQ 简单易用
实现原理:
待补充