rocketmq之源码分析broker入口BrokerController解析(十五)

本文详细解析RocketMQ中BrokerController的核心功能,包括配置管理、消息存储、服务处理、任务队列及策略分类等内容,阐述了其在消息传递、消费者与生产者管理中的关键作用。

broker的入口管理服务类BrokerController,在该类中定义并初始化了整个broker需要的核心操作。broker在接口请求处理的过程中,涉及到四方服务的数据交互:namesrv服务,进行发布当前broker的信息,订阅并更新对应的配置信息;producer服务,接受producer的消息发送,同时维持着对客户端的监听,如果客户端发生异常,需要有自动任务处理并通知内部的其他功能业务模块;consumer服务,需要接受consumer的拉取请求,同时维持着相应的心跳机制,如果异常则通知对应的业务功能;还有就是高可用HA服务,该服务支撑master-slave模式,支撑内部数据同步及心跳。

根据上面的说明BrokerController的内部功能维护的模块属性有:

一,配置分类:

    1,BrokerConfig:整个broker的配置,根据配置信息设置必要的属性,核心的有当前broker的名称,分组,是否master,历史内容的存储位置等

    2,NettyServerConfig:broker作为服务端启动nettyServer的配置

    3,NettyClientConfig:broker作为客户端的NettyClient的配置

    4,MessageStoreConfig:消息存储的核心配置,主要体现消息的存储位置,单个文件大小,内存刷盘频率等事关性能的配置

二,管理分类:

    1,ConsumerOffsetManager:consumer端的消费offset的集中管理,主要的关系就是topic,group,queueid,offset

    2,ConsumerManager:consumer的管理和维护,提供consumer的注册,取消,关闭等,主要的关系是group,consumerBroupInfo

    3,ConsumerFilterManager:consumer的过滤管理,针对consumer端的消息过滤,主要关系是topic,consumer,expression

    4,ProducerManager:producer的管理和维护,提供producer的注册,取消,关闭等,主要关系是group,channel,ClientChannelInfo

    5,FilterServerManager:基于shell的服务端过滤管理

    6,BrokerStatsManager:broker的服务状态管理,实时记录broker的操作性能

    7,TopicConfigManager:topic的配置管理,主要提供根据topic获得对应的topic的配置信息,涉及读写队列数量、操作权限等

三,服务处理分类:

    1,ClientHouseKeepingService:基于netty的框架实现,主要监听客户端的网络操作,网络的链接、关闭、异常、空闲等事件操作

    2,PullMessageProcessor:针对consumer的请求拉取消息的事件处理,基于netty框架,解析并执行内部业务功能,最后将数据返回

    3,PullRequestHostService:针对客户端请求的服务保持,是java的Thread模式,主要是监听消息有新的时候通知客户端执行拉取操作

    4,MessageArrivingListener:新消息到达的监听服务,联合PullRequestHostService进行消息到达的通知功能

    5,Broker2Client:broker对请求处理的封装类,处理对应的操作,主要有通知,重置,转换,状态等

    6,BrokerOuterAPI:broker请求外部的封装,主要是通过netty的底层通信完成和namesrv的交互

四,任务队列分类:

    1,SlaveSynchronize:salve的同步操作,如果broker是slave角色,执行同步操作,主要同步元数据信息

    2,BlockingQueue:各种队列,主要是处理发送,拉取,查询等操作,内部是多线程队列机制提高并发处理

    3,ExecutorService:各种线程池服务,和队列一一对应关系,执行多线程操作的配置

五,核心功能分类:

    1,MessageStore:消息的存储功能,核心及高性能的消息存储

    2,RemoteServer:broker作为服务的nettyServer的启动

    3,RemoteServer:broker的两级服务,一个是快速提供服务操作,只是没有pull的事件处理

六,策略分类:

    1,BrokerStats:broker的各种操作预警机制,主要有记录操作数量

    2,BrokerFastFailure:broker的快速失败策略,主要针对系统的请求,开启开功能及时清理过期的请求,避免请求堆积

    3,FileWatchService:文件监听服务,如果netty提供ssl安全机制,则加载对应的安全key并执行安全机制

    4,TransactionMessageCheckService:针对事物消息的验证服务,后面讲事物处理的时候再一块讲解

    5,TransactionMessageService:事物消息服务,处理接受的内容是事物消息

说明:RocketMQ的内部对象,为了达到性能及最优内存使用,所有的对象在初始化时都明确指定对象的大小,在进行部分对象的序列化时明确指定一些不需要存储的内容是关键字标示不序列化操作。对于并发请求的处理内部采用线程池加请求队列的组合,对于后台持续扫描的处理采用Thread的单独后台运行机制,针对任务调度的有两种实现,一种是基于任务调度线程池的形式执行任务,一种是基于jdk原生的timer的任务执行。在设计层面,做足够的隔离和封装,相关之间关系透明,层次严谨。

转载于:https://my.oschina.net/wangshuaixin/blog/3059222

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值