当前位置: 首页 > article >正文

RocketMQ 和 Kafka 有什么区别?

目录

RocketMQ 是什么?

RocketMQ 和 Kafka 的区别

在架构上做减法

简化协调节点

简化分区

Kafka 的底层存储

RocketMQ 的底层存储

简化备份模型

在功能上做加法

消息过滤

支持事务

加入延时队列

加入死信队列

消息回溯

总结


来源:面试官:RocketMQ 和 Kafka 有什么区别?


作为一个程序员,假设你有 A、B 两个服务,A 服务发出消息后,不想让 B 服务立马处理到。而是要过半小时才让 B 服务处理到,该怎么实现?

这类延迟处理消息的场景非常常见,举个例子,比如我每天早上到公司后都会点个外卖,我希望外卖能在中午送过来,而不是立马送过来,这就需要将外卖消息经过延时后,再投递到商家侧。

图片

那么问题就来了,有没有优雅的解决方案?当然有,没有什么是加一层中间层不能解决的,如果有,那就再加一层。这次我们要加的中间层是消息队列 RocketMQ

图片

RocketMQ 是什么?

RocketMQ 是阿里自研的国产消息队列,目前已经是 Apache 的顶级项目。和其他消息队列一样,它接受来自生产者的消息,将消息分类,每一类是一个 topic消费者根据需要订阅 topic,获取里面的消息。

图片

是不是很像我们上篇文章里提到的消息队 Kafka,那么问题很自然就来了,既然都是消息队列,那它们之间有什么区别呢

RocketMQ 和 Kafka 的区别

RocketMQ 的架构其实参考了 Kafka 的设计思想,同时又在 Kafka 的基础上做了一些调整。

图片

这些调整,用一句话总结就是,"和 Kafka 相比,RocketMQ 在架构上做了减法,在功能上做了加法"。我们来看下这句话的含义。

在架构上做减法

我们来简单回顾下消息队列 Kafka 的架构。kakfa 也是通过多个 topic 对消息进行分类。

图片

  •  为了提升单个 topic 的并发性能,将单个 topic 拆为多个 partition

图片

  • 为了提升系统扩展性,将多个 partition 分别部署在不同 broker 上。

  • 为了提升系统的可用性,为 partition 加了多个副本。

  • 为了协调和管理 Kafka 集群的数据信息,引入Zookeeper作为协调节点。

图片

Kafka 已经是非常强的消息队列了,我们来看下 RocketMQ 在 Kafka 架构的基础上,还能玩出什么花样来。

简化协调节点

Zookeeper 在 Kafka 架构中


http://www.kler.cn/a/488082.html

相关文章:

  • 【数据结构】航班查询系统:链表的实际运用
  • 使用ElasticSearch查询
  • [笔记] 使用 Jenkins 实现 CI/CD :从 GitLab 拉取 Java 项目并部署至 Windows Server
  • 精度论文:【Coordinate Attention for Efficient Mobile Network Design】
  • 【网络协议】开放式最短路径优先协议OSPF详解(四)
  • Python入门教程 —— 网络编程
  • 【Maui】导航栏样式调整
  • LLaMA-Factory web微调大模型并导出大模型
  • 计算机网络基础——网络协议
  • 科大讯飞Java面试题及参考答案 (120道-上)
  • MySQL8 使用 ProxySQL 来实现 MySQL 主从同步的读写分离和负载均衡
  • 一分钟了解git全局配置
  • 03_Redis基本操作
  • CTF随题思路—MiscMeowMeowMeow
  • 【广西乡镇界】arcgis格式shp数据乡镇名称和编码2020年内容测评
  • Attention系列笔记
  • JAVA2-类与对象编程(1)
  • vue如何实现动态路由?
  • 排序算法 C语言
  • macOS安装nvm
  • 【PPTist】查找替换、绘制文本框
  • 定位,用最通俗易懂的方法2:TDOA与对应的CRLB
  • 【Linux-多线程】-线程安全单例模式+可重入vs线程安全+死锁等
  • Clojure语言的多线程编程
  • Apache Hudi vs Delta Lake vs Apache Iceberg
  • Element UI与Element Plus:深度剖析