- broker主要有以下几大功能
- 接受客户端发送到消息,并存储
- 接受客户端的消费请求,返回消息数据
- consumergroup消费进度存储、查询
- topic配置管理
- 一些其他的配置管理、查询:topic创建、删除、修改,broker配置查询、修改,消息查询,broker运行状态,producer、consumer连接,消费进度等待
- broker额外存储的持久化数据,默认存储路径为$HOME/store/config
这里共有4种文件- topic.json存储的是topic创建的时候的一些属性信息,包括topic名字,权限,queue的数量等等。
- consumerOffset.json存储了topic@consumergroup对应的queue:offset
- delayOffset.json存储了延时消息的queue:offset
- subscriptionGroup.json存储了consumergroup对应的brokerid等信息
-
有一点需要说明的是,如果拉取的消息>内存*40,那么会返回 建议客户端从slave拉取的标志。
long diff = this.getMaxPhyOffset() - maxPhyOffsetPulling;//commitlog最大偏移量 - 当前正在拉取的最大偏移量 long memory = (long) (StoreUtil.TotalPhysicalMemorySize * (this.messageStoreConfig.getAccessMessageInMemoryMaxRatio() / 100.0)); //物理内存*40% getResult.setSuggestPullingFromSlave(diff > memory);//建议是否从slave拉取
- 其余源码分析参见:http://blog.csdn.net/a417930422/article/details/50700276
- broker高可用,其自身的高可用参见存储层的高可用,broker挂了并不影响其他broker,至于和consumer和producer之间的高可用到相关模块再说
- namerserver挂了对broker的影响:
- 由于broker默认每30秒向所有的nameserver进行注册
- 如果nameserver挂了,那么broker会将连接移除
- 下次注册时会继续尝试连接该nameserver,但是会连接失败,所以,broker端会定时的输出连接失败的日志
6.broker
最新推荐文章于 2021-07-19 23:11:07 发布