网关MVP任务拆分.md 2.1 KB

实时网关 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 路由
  • 支持 groupIdtopic 过滤
  • 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 插件