消息中间件之RocketMQ源码分析(九)

Namesrv

Namesrv核心数据结构和API.

Namesrv中保存的数据被称为Topic路由信息,Topic路由决定了Topic消息发送到哪些Broker,
消费者从哪些Broker消费消息,那么路由信息都包含哪些数据呢?路由数据结构的实现代码都在RouteInfoManager类中
消息中间件之RocketMQ源码分析(九)_第1张图片

  • BROKER_CHANNEL_EXPIRED_TIME:Broker存活的事件周期,默认为120s
  • topicQUeueTable:保存Topic和队列的信息,也叫真正的路由信息。一个Topic全部的Queue可能分布在不同的Broker中,也可能分布在同一个Broker中
  • brokerAddrTable:存储了Broker名字和Broker信息的对应关系
  • clusterAddrTable:集群和Broker的对应关系
  • brokerLiveTable:当前在线的Broker地址和Broker信息的对应关系
  • filterServerTable:过滤服务器信息

Namesrv支持的API

消息中间件之RocketMQ源码分析(九)_第2张图片

Namesrv支持的全部API在DefaultRequestProcessor类中

  • RequestCode.REGISTER_BROKER:Broker注册自身信息到Namesrv
  • RequestCode.UNREGISTER_BROKER:Broker取消注册自身信息到Namesrv
  • RequestCode.GET_ROUTEINFO_BY_TOPIC:获取Topic路由信息
  • RequestCode.WIPE_WRITE_PERM_OF_BROKER:删除Broker的写权限
  • RequestCode.GET_ALL_TOPIC_LIST_FROM_NAMESERVER:获取全部Topic名字
  • RequestCode.DELETE_TOPIC_IN_NAMESRV:删除Topic信息
  • RequestCode.UPDATE_NAMESRV_CONFIG:更新Namesrv配置,当前配置是实时生效的
  • RequestCode.GET_NAMESRV_CONFIG:获取Namesrv配置

Namesrv和Zookeeper比较

曾几何时,RocketMQ也采用Zookeeper作为协调者,但是繁杂的运行机制和过多的依赖导致RocketMQ最终完全重新开发了一个零依赖、更简洁的Namesrv来替换
消息中间件之RocketMQ源码分析(九)_第3张图片

你可能感兴趣的:(消息中间件,rocketmq,java)