13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

RocketMQ的基础概念和架构-RocketMQ知识体系(一)

前面几篇文章分享了kafka 相关的实现逻辑,kafka在大吞吐量方面有较好的表现,但是有时候我们需要实现比较复杂的业务逻辑从而对于吞吐量方面要求不是太高,这个时候我们就可以选择RocketMQ.

创新互联建站为您提适合企业的网站设计 让您的网站在搜索引擎具有高度排名,让您的网站具备超强的网络竞争力!结合企业自身,进行网站设计及把握,最后结合企业文化和具体宗旨等,才能创作出一份性化解决方案。从网站策划到成都网站建设、网站制作, 我们的网页设计师为您提供的解决方案。

有了Kafka 为什么还要RocketMQ?

我们知道kafka 的性能非常好,吞吐量也非常大。Kafka单机写入 TPS 号称在百万条/秒;追求性能的话,Kafka单机性能更高。这也依靠基于他的顺序写入,Memory Mapped Files 技术 和消费者端的zero copy。(kafka基于sendfile实现Zero Copy,直接从内核空间(DMA的)到内核空间(Socket的),然后发送网卡。)但是对平常工作中各种复杂的应用场景及对数据可靠性要求严格的业务就有点力不从心了。我们从以下几个方面分析:

【数据可靠性方面】

RocketMQ所支持的同步方式提升了数据的可靠性,RocketMQ支持异步/同步刷盘;异步/同步Replication;Kafka使用异步刷盘方式,异步Replication。

【消息顺序性】

Kafka 某些配置下,支持消息顺序,但是一台Broker宕机后,就会产生消息乱序;

RocketMQ支持严格的消息顺序,在顺序消息场景下,一台Broker宕机后,

发送消息会失败,但是不会乱序;

【关于定时/延时消息】

Kafka不支持定时消息;

RocketMQ支持定时消息;

【关于分布式事务消息】

Kafka不支持分布式事务消息;RocketMQ支持分布式事务消息

【关于消息查询机制】

Kafka不支持消息查询。

RocketMQ支持根据Message Id查询消息,也支持根据消息内容查询消息

【关于Broker 的设计上】

当broker里面的topic的partition数量过多时,kafka的性能却不如rocketMQ。

kafka和rocketMq都使用文件存储,但是kafka是一个分区一个文件,当topic过多,分区的总量也会增加,kafka中存在过多的文件,当对消息刷盘时,就会出现文件竞争磁盘,出现性能的下降。一个partition(分区)一个文件,顺序读写。一个分区只能被一个消费组中的一个 消费线程进行消费,因此可以同时消费的消费端也比较少。

rocketMq所有的队列都存储在一个文件中,每个队列的存储的消息量也比较小,因此topic的增加对rocketMq的性能的影响较小。rocketMq可以存在的topic比较多,可以适应比较复杂的业务。

RocketMQ架构设计

RocketMq技术架构

RocketMQ架构上主要分为四部分,如上图所示:

RocketMq架构部署

RocketMQ 网络部署特点

NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。

结合部署架构图,描述集群工作流程:

模块间数据流转

生产-消费模型

生产消费流程


网站名称:RocketMQ的基础概念和架构-RocketMQ知识体系(一)
网页链接:http://cdbrznjsb.com/article/dhsojgp.html

其他资讯

让你的专属顾问为你服务