docs: update the architecture, README and related docs, drop the roadmap [SKIP TESTS]
This commit is contained in:
1 parent
103ef27ed3
commit
90b3ca4dad
10 files changed
+112
-181
No files matched your search
+16
-24
@@ -100,7 +100,9 @@ Web ──> openapi/v1.json
|
||||
|
||||
### 4.1 Fleet(通用节点框架)
|
||||
|
||||
组件、扩展点与接入方式见 [fleet/overview.md](fleet/overview.md),连接细节见 [fleet/link.md](fleet/link.md),更新见 [fleet/update.md](fleet/update.md)。原来的 `Monitor.Common` 和 `Monitor.NodeHost` 已经并入 Fleet:
|
||||
组件、扩展点与接入方式见 [fleet/overview.md](fleet/overview.md),连接细节见 [fleet/link.md](fleet/link.md),更新见 [fleet/update.md](fleet/update.md)。
|
||||
|
||||
> **实现状态**:`Fleet.Core`、`Fleet.Identity`、`Fleet.Rpc`、`Fleet.Link`、`Fleet.Hosting`、`Fleet.Enrollment.Client`、`Fleet.Server.*`(Abstractions、Enrollment、Link)和 `fleet-enroll` 已实现。`Fleet.Update`、`Fleet.Server.Releases`、`fleet-updater`、`fleet-release` 还只是设计(纯二进制方式的更新);容器节点的更新是宿主机上的 `monitor-update` 脚本和面板的 `ReleaseService`,见 [deployment.md](deployment.md)。原来的 `Monitor.Common` 和 `Monitor.NodeHost` 已经并入 Fleet:
|
||||
|
||||
| 原位置 | 现位置 |
|
||||
| --- | --- |
|
||||
@@ -143,30 +145,20 @@ Monitor.Protocol/
|
||||
|
||||
## 5. 模块化
|
||||
|
||||
### 5.1 Agent 与 Probe:模块组装
|
||||
### 5.1 Agent 与 Probe:组装
|
||||
|
||||
模块在 `Program.cs` 中**显式组装**,不使用 DI 容器,也不做反射扫描。连接、认证、重连、发件箱、状态同步都由 Fleet 提供,Monitor 只写业务模块:
|
||||
节点的组装点是 `AgentApp` 和 `ProbeApp`:在构造函数里**显式组装**,不使用 DI 容器,也不做反射扫描;没有全局状态,测试可以在同一进程里启动多个。连接、认证、重连、发件箱、状态同步都由 Fleet 提供,Monitor 只写业务:
|
||||
|
||||
```text
|
||||
Agent Program.cs
|
||||
identity = NodeIdentity.Load(dir) ← 由 fleet-enroll 生成
|
||||
link = FleetLink.ToServer(cfg, identity, AgentRpcContext.Default)
|
||||
.WithState<TaskSet>(…, taskReconciler) 期望任务集 → 调和
|
||||
.WithOutbox<RawChunk>(…, 64 MiB) 原始块可靠上报
|
||||
.On(monitor.test.run / monitor.test.cancel, …)
|
||||
peers = FleetLink.PeerListener(cfg.Listen, identity, ProbeRpcContext.Default) Probe 会话
|
||||
host = new ModuleHost(log)
|
||||
├─ link、peers (Fleet)
|
||||
├─ UdpMux / TcpAcceptor UDP/TCP/TLS 数据端口(Measurement 共享),按 (session, stream) 分发给监听方积木;AgentAdmission 提供重放、限速
|
||||
├─ ChunkModule 合并 Probe 与本端的列 → 切块 → link.Outbox
|
||||
└─ TestModule 按需测试的阶段编排
|
||||
|
||||
Probe Program.cs
|
||||
├─ FleetLink(到面板) 身份、hello、期望状态 probe_agents(Agent 列表)
|
||||
├─ PeerPool(Fleet) 每个 Agent 一个 FleetLink.ToPeer:认证、重连
|
||||
├─ TaskReconciler 每个会话各自的期望状态(与 Agent 相同的代码)
|
||||
├─ ColumnShipper 本端的列通过会话的 Outbox 发送(二进制通道 17)
|
||||
└─ TestModule
|
||||
AgentApp Probe(ProbeApp)
|
||||
FleetLink(到面板) FleetLink(到面板)
|
||||
状态 TaskSet、方法 monitor.test.* 状态 probe_agents(Agent 列表)、hello 带系统和构建信息
|
||||
发件箱 RawChunk(通道 16) 心跳带更新器的状态;monitor.update.* 通知
|
||||
心跳带更新器的状态;monitor.update.* AgentDirectory → 每个 Agent 一个 AgentConnection(点对点会话)
|
||||
PeerListener / PeerHub(Probe 会话) 会话内:线路任务集 line_task_set 的调和、角色、列块发件箱(通道 17)
|
||||
UdpMux / TcpAcceptor(数据端口)
|
||||
TaskManager / TestRunner / ChunkAssembler
|
||||
UpdateBridge(和宿主机更新器交换文件) UpdateBridge
|
||||
```
|
||||
|
||||
模块之间通过构造函数传入的接口或 `Channel<T>` 通信,禁止通过静态全局状态共享数据。
|
||||
@@ -349,6 +341,6 @@ M0 阶段先测出基线,之后作为 CI 的回归门槛(超出 10% 即失
|
||||
| 打包 | 提供 `tar.gz` 和 procd 脚本;包格式(ipk 或 apk)按目标 OpenWrt 版本提供 |
|
||||
| 更新 | `fleet-updater` 使用 procd 适配器;`keep_versions = 1`,下载前检查剩余空间,避免写满闪存 |
|
||||
|
||||
## 10. Web(待开发)
|
||||
## 10. Web
|
||||
|
||||
唯一输入是 `backend/openapi/v1.json`:用 `openapi-typescript` 生成类型,`openapi-fetch` 作为请求客户端;技术栈等前端立项时再决定。
|
||||
`web/` 是 npm workspaces:`display`(展示端,匿名可读)、`admin`(管理端)、`shared`(API 客户端、图表、组件、主题)。Vite 8、React 19、TypeScript,图表用 uPlot;唯一的契约是 `backend/openapi/v1.json`,用 `openapi-typescript` 生成类型(`npm run gen:api`)。颜色只能写在 `shared/theme/tokens.css`,由 stylelint 强制。详见 [web/README.md](../web/README.md)。
|
||||
Reference in new issue
Block a user