自学内容网 自学内容网

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 架构中


原文地址:https://blog.csdn.net/oqkdws/article/details/145066993

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!