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

129 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实时网关 MVP 拆分
> 文档版本v1.0
> 最后更新2026-04-02
本文档用于把 `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 插件