
消息中间件的应用场景
- 异步解耦
- 削峰填谷
- 顺序收发
- 分布式事务一致性
腾讯应用案例:

主流 MQ 框架及对比

说明
- Kafka:整个行业应用广泛
- RocketMQ:阿里,从 apache 孵化
- Pulsar:雅虎开源,符合云原生架构的消息队列,社区活跃
- RabbitMQ 架构比较老,AMQP并没有在主流的 MQ 得到支持
- NSQ:内存型,不是最优选择
- ActiveMQ、ZeroMQ 可忽略
Kafka 优点
- 非常成熟,生态丰富,与 Hadoop 连接紧密
- 吞吐非常高,可用性高sharding提升 replication 速度
- 主要功能:pub-sub,压缩支持良好
- 可按照 at least once, at most once 进行配置使用,exactly once 需要 Consumer 配合
- 集群部署简单,但 controller 逻辑很复杂,实现partition 得多副本、数据一致性
- controller 依赖 ZooKeeper
- 异步刷磁盘(除了钱的业务,很少有同步 flush 的需求)
Kafka 缺点
- 写入延时稳定性问题,partition 很多时Kafka 通常用机械盘,随机写造成吞吐下降和延时上升100ms ~ 500ms
- 运维的复杂性单机故障后补充副本数据迁移快手的优化:迁移 partition 时旧数据不动,新数据写入新 partition 一定时间后直接切换
RocketMQ
- 阿里根据 Kafka 改

本文深入探讨了消息中间件在异步解耦、削峰填谷等场景的应用,对比了Kafka、RocketMQ等主流框架的优缺点。Kafka以其高吞吐、丰富的生态脱颖而出,而RocketMQ则在功能增强上有所牺牲。文章还讨论了Kafka的分区策略、消息持久化机制及其在分布式事务中的作用。

433

被折叠的 条评论
为什么被折叠?



