Skip to content

开发文档

版本号修改修改时间备注
v1.0.0王小琱2024.12.20初次修订

1. 项目简介

  • 服务名称exchange-market-agg-backend
  • 服务描述:本项目为交易所、金融等业务提供市场行情聚合、K线数据处理与推送,支持多交易对、多周期K线、实时行情聚合、数据校验等功能。
  • 所属模块:行情聚合与推送服务。
  • 负责人:王小琱(wang746277441@gmail.com

2. 功能描述

  • 聚合多交易对的市场K线数据(如BTC/USDT、ETH/USDT等)。
  • 支持多种K线周期(秒、分钟、小时、天、周、月)。
  • 实时推送最新行情、K线、盘口等数据。
  • 支持K线数据的校验与标记。
  • 支持行情数据的持久化存储与查询。
  • 支持与RabbitMQ、Redis等中间件集成。
  • 提供Prometheus监控接口。

3. 系统架构

3.1 主要技术栈

备注:具体依赖版本详见go.mod文件。

3.2 架构图

3.2.1 启动初始化

3.2.2 实时更新 + 定时推送

3.2.3 查询

3.3 架构概括

  • 业务层(Business Layer)

    包含 market-agg 服务的多个功能模块,负责完成行情数据的采集、处理、推送与查询。包括:

    • 启动初始化模块(Spot Initializer):启动时从 Spot Clearing 和 Currency Service 拉取初始行情与币种配置,并初始化本地内存数据。
    • 实时更新模块(MQ Consumer):消费 RabbitMQ 中的成交与挂单信息,实时更新本地订单簿和行情数据。
    • 数据推送模块(MQ Publisher):定时将内存中的 K线、Depth、Trade 数据推送到 RabbitMQ。
    • API 查询模块(Market API):对外提供标准的行情查询接口,从本地内存中返回结果。
  • 基础服务层(Infrastructure Layer)

    提供支撑服务和基础设施,包括:

    • RabbitMQ:作为消息通信中枢,支持成交/挂单事件消费及行情数据分发。
    • MySQL:作为可选持久化存储,支持对行情数据的归档与分析。
    • Spot Clearing Service:外部初始行情数据源,在服务启动时被调用。
    • Currency Service:提供币种配置、精度等元信息,供初始化与运行时使用。

3.4 业务流程

3.4.1 数据查询

3.4.2 数据更新

3.4.3 数据推送

4. 依赖组件

组件版本说明
MySQL8.x关系型数据库
RabbitMQ3.x消息队列
Redis6.x缓存

5. 接口设计

接口文档

使用make doc可以重新生成接口文档。

6. 数据库设计

数据库设计文档.

数据采用分表设计,分表策略为:根据交易对和周期分表,例如:market_btc_hkd_1_minutemarket_btc_hkd_1_day等。

7. 项目部署

部署文档

8. 错误码定义

错误码错误信息说明
ErrSystem内部错误内部服务调用失败

9. FAQ

1. 如何扩展推送通道?

  • 可通过增加MQ Exchange或实现新的推送模块扩展。

2. 服务启动报环境变量缺失?

  • 检查.env配置文件,确保所有必填环境变量已配置。

3. 如何接入新的行情源?

  • 实现对应的数据采集模块,并通过RabbitMQ推送到聚合服务。

🚀 构建现代化数字资产交易平台