RocketMQ架构原理详解(4大工作原理设计图解)

RocketMQ架构原理详解(4大工作原理设计图解)-mikechen

RocketMQ简介

RocketMQ是阿里研发的一个队列模型的消息中间件,后开源给apache基金会成为了apache的顶级开源项目。

RocketMQ具备:纯JAVA实现、具有高性能、高可靠、高实时、分布式等特点,在生产环境有大量的应用。

 

RocketMQ架构

RocketMQ架构,如下图所示:

RocketMQ架构原理详解(4大工作原理设计图解)-mikechen

RocketMQ架构:主要由NameServer、Broker、Producer以及Consumer四部分构成,下面分别详解@mikechen

 

NameServer

1.NameServer简介

NameServer是一个功能齐全的服务器,其角色类似Dubbo中的Zookeeper,但NameServer与Zookeeper相比更轻量。

 

2.NameServer作用

NameServer的主要功能是为整个MQ集群提供服务协调与治理,具体就是记录维护Topic、Broker的信息,及监控Broker的运行状态。

 

3.NameServer功能

主要包括两个功能,如下图所示:

RocketMQ架构原理详解(4大工作原理设计图解)-mikechen

1)Broker管理

  • NameServer接受Broker集群的注册信息,并且保存下来作为路由信息的基本数据;
  • 然后提供心跳检测机制,检查Broker是否还存活;

2)路由信息管理

每个NameServer将保存关于Broker集群的整个路由信息,Producer和Conumser通过NameServer,就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。

 

Producer

Producer,就是消息生产者,负责产生消息,如下图所示:

RocketMQ架构原理详解(4大工作原理设计图解)-mikechen

生产者向消息队列中写入消息,根据不同的业务场景需要采用不同的写入策略,比如:

  • 同步发送;
  • 异步发送;
  • 延迟发送;
  • 发送事务消息等;

Producer通过MQ的负载均衡模块,选择相应的Broker集群队列进行消息投递。

 

Broker

Broker消息服务器,作为Server提供消息核心服务, 它接收并存储Producer生产的消息。

如下图所示:

RocketMQ架构原理详解(4大工作原理设计图解)-mikechen

Broker的核心功能包含:

  1. 接收 Producer 发过来的消息;
  2. 处理 Consumer 的消费消息请求;
  3. 消息的持 久化存储;
  4. 消息的 HA 机制;
  5. 服务端过滤功能等 ;

官网上有数据显示:具有上亿级消息堆积能力,同时可严格保证消息的有序性。

Broker配置,如下图所示:

RocketMQ架构原理详解(4大工作原理设计图解)-mikechen

 

Consumer

Consumer,即消息消费者,负责消费消息。

如下图所示:

RocketMQ架构原理详解(4大工作原理设计图解)-mikechen

Consumer也由用户部署,一般是后台系统负责异步消费。

Consumer功能包含:

1.PUSH方式消费

顾名思义,就是推的意思,就是当MQ收到生产者产生的消息的时候,会主动将消息推送到消费者进行消费,这种模式就叫push。

2.PULL方式消费

push是MQ主动给消费者推消息,那么pull呢?刚好跟push相反,就是消费者主动去MQ中拉取消息。

完全由业务系统去控制,定时拉取消息,指定队列消费等等,当然这里需要业务系统去根据自己的业务需求去实现。

3.集群和广播消费

除此之外,还支持集群消费和广播消息消费,以及提供实时的消息订阅机制。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法