MQ 的作用
- 解耦
- 最终一致性
- 广播 生产者和消费者互相不用关心。
- 错峰和流控 秒杀场景
kafka、RocketMq、RabbitMq 比较
特性 | kafka | RocketMq | RabbitMq | ActiveMq |
---|---|---|---|---|
开发语言 | scala | java | erlang | java |
单机吞吐量 | 10w 级 | 10w 级 | 1w 级 | 1w 级 |
时效性 | ms 级内 | ms 级内 | us 级 | ms级 |
可用性 | 非常高(分布式架构) | 非常高(分布式架构) | 高(主从架构) | 高(主从架构) |
功能特性 | 只支持主要 Mq 功能。大数据领域应用广 | MQ 功能比较完备,扩展性佳 | 并发能力很强,性能极好,延时很低,管理界面丰富 | 成熟的产品,很多公司在用。各协议支持好。mq 功能极其完备 |
优势 | 1. 单机 TPS 百万级 2.优秀的管理界面 kafka-mamager 3. 应用于实时计算和日志采集 |
1. 支持 10 亿级消息堆积,不影响性能。 2. 源码为 java,可定制,易读懂 3. 参数优化后,消息零丢失。 4. 支持分布式事务 |
1. 基于 erlang,性能好,高并发 2. 社区活跃 3. 文档齐全 |
1. mq领域功能极其完备 |
缺陷 | 1. kafka 单机超过 64 分区,load 会飙高。 2.使用短轮询方式,实时性取决于轮询间隔时间。 3.消费失败不支持重试. |
1. 客户端支持语言不多 2. 社区活跃度一般。 3.没有实现 JMS 接口,有些系统迁移改动大 |
1.erlang 开发。代码较难看懂 2. 吞吐量相对较低,因为实现机制比较重。 3.学习维护成本高 |
关房对 ActiveMq5.x 维护渐少,较少在大吞吐量规模使用 |
应用场景 | 基于 PULL 模式处理消息消费,追求高吞吐量。大公司建议使用 | 为金融互联网领域而生,对可靠性要求很高的场景。经过双 11 的洗礼,稳定性更可靠。 | 并发性好,功能完备,社区活跃度高,快速解决 bug。不利于二次开发。适合于数据量不那么大的公司 |
版权声明:本文由 在 2019年08月26日发表。本文采用CC BY-NC-SA 4.0许可协议,非商业转载请注明出处,不得用于商业目的。
文章题目及链接:《常见 MQ 的比较 - Kafka、RocketMQ、RabbitMQ的优劣势比较》