rocketmq概述

rocketMq是一款阿里开源的消息中间件,在不久之前刚成为了apache的顶级项目。在它的源码里面,相信有不少值得我们学习的地方

这样的一个优秀的开源项目,我们可以首先来看下其主要部件及模块,主要部件有:

rocketmq概述

NameSrv:rocketMq的服务注册中心,服务的注册和发现全靠它。它相当于zookpeer在dubbo中的作用,而rocketMq为什么去ZK则在后续NameSrv的时候说明。
Broker:rocketMq的核心模块,消息的接受,存储与推送都是靠他实现。
Producer:消息提供者,产生消息并推送到Broker上
Consumer:消息消费者,从Broker上消费消息。

接下来我们可以看下源码主要模块:
rocketmq-broker:整个mq的核心,broker的实现,消息的接受,存储与推送都是靠他实现。并调用store服务对消息进行处理。
rocketmq-client:mq网络通信客户端,各部件的网络通讯的具体实现都在里面,而网络通讯功能基于remoting。
rocketmq-filtersrv:消息过滤服务,可以实现进行消息过滤。
rocketmq-namesrv:服务注册中心,类似于其他RPC框架里的ZK功能,NameSrv的具体实现。
rocketmq-common:各模块通用的功能及代码。
rocketmq-remoting:mq的底层通信实现,所有服务间的网络通讯都基于此模块。使用了netty框架,至于netty的相关东西,不在这个系列的文章介绍。
rocketmq-store:存储层实现,同时包括了索引服务,高可用HA服务实现。

其他模块后续如有必要再进行介绍,主要功能及流程,用了上述的这些模块。
而部件与主要模块的对应关系如下:
NameSrv:namesrv,client(remoting)
Broker:broker,client(remoting),store
Producer:client(remoting)
Consumer:client(remoting)

而进行源码学习的时候,我将对部件 NameSrv -》Producer -》Broker -》Consumer 的顺序进行学习,但对于必须的基本模块来说,我会预先叙述,如,所有部件都要进行网络通讯,所以会先说remoting,再进行NameSrv的介绍。例如讲Broker之前也会先对store进行学习。
而在学习前,我们也应该带着问题去看,这样才可以更深入的了解具体的一些实现,例如:
1.rocketMq为什么要去Zk,用自己的NameSrv?
2.rocketMq网络通讯是怎么通过实现?
3.rocketMq的消息存储和消费跟其他消息中间件(如kafka)有什么不同?
4.rocketMq是怎么实现顺序消费的,有没什么问题?
等等
那接下来,就让我们去进入rocketMq的源码世界

相关文章: