Advertisement

Nats 消息总线相关介绍(四):Topic 相关

阅读量:

Nats topic 订阅信息维护

Nats topic 订阅信息,按以下方式维护:

普通节点完成与路由节点的连接后会同步本地 topic 订阅信息给其。
路由系统中的每个普通节点都会被其所属的主域中的一个主域名所注册并赋予相应的 IP 地址。
当某个主域名的所有子域名均被注册完毕时该域名会被系统自动分配给未被注册的子域名。
在实际运行过程中如果发现某个主域名仍然未被正确分配则需要立即采取措施修复该问题。

以上过程,总结下:

  • INFO 命令:从本地订阅相关信息,并全面同步目标网络设备。
  • SUB 命令:客户端端从当前本地网络设备出发进行同步。
  • RS+ 命令:通过实时共享加成的方式实现当前本地网络设备与全部共享网络设备的同步连接。

INFO 命令

以下情况出发 INFO 命令生成:

当新的连接到来时,路由节点将向其发送本的INFO命令。
当服务器启动时→执行路由建立过程→进入循环处理新连接→在route.go的第1401行创建新的网络路径。

  1. 普通节点将与初始路由节点发起连接,并向本体发送INFO命令
  • Server启动时触发开始路由发现流程 → 开始处理流量请求 → 进入路由接受循环 → 发起流量请求到目标路径 → 尝试与该路由建立连接 → 创建新的流量规则(route.go:1401)

实体在接收到INFO消息时会自动建立内部的路由机制,并进一步优化相关路由信息。其中,在route.go文件中,函数client.processInfo被映射为函数client.processRouteInfo

当节点接收到INFO消息时(如图4所示),它会执行处理流程并随后向所有其他节点发送该命令

通过 INFO 命令,一个节点加入 Nats 集群后,订阅信息会集群内全量同步

SUB 命令

在 parseSub (parser.go:646) 中处理:

  • 本地管理注册信息
  • 向所有路由节点广播其订阅信息(使用 RS+)(client.go:2578 srv.updateRouteSubscriptionMap)

RS+ 命令

在 processRemoteSub (parser.go:653) 中处理:

  • 本地维护远端的订阅信息

全部评论 (0)

还没有任何评论哟~