画图工具参考: IDEA UML画图插件
一、心跳处理
二、路由删除
1)Broker 每隔30s向 NameServer 发送一个心跳包,心跳包包含 BrokerId , Broker 地址, Broker 名称, Broker 所属集群名称、 Broker 关联的 FilterServer 列表。
2)如果 Broker 宕机, NameServer 无法收到心跳包,此时 NameServer 如何来剔除这些失效的 Broker 呢?
3)NameServer 会 每隔10s扫描 brokerLiveTable 状态表,如果 BrokerLive 的lastUpdateTimestamp的时间戳距当前 时间超过120s,则认为 Broker 失效,移除该 Broker ,关闭与 Broker 连接,同时更新 topicQueueTable 、 brokerAddrTable 、 brokerLiveTable 、 filterServerTable 。
4)RocketMQ有两个触发点来删除路由信息:
NameServer定期扫描brokerLiveTable检测上次心跳包与当前系统的时间差,如果时间超过 120s,则需要移除broker。
Broker在正常关闭的情况下,会执行unregisterBroker指令