@@ -46,6 +46,109 @@ clusters: # 集群节点地址列表
4646- 各节点 `plugin.yaml` 配置需根据实际角色(核心/工作)分别设置
4747- 启动顺序建议先启动核心节点,再启动工作节点
4848
49+ # # 运行流程图
50+
51+ # ## 集群节点注册泳道图
52+
53+ ` ` ` mermaid
54+ sequenceDiagram
55+ autonumber
56+ participant WorkerN as 工作节点N
57+ participant Cluster as 集群插件
58+ participant Core as 核心节点<br/>(Coordinator)
59+
60+ rect rgb(230, 245, 255)
61+ Note over WorkerN,Core: 节点注册阶段
62+ WorkerN->>Cluster: 1. 节点启动
63+ Cluster->>Cluster: 2. 加载配置<br/>(clusters地址列表)
64+
65+ Cluster->>Core: 3. HTTP POST /register<br/>(节点信息+认证凭证)
66+
67+ Core->>Core: 4. 验证节点身份
68+ alt 验证通过
69+ Core->>Core: 5a. 注册到节点列表<br/>分配NodeID
70+ Core-->>Cluster: 6a. HTTP 200 OK<br/>(集群配置+节点列表)
71+ Cluster->>Cluster: 7a. 更新本地状态表
72+ Note over WorkerN,Core: 节点加入集群成功
73+ else 验证失败
74+ Core-->>Cluster: 6b. HTTP 403 Forbidden
75+ Cluster->>WorkerN: 7b. 注册失败,服务退出
76+ end
77+ end
78+
79+ rect rgb(255, 245, 230)
80+ Note over WorkerN,Core: 状态同步阶段
81+ Core->>Cluster: 8. 状态广播<br/>(节点加入事件)
82+ Cluster->>Cluster: 9. 更新集群拓扑
83+
84+ WorkerN->>Core: 10. 心跳检测
85+ Core-->>WorkerN: 11. 心跳响应
86+ end
87+ ` ` `
88+
89+ # ## 跨节点消息转发泳道图
90+
91+ ` ` ` mermaid
92+ sequenceDiagram
93+ autonumber
94+ participant PubClient as 发布者(节点1)
95+ participant Worker1 as 工作节点1
96+ participant Cluster1 as 集群插件(节点1)
97+ participant Core as 核心节点
98+ participant Cluster2 as 集群插件(节点2)
99+ participant Worker2 as 工作节点2
100+ participant SubClient as 订阅者(节点2)
101+
102+ rect rgb(230, 245, 255)
103+ Note over PubClient,SubClient: 消息发布阶段
104+ PubClient->>Worker1: 1. PUBLISH消息<br/>(topic: sensors/temp)
105+ Worker1->>Cluster1: 2. 消息路由请求
106+
107+ Cluster1->>Cluster1: 3. 目标节点判断<br/>(根据topic路由表)
108+ end
109+
110+ rect rgb(255, 245, 230)
111+ Note over Core,Worker2: 跨节点转发
112+
113+ alt 目标在本地
114+ Cluster1->>Worker1: 4a. 本地转发
115+ Worker1->>PubClient: 4b. 确认接收
116+ else 目标在远程节点
117+ Cluster1->>Core: 4c. HTTP POST /forward<br/>(消息+目标节点)
118+
119+ Core->>Core: 5. 路由决策
120+ Core->>Cluster2: 6. HTTP转发消息
121+
122+ Cluster2->>Worker2: 7. 本地投递
123+ Worker2->>SubClient: 8. 推送消息
124+
125+ SubClient-->>Worker2: 9. 确认接收
126+ Worker2-->>Cluster2: 10. 转发确认
127+ Cluster2-->>Core: 11. 返回确认
128+ Core-->>Cluster1: 12. 转发完成
129+ end
130+ end
131+
132+ rect rgb(255, 255, 230)
133+ Note over PubClient,SubClient: 队列策略处理
134+
135+ alt 队列策略=丢弃最新(queuePolicy=0)
136+ Cluster1->>Cluster1: 队列满时丢弃新消息
137+ else 队列策略=丢弃最旧(queuePolicy=1)
138+ Cluster1->>Cluster1: 队列满时丢弃旧消息
139+ end
140+ end
141+ ` ` `
142+
143+ # ## 流程说明
144+ 1. **核心节点启动** : 核心节点启动HTTP服务,等待工作节点连接
145+ 2. **工作节点注册** : 工作节点根据配置的clusters地址连接到核心节点并完成注册
146+ 3. **消息路由** :
147+ - 本地客户端直接转发
148+ - 远程客户端通过HTTP转发到对应节点
149+ 4. **状态同步** : Coordinator维护集群节点状态,处理节点加入/退出事件
150+ 5. **分布式分发** : Distributor根据队列策略管理消息分发
151+
49152# # 技术支持
50153- 作者:三刀(zhengjunweimail@163.com)
51154- 供应商:smart-mqtt
0 commit comments