一、背景
作为Apache 顶级项目(TLP),Apache RocketMQ 是国内首个非 Hadoop 生态体系的顶级项目,开源至今被全球广泛应用。
Kafka主要定位日志传输,特性很难全面满足具有交易、订单、充值等场景的服务。所以,阿里团队研发了定位于非日志可靠消息传输的RocketMQ,RocketMQ取消了Kafka的分区机制,完全支持顺序消费和事务消息,是搭建高并发架构的不二之选。
二、特点
它的数据可靠性如何?RocketMQ支持异步实时刷盘、同步刷盘、同步复制、异步复制,而则Kafka使用异步刷盘方式,异步复制、同步复制。RocketMQ的同步刷盘在单机可靠性上比Kafka更高,不会因为操作系统Crash,导致数据丢失。
不同的数据分区影响了什么?Kafka同步Replication理论上性能低于RocketMQ的同步Replication,原因是Kafka的数据以分区为单位组织,意味着一个Kafka实例上会有几百个数据分区。而RocketMQ一个实例上只有一个数据分区,可以充分利用IO组Commit机制,有更好的IO性能,降低性能损耗。
三、总结
在消息投递实时性、严格的消息顺序、定时消息等核心功能方面,RocketMQ均比Kafka更加出色。非常适合应对更丰富的业务场景,包括涉及异步解耦、顺序消息、分布式事务消息(交易系统、支付红包等)等大厂核心场景。