开发文档
| 版本号 | 修改 | 修改时间 | 备注 |
|---|---|---|---|
| v1.0.0 | 王小琱 | 2024.12.20 | 初次修订 |
1. 项目简介
- 服务名称:
exchange-push-server-backend - 服务描述:本项目为交易所等业务提供高性能、可扩展的 WebSocket 实时消息推送服务。负责将消息队列中的数据实时推送到客户端,支持多种推送模式、分组、广播、心跳、连接管理等,强调低延迟和高并发。
- 所属模块:网关服务组件
- 负责人:王小琱(wang746277441@gmail.com)
2. 功能描述
- 提供websocket连接与断开链接功能
- 提供频道订阅与退订功能
- 提供特定频道消息推送(需要调用鉴权服务)
- 提供公共频道消息推送
- 自身心跳检测
- 客户端连接超时控制
- 性能需求,推送延迟>可靠性,保证100ms以内消息推送
- 可伸缩性,支持分布式部署,可以横向扩展
3. 系统架构
3.1 主要技术栈
- 编程语言:[Go / Protocol Buffers v3]
- 服务框架:[Go Micro / GORM]
- API接口:[gRPC]
- 监控:[Prometheus]
- 容器编排:[Docker]
- WebSocket:[WebSocket]
备注:具体依赖版本详见go.mod文件。
3.2 架构图
3.2.1 逻辑架构图
3.2.2 整体架构图
3.3 架构概括
鉴权
当有用户相关的频道被订阅时,需要调用鉴权服务,验证用户身份,给该用户推送数据
协议转换
支持websocket链接
频道订阅
维护客户端链接与订阅频道的关系,支持退订
根据频道监听相关MQ的消息,推送到该频道
3.4 业务流程
3.4.1 用户相关
3.4.2 行情推送
4. 依赖组件
| 组件 | 版本 | 说明 |
|---|---|---|
| RabbitMQ | 3.12.x | 消息队列 |
5. 接口设计
6. 项目部署
见部署文档
7. 错误码定义
8. FAQ
1. 如何健康检查?
- 健康检查接口:
/health
2. 如何统计服务连接状态?
- 统计接口:
/norm
