refactor!: rename the project from Monitor to MoShiro [CI]
ci/woodpecker/push/main-amd64-build Pipeline was successful

Namespaces, assemblies, solution, binaries, images, systemd units, config paths, environment variables, protocol methods and the Linux user are all renamed. Breaking: existing databases, node identities and installed units must be recreated.
This commit is contained in:
justme committed 2026-10-07 02:03:25 +08:00
1 parent 27ac7fb787
commit 2e146d4da7
309 files changed
+1565 -1572

No files matched your search

+6 -6
View File
@@ -3,7 +3,7 @@
## 1. 原则
- **只采集原始数据**:逐包、逐消息、逐事件,TCP 另加周期性的内核采样;不计算任何统计,解释全部放在 [analysis.md](analysis.md)。
- **一处声明,处处生效**:采集方法(Kind)由积木组合**声明**而成。Probe 和 Agent 共用同一套积木(`backend/shared/Monitor.Measurement`)。
- **一处声明,处处生效**:采集方法(Kind)由积木组合**声明**而成。Probe 和 Agent 共用同一套积木(`backend/shared/MoShiro.Measurement`)。
- **密度即参数**:频率、包大小、采样间隔全部是任务参数,由 API 下发,不需要改代码。
## 2. 任务模型
@@ -26,7 +26,7 @@ schedule continuous 持续运行,按时间切块
## 3. Kind 目录:积木组合
### 3.1 积木(`Monitor.Measurement`,只有新增积木才需要写代码)
### 3.1 积木(`MoShiro.Measurement`,只有新增积木才需要写代码)
| 类别 | 积木 | 参数示例 |
| --- | --- | --- |
@@ -39,7 +39,7 @@ schedule continuous 持续运行,按时间切块
**两种角色互相独立**:连接角色(Probe 永远是拨号方,适配 NAT)与数据角色(发送端、接收端、回显端,由 `direction` 决定)无关。每种积木只实现一次,Probe 和 Agent 共用。
### 3.2 Kind 声明(`Monitor.Protocol/Catalog/Kinds`)
### 3.2 Kind 声明(`MoShiro.Protocol/Catalog/Kinds`)
```csharp
public static readonly KindSpec TcpEcho = new(
@@ -109,7 +109,7 @@ RawChunk
- **列定义写在块头中**:新增列或新增 Kind 时,**不需要升级 `container_version`**。只有容器格式本身变化时才升级。Backend 可以通用地解码任何块,不认识的列会被保留,但会被分析层忽略。
- **切块规则**:持续任务每 **10 秒**切一块,或者记录数达到上限(默认 50 000)时提前切块。这样采集密度提高后,单块大小仍然有界,实时显示和持久化也共用同一条链路。
- 按需测试按阶段切块,阶段内同样受记录数上限约束。
- 编解码器位于 `Monitor.Protocol/Raw`,Probe、Agent、Backend、离线工具使用同一份代码。
- 编解码器位于 `MoShiro.Protocol/Raw`,Probe、Agent、Backend、离线工具使用同一份代码。
## 5. 列的归属与合并
@@ -131,12 +131,12 @@ RawChunk
新增一种记录流只需要写声明,不需要写合并代码。Probe 的列在规定时间内没有送达时,目前 Agent 带着已有的数据继续(不上传只有 Agent 一侧的 `partial` 块,见已知缺口)。
## 6. 代码结构(`backend/shared/Monitor.Measurement`)
## 6. 代码结构(`backend/shared/MoShiro.Measurement`)
同一种采集方法的两端是**一对角色**写在同一个文件里:拨号方(Probe 永远是拨号方,适配 NAT)和监听方(Agent)。两端共用包的构造和校验、时钟、行表和合并;Probe 和 Agent 只负责组装自己那一侧。
```text
Monitor.Measurement/ 依赖:Monitor.Protocol(仅 BCL,零 NuGet)
MoShiro.Measurement/ 依赖:MoShiro.Protocol(仅 BCL,零 NuGet)
├─ Core/
│ ├─ Contracts.cs IBlock、BlockSpec、BlockEnv、DataSession、IAdmission、IFragmentSink……
│ ├─ RowStore.cs 本侧记录的行:只含本侧拥有的列,按键索引的环形缓冲,热路径不分配