分布式消息服务Kafka版与分布式消息服务RocketMQ版的功能区别:
功能项
|
分布式消息服务Kafka版
|
分布式消息服务RocketMQ版
|
---|---|---|
消费模式 |
客户端主动拉取 |
支持客户端主动拉取和服务端推送两种方式 |
优先级队列 |
不支持 |
|
延迟队列 |
不支持 |
支持 |
死信队列 |
不支持 |
支持 |
消息重试 |
不支持 |
支持 |
广播消费 |
支持 |
支持 |
消息回溯 |
支持 Kafka支持按照offset和timestamp两种维度进行消息回溯 |
支持 |
消息堆积 |
支持 |
支持 |
持久化 |
支持 |
支持 |
消息追踪 |
不支持 |
支持 |
消息过滤 |
支持 |
支持 |
多租户 |
不支持 |
支持 |
多协议支持 |
只支持Kafka自定义协议 |
兼容RocketMQ协议 |
跨语言支持 |
采用Scala和Java编写,支持多种语言的客户端 |
支持多语言的客户端 |
流量控制 |
支持client和user级别,通过主动设置可将流控作用于生产者或消费者 |
不支持 |
消息顺序性 |
支持单分区(partition)级别的顺序性 |
单队列(queue)内有序 |
安全机制 |
支持SSL、SASL身份认证和读写权限控制 |
支持SSL认证 |
事务性消息 |
支持 |
支持 |
分布式消息服务Kafka版与分布式消息服务RocketMQ版的应用场景区别:
分布式消息服务Kafka版,兼容开源Kafka,采用拉取(Pull)方式消费消息,吞吐量相对更高,适用于海量数据收集与传递场景,例如日志采集和集中分析。
分布式消息服RocketMQ版,兼容开源RocketMQ,基于Java语言开发,适用于对数据可靠性、数据实时性要求高,Topic数量非常多的场景,如订单、交易、充值、流计算、消息推送、日志流式处理、binlog分发等。
分布式消息服务Kafka版与分布式消息服务RocketMQ版的性能区别:
分布式消息服务Kafka版的单机QPS能够达到百万级别。
分布式消息服RocketMQ版的单broker QPS在万级别。
分布式消息服务Kafka版与分布式消息服务RocketMQ版的数据可靠性区别:
分布式消息服务Kafka版采用多副本机制,数据可靠性较高。
分布式消息服RocketMQ版采用3副本机制,数据可靠性较高。 RocketMQ采用Raft一致性协议,数据一致性高于Kafka。
分布式消息服务Kafka版与分布式消息服务RocketMQ版的服务可用性区别:
分布式消息服务Kafka版采用集群部署,分区与多副本的设计,使得单代理宕机对服务无影响,且支持消息容量的线性提升。
分布式消息服RocketMQ版采用Raft一致性协议,单台机器宕机会重新选主,可用性高。