各种MQ的对比?项目是如何选型的?
Kafka | RocketMQ | RabbitMQ | |
---|---|---|---|
单机吞吐量 | 10万级 | 10万级 | 万级 |
开发语言 | Scala/Java | Java | Erlang |
高可用 | 分布式架构 | 分布式架构 | 主从架构 |
订阅形式 | 基于topic,按照topic进行正则匹配的发布订阅模式 | 基于topic/messageTag,按照消息类型、属性进行正则匹配的发布订阅模式 | 提供了4种:direct, topic ,Headers和fanout。fanout就是广播模式 |
性能稳定性 | 较差 | 一般 | 好 |
持久化 | 支持大量堆积 | 支持大量堆积 | 支持少量堆积 |
社区活跃度 | 高 | 高 | 高 |
**RabbitMQ:**单机吞吐量是万级,没有RocketMQ和Kafak的吞吐量高;
**Kafka:**Kafka更适合IO高吞吐的处理,一般应用在大数据日志处理或对实时性(少量延迟),可靠性(少量丢数据)要求稍低的场景使用,比如ELK日志收集;
**RocketMQ:**单机吞吐量能够达到十万级ÿ