美文网首页
rocketMq简介以及和kafka对比

rocketMq简介以及和kafka对比

作者: matthewfly | 来源:发表于2020-12-07 14:56 被阅读0次

rocketMq是由阿里开源的,后面交由Apache维护,先看下rocketMq的物理架构。


rmq-basic-arc.png

rocketMq参照了kafka的设计,所以架构上和kafka还是挺相似。但是既然重新开发了rocketMq,一定有其不同和优势。
rocketMq由producer、broker、name server、consumer构成。

  • producer生产者,从name server获取broker地址、topic信息,将数据发送到broker。
  • broker,由producerGroup标识一个集群,接收并存储消息,根据id分为master、slave节点,master节点可读可写,slave可配置读。
  • name server,维护broker节点信息,生产者、消费者都从name server获取topic的路由信息。
    -consumer,消费者从name server获取路由信息,连接到broker消费数据。也有consumer group分组,默认和kafka一样均分消息消费,也可以每个消费者全量消费。
  • Message,不同于kafka,一个topic下划分为不同队列,并且topic的消息统一混合存储在一个文件,在该文件基础上构建索引。
对比:
  1. 相比于kafka集群元数据保存在zookeeper,由zk来维护数据的一致性,当然broker controller 也担负了重要职责;rocketMq则是将元数据保存在name server,并且由各broker节点负责更新。
  2. kafka在leader挂掉后,可以从flower中选举;rocketMq中broker身份则是固定,master挂掉后,数据会推送给其他master。
  3. kafka各个partition单独存储,并发写入更快,但partition过多时,访问磁盘需要寻道,使得io速度降低。
  4. kafka按照partition分开存储消息,消息在单个partition内部顺序存储;rocketMq将topic所有队列消息混合存储在单个文件,在该文件基础上构建索引,所以查询时要多一个步骤。
  5. rocketMq支持单个消息查询,可根据id,也可根据消息内容查询。
  6. rocketMq的消息顺序性和kafka几乎一致,是建立在单队列的基础上的,对应kafka的单分区消息顺序性。
RocketMq主要优点:
  • 消息支持事务,包括多系统(两个以上)之间的事务性。
  • 消息支持tag级别的过滤,减少不必要的数量流。

参考:
http://rocketmq.apache.org/docs/motivation/
https://www.jianshu.com/p/c474ca9f9430
https://blog.csdn.net/damacheng/article/details/42846549

相关文章

网友评论

      本文标题:rocketMq简介以及和kafka对比

      本文链接:https://www.haomeiwen.com/subject/vfbzwktx.html