消息中间件优缺点及选型

1 优点

解耦:通过Pub/Sub发布订阅消息,解除系统之间的耦合性
异步:异步处理请求,实现快速响应
削峰:MySQL一般可以支持每秒2K请求,将请求写入消息中间件,慢慢拉取

2 缺点

可用性降低:请求处理依赖消息中间件
复杂的提高:需要处理重复消费、消息丢失、消息传递顺序等
一致性问题:消息消费可能失败,导致数据不一致

3 对比

特性 ActiveMQ RabbitMQ RocketMQ Kafka
单机吞吐量 万级 万级 十万级,高吞吐 十万级,高吞吐,常用与实时计算、日志采集等场景
topic对吞吐量影响 topic在几百/几千时,吞吐量会有较小的下降 topic在几十/几百时,吞吐量会大幅度下降
时效性 毫秒 微妙 毫秒 毫秒内
可用性 高,通过主从架构实现高可用 高,通过主从架构实现高可用 非常高,分布式架构 非常高,分布式,一个数据多副本,部分宕机不会丢失数据,不会不可用
可靠性 较低概率丢失数据 参数优化后可0丢失 参数优化后可0丢失
功能支持 极其完备 并发强、性能极好、延时很低 较为完善、分布式、拓展性好 较为简单

4 建议

ActiveMQ:没有大规模吞吐场景验证,没有活跃社区,不建议
RabbitMQ:开源、社区活跃,erlang语言开发
RocketMQ:阿里出品
Kafka:大数据领域业内标准,社区活跃

猜你喜欢

转载自blog.csdn.net/weixin_38229356/article/details/85057370