# 实时网关 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. 建议开发顺序

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 插件



