Files
cmr-mini/doc/gateway/网关MVP任务拆分.md

125 lines
2.1 KiB
Markdown

# 实时网关 MVP 拆分
本文档用于把 `realtime-gateway` 第一阶段工作拆成可执行任务。
---
## 1. 目标
第一阶段只解决以下问题:
- 建立一个独立于现有模拟器的新 Go 网关工程
- 能接收 Producer 上报
- 能让 Consumer 按设备订阅
- 能转发位置和基础 telemetry
- 能保存 latest state
- 能提供最基础的健康检查和运行入口
---
## 2. 任务拆分
### 2.1 工程骨架
- 新建 `realtime-gateway/`
- 初始化 `go.mod`
- 建立 `cmd/``internal/` 结构
- 提供最小运行 README
- 提供开发配置文件
### 2.2 网络入口
- HTTP server
- `/healthz`
- `/metrics`
- `/ws`
- 优雅关闭
### 2.3 会话管理
- 生成 `sessionId`
- 维护连接生命周期
- 记录角色和订阅
- 断线清理
### 2.4 协议处理
- `authenticate`
- `subscribe`
- `publish`
- `snapshot`
- 错误返回格式统一
### 2.5 路由与 latest state
-`deviceId` 路由
- 支持 `groupId``topic` 过滤
- latest state 内存缓存
- `snapshot` 获取最新值
### 2.6 轻鉴权
- Producer token
- Controller token
- Consumer token 或匿名策略
### 2.7 基础观测
- JSON 日志
- 连接日志
- 发布日志
- 基础 metrics 占位接口
---
## 3. 暂不进入 MVP
- 规则引擎正式实现
- 通知分发正式实现
- Recorder 正式实现
- Replayer 正式实现
- Redis
- 集群
- 数据库存档
- 高级限流
- 复杂 ACL
---
## 4. 建议开发顺序
1. 骨架与配置
2. HTTP 和 WebSocket 入口
3. 会话管理
4. 发布与订阅
5. latest state
6. 鉴权
7. 观察与日志
8. 插件总线占位
---
## 5. 完成标准
满足以下条件可视为 MVP 跑通:
- 可以启动一个独立 Go 服务
- 模拟 Producer 能发布 `telemetry.location`
- Consumer 能订阅某个 `deviceId`
- Consumer 能收到实时转发
- Consumer 可读取某个设备的 latest state
- Producer、Controller、Consumer 的角色边界基本可用
---
## 6. 下一阶段
MVP 跑通后优先做:
1. 插件总线正式化
2. Recorder 插件
3. 模拟器对接新协议
4. 简单规则插件
5. Dispatcher 插件