# push-gateway 推送网关服务 > 版本:0.1(骨架) > 日期:2026-07-07 > 状态:P5 待交付 > 关联文档:[架构影响地图](../../architecture/004_architecture_impact_map.md) --- ## 1. 模块职责 push-gateway 是实时推送基础设施服务(Go 实现),管理 WebSocket/SSE 长连接。 接收 msg 服务的推送请求,维护用户在线连接池,将消息实时投递到浏览器/移动端。 支持连接鉴权、心跳保活、断线重连、多设备同步、连接数监控。 --- ## 2. 技术栈 | 类别 | 技术 | 版本 | 用途 | |------|------|------|------| | 语言 | Go | 1.22+ | 高并发长连接 | | Web 框架 | Gin | 1.10+ | HTTP 升级 WebSocket | | WebSocket | gorilla/websocket | 1.5+ | WebSocket 协议 | | 缓存 | Redis | 7.x | 在线连接表、pub/sub | | 配置 | viper | 1.18+ | 配置注入 | | 日志 | zap | 1.27+ | 结构化日志 | | 追踪 | OpenTelemetry | 1.24+ | 分布式追踪 | | 编排 | Kubernetes | 1.28+ | 生产部署 | --- ## 3. 架构图 ```mermaid graph TB MSG[msg 服务] -->|gRPC Push| PG[push-gateway] PG --> HUB[ConnectionHub
连接池管理] HUB --> C1[用户 1 连接] HUB --> C2[用户 2 连接] HUB --> CN[用户 N 连接] PG -->[(Redis
在线连接表 + pub/sub)] MFE[微前端] -.WebSocket.-> PG PG --> HEART[心跳保活
30s ping/pong] ``` > 待 P5 交付时补充完整的分层架构图与多副本连接同步图。 --- ## 4. 核心流程图 ```mermaid sequenceDiagram participant U as 用户 participant PG as push-gateway participant R as Redis participant MSG as msg 服务 U->>PG: WebSocket 连接 + JWT 鉴权 PG->>R: 注册在线连接(userId → nodeId) PG-->>U: 连接建立 Note over PG: 心跳保活 30s ping/pong MSG->>PG: gRPC Push(userId, payload) PG->>R: 查询 userId 在线 nodeId alt 本节点在线 PG->>U: WebSocket 推送消息 else 跨节点在线 PG->>R: pub/sub 转发到目标节点 R->>PG: 目标节点订阅收到 PG->>U: 推送消息 end ``` > 待 P5 交付时补充:断线重连流程、多设备同步流程、连接数监控流程。 --- ## 5. 对外契约 - **gRPC 服务**:PushService(Push、Broadcast、GetOnlineStatus)(待 P5 定义 protobuf) - **HTTP 端点**:`/ws`(WebSocket 升级)、`/healthz`、`/readyz`、`/metrics` - **事件**:不发布也不消费 Kafka 事件,仅接收 msg 的 gRPC 推送调用 - **Redis 协议**:在线连接表(HASH)、跨节点推送(pub/sub channel `push:{nodeId}`) > 待 P5 交付时补充完整 protobuf 定义与 WebSocket 消息协议。 --- ## 6. 依赖关系 - **上游**:msg 服务(gRPC Push 调用) - **下游**:Redis(在线连接表、pub/sub 跨节点同步) - **客户端**:teacher-portal、student-portal、parent-portal(WebSocket 连接) - **共享包**:shared-proto、shared-go --- ## 7. 架构约束 1. 无业务逻辑,仅做连接管理与消息转发 2. 多副本部署下,通过 Redis pub/sub 同步跨节点推送 3. 连接鉴权必须校验 JWT,禁止未认证连接 4. 心跳超时 60s 无响应则断开连接 5. 单节点最大连接数 50k,超出时拒绝新连接 > 待 P5 交付时补充完整约束清单。 --- ## 8. 架构决策 > 待 P5 交付时补充 ADR 记录,预计包括:Go+gorilla/websocket 选型、Redis pub/sub 跨节点方案、连接数上限策略、心跳间隔选型。