实时网关 MVP 拆分
文档版本:v1.0
最后更新:2026-04-02 08:28:05
本文档用于把 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. 建议开发顺序
- 骨架与配置
- HTTP 和 WebSocket 入口
- 会话管理
- 发布与订阅
- latest state
- 鉴权
- 观察与日志
- 插件总线占位
5. 完成标准
满足以下条件可视为 MVP 跑通:
- 可以启动一个独立 Go 服务
- 模拟 Producer 能发布
telemetry.location
- Consumer 能订阅某个
deviceId
- Consumer 能收到实时转发
- Consumer 可读取某个设备的 latest state
- Producer、Controller、Consumer 的角色边界基本可用
6. 下一阶段
MVP 跑通后优先做:
- 插件总线正式化
- Recorder 插件
- 模拟器对接新协议
- 简单规则插件
- Dispatcher 插件