正文
Name Server 接收到 Broker 的注册请求后,会将该 Broker 的信息记录下来,并在自身的路由表中维护该 Broker 的路由信息。
总部接收到信息之后,就把该快递员的信息记录下来。
1.3 路由信息更新
如果一个 Broker 发生了变化,比如新增了一个 Broker 节点、删除了一个 Broker 节点或者修改了 Broker 的配置信息,那么该 Broker 会重新向 Name Server 发送注册请求,告知 Name Server 发生了变化。Name Server 接收到变化后会更新自身的路由表,保证路由信息的实时性和准确性。
总部会不断的更新快递员的信息,若是有新的快递员上班了,会增加信息。若是有快递员下班了,无法继续送货了就取消该快递员的信息,所以,总部的信息一直是实时的和最新的。
1.4 心跳检测
Broker会定期向已注册的 Name Server 发送心跳请求,提交并更新自己的信息,Name Server 可以据此检测 Broker 的状态是否正常。如果某个 Broker 长时间未响应心跳请求,Name Server 会将其标记为不可用,并从路由信息中移除,以保证客户端获取到的路由信息是最新的和可用的。
快递员需要每隔一段时间向总部发信息上报自己的工作状态,若是长时间没发送信息,那么就认为这个快递员偷懒了,或不能继续工作了,处于离线状态,就不会给他安排新的活了。
1.5 路由信息的提供
客户端在需要与 Broker 通信时,通过与 Name Server 交互获取路由信息。Name Server 会根据客户端的请求,提供相应的路由信息,包括 Broker 的地址和端口等。客户端可以根据路由信息选择合适的 Broker 进行通信。
若是有客户想发快递了。会在官网找到总部,然后提交自己想把快递发到哪里,然后总部会找到符合条件的快递员。进行发货。
2、路由查询
客户端(包括生产者和消费者)需要与 Broker 通信时,首先要获取 Broker 的路由信息,以确定消息应该发送到哪个 Broker 或者从哪个 Broker 消费消息。客户端通过与 Name Server 交互,可以获取到所需的 Broker 信息,包括该 Broker 所在的地址和端口等。
那么路由查询具体如何执行的呢?
2.1 客户端发送路由查询请求
客户端在需要与 Broker 通信时,首先向集群中的任意一个 Name Server 发送路由查询请求。查询请求中通常包含了客户端所需操作的主题(Topic)信息。
客户想找快递员时发快递的时候,会在官网找相关信息。同时会提交自己想寄快递的"主题",可以理解为种类。