kafka和rocketmq的比较差异

原创
06/11 16:01
阅读数 96
  1. rocketmq的注册中心是基于NameService的,而kafka的注册中心是基于zk
    1. NameService没有zk的功能丰富,从组件上来说它更轻量级
    2. NameService没有监听机制,它通过心跳来维护自己与broker之间的联系
    3. Zk的实现是通过一个持久节点locker节点来创建临时节点znode,并且zk的特性是是强一致性的,生成的znode是有序自增的
    4. Zk通过创建监听比自己小的节点,和惊群效应实现
    5. NameService存储的是topicbroker的映射关系,数据存储不复杂
  2. Kafka在数据可靠性上不如rocketmq
    1. Kafka支持异步刷盘和异步复制,rocketmq支持同步异步刷盘、同步异步复制
  3. 数据传输量上kafka优于rocketmq
    1. Kafka的数据传输是百万级别的,单点的rocketmq的传输速率是7万左右的水平
    2. Kafka数据传输效率高的一个特点是基于磁盘顺序写
    3. 第二个特点kafka在发送消息到broker时,是基于一个批量发送的理念(巧妙的利用了磁盘I/O的原理,减少磁盘IO次数,提高效率)。这样的好处是一次发送的量大
    4. 坏处是增大了消息丢失的风险,并且在发送前会堆积大量的缓存,容易对gc造成压力
    5. Kafkarocketmq都是运用了零拷贝的原理(Zero Copy)。主要是通过SendFIle的形式实现(简单的概述就是传输文件)。与传统传输相比,减少了从内核缓冲区到用户缓冲区,以及用户缓冲区到socket缓冲区的两个过程
    6. 传统IO    硬盘-》内核缓冲区-》用户缓冲区-socket缓冲区
    7. sendFile    硬盘-》内核缓冲区-socket缓冲区
  4. 两者消息重投机制不同
    1. Kafka不支持消息失败重投
    2. Rocketmq支持消息的失败重投
    3. 所以rocketmq在消息的可靠性上更高

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部