Update rocketmq-nameserver-broker.md

pull/108/head
Yang Libin 3 years ago committed by GitHub
parent 6aa5b147d0
commit 445055ca02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,4 +1,4 @@
nameserver如何与broker进行通信的?
# RockerMQ Nameserver 如何与 Broker 进行通信的?
nameserver 每隔 10s 扫描一次 Broker移除处于未激活状态的 Broker
@ -6,7 +6,7 @@ nameserver每隔10s扫描一次Broker移除处于未激活状态的Broker
`this.scheduledExecutorService.scheduleAtFixedRate(NamesrvController.this.routeInfoManager::scanNotActiveBroker, 5, 10, TimeUnit.*SECONDS*);`
```
```java
public int scanNotActiveBroker() {
int removeCount = 0;
Iterator<Entry<String, BrokerLiveInfo>> it = this.brokerLiveTable.entrySet().iterator();
@ -31,7 +31,7 @@ broker每隔30秒会向集群中所有的NameServer发送心跳包
核心代码:
```
```java
this.scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
@Override
@ -45,7 +45,7 @@ this.scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
}, 1000 * 10, Math.max(10000, Math.min(brokerConfig.getRegisterNameServerPeriod(), 60000)), TimeUnit.MILLISECONDS);
```
```
```java
public synchronized void registerBrokerAll(final boolean checkOrderConfig, boolean oneway, boolean forceRegister) {
TopicConfigSerializeWrapper topicConfigWrapper = this.getTopicConfigManager().buildTopicConfigSerializeWrapper();
@ -71,7 +71,7 @@ public synchronized void registerBrokerAll(final boolean checkOrderConfig, boole
}
```
org.apache.rocketmq.namesrv.processor.DefaultRequestProcessor 是网络处理器解析请求类型,如果请求类型为`*RequestCode.REGISTER_BROKER`则请求最终转发到org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager#registerBroker*
org.apache.rocketmq.namesrv.processor.DefaultRequestProcessor 是网络处理器解析请求类型,如果请求类型为`*RequestCode.REGISTER_BROKER`,则请求最终转发到 org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager#registerBroker\*
代码太多,文字来描述一下:
@ -83,7 +83,7 @@ org.apache.rocketmq.namesrv.processor.DefaultRequestProcessor 是网络处理器
根据 topicConfig 创建 QueueData 数据结构然后更新 topicQueueTable
```
```java
private void createAndUpdateQueueData(final String brokerName, final TopicConfig topicConfig) {
QueueData queueData = new QueueData();
queueData.setBrokerName(brokerName);
@ -110,7 +110,7 @@ private void createAndUpdateQueueData(final String brokerName, final TopicConfig
第四步:更新 BrokerLiveInfo,存储状态正常的 Broker 信息表BrokerLiveInfo 是执行路由删除操作的重要依据。
```
```java
BrokerLiveInfo prevBrokerLiveInfo = this.brokerLiveTable.put(brokerAddr,
new BrokerLiveInfo(
System.currentTimeMillis(),
@ -121,7 +121,7 @@ BrokerLiveInfo prevBrokerLiveInfo = this.brokerLiveTable.put(brokerAddr,
第五步:注册 Broker 的过滤器 Server 地址列表,一个 Broker 上会关联多个 FilterServer 消息过滤服务器。如果此 Broker 为从节点,则需要查找该 Broker 的主节点信息,并更新对应的 masterAddr 属性
```
```java
if (MixAll.MASTER_ID!= brokerId) {
String masterAddr = brokerData.getBrokerAddrs().get(MixAll.MASTER_ID);
if (masterAddr != null) {
@ -150,7 +150,7 @@ NameServer如何剔除失效的Broker
第一步:申请写锁,移除 brokerLiveTable、filterServerTable 中 Broker 相关的信息
```
```java
this.lock.writeLock().lockInterruptibly();
BrokerLiveInfo brokerLiveInfo = this.brokerLiveTable.remove(brokerAddr);
log.info("unregisterBroker, remove from brokerLiveTable {}, {}",brokerLiveInfo != null ? "OK" : "Failed",brokerAddr);

Loading…
Cancel
Save