后端架构

SODOS Exchange后端系统采用混合微服务架构,结合 PHP/Hyperf 和 Go 语言的优势,构建高性能、高并发的加密货币交易平台。

技术栈​

核心框架​

PHP 业务层

  • Hyperf 3.1: 高性能 PHP 协程框架
  • Swoole 5.0+: 异步协程扩展
  • PHP 8.1+: 现代 PHP 语言特性

Go 服务层

  • Go 1.18+: 高性能网关和核心服务
  • WebSocket Gateway: 实时数据推送
  • Match Engine: 订单撮合引擎
  • Market Maker: 做市策略引擎

数据存储​

关系型数据库

  • MySQL 8.0+: 主要业务数据存储
  • PostgreSQL 10+: 数据分析和报表(可选)

缓存和队列

  • Redis 4.0+: 缓存、会话、消息队列、实时数据
  • Elasticsearch: 日志分析和全文搜索

文件存储

  • 阿里云 OSS: 对象存储服务
  • 本地文件系统: 临时文件存储

主要依赖​

PHP 核心包

  • hyperf/framework: Hyperf 核心框架
  • hyperf/database: 数据库 ORM
  • hyperf/redis: Redis 客户端
  • hyperf/websocket-server: WebSocket 服务器
  • hyperf/async-queue: 异步队列
  • hyperf/crontab: 定时任务
  • hyperf/elasticsearch: ES 客户端

认证和安全

  • mineadmin/auth-jwt: JWT 认证
  • firebase/php-jwt: JWT 令牌处理
  • pragmarx/google2fa: 双因素认证
  • web-auth/webauthn-lib: WebAuthn 支持

第三方服务

  • alibabacloud/dysmsapi: 阿里云短信服务
  • alibabacloud/dm: 阿里云邮件服务
  • alibabacloud/cloudauth-intl: 国际身份认证
  • kreait/firebase-php: Firebase 推送通知
  • overtrue/easy-sms: 短信发送

工具库

  • hyperf/guzzle: HTTP 客户端
  • rybakit/msgpack: MessagePack 序列化
  • hyperf/validation: 数据验证
  • hyperf/snowflake: 分布式 ID 生成

架构设计​

系统架构图​

┌─────────────────────────────────────────────────────────┐
│                   客户端层 (Client Layer)                │
│         Web 端 | 移动端 | API 客户端 | WebSocket         │
└─────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────┐
│                 接入层 (Gateway Layer)                   │
│                                                          │
│  ┌──────────────┐    ┌──────────────┐                  │
│  │  HTTP/HTTPS  │    │  WebSocket   │                  │
│  │   Gateway    │    │   Gateway    │                  │
│  │   (Nginx)    │    │     (Go)     │                  │
│  └──────────────┘    └──────────────┘                  │
└─────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────┐
│              业务服务层 (Business Service Layer)         │
│                                                          │
│  ┌─────────────────────────────────────────────────┐   │
│  │           Hyperf 3.1 业务服务集群                │   │
│  │  ┌──────────┐  ┌──────────┐  ┌──────────┐      │   │
│  │  │ API 服务 │  │ Admin 服务│  │ 交易服务 │      │   │
│  │  └──────────┘  └──────────┘  └──────────┘      │   │
│  │  ┌──────────┐  ┌──────────┐  ┌──────────┐      │   │
│  │  │ 资产服务 │  │ 用户服务 │  │ 行情服务 │      │   │
│  │  └──────────┘  └──────────┘  └──────────┘      │   │
│  └─────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────┐
│              核心引擎层 (Core Engine Layer)              │
│                                                          │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐ │
│  │  撮合引擎    │  │  做市策略    │  │  行情聚合    │ │
│  │  Match Engine│  │ Market Maker │  │  Aggregator  │ │
│  │     (Go)     │  │     (Go)     │  │     (Go)     │ │
│  └──────────────┘  └──────────────┘  └──────────────┘ │
└─────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────┐
│               数据层 (Data Layer)                        │
│                                                          │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐             │
│  │  MySQL   │  │  Redis   │  │Elasticsearch│           │
│  │  主从集群 │  │  集群    │  │   集群    │             │
│  └──────────┘  └──────────┘  └──────────┘             │
└─────────────────────────────────────────────────────────┘

目录结构​

SODOS_EXCHANGE/
├── 📱 app/                         # PHP 应用代码
│   ├── Http/                       # HTTP 层
│   │   ├── Admin/                  # 管理端控制器
│   │   │   ├── Controller/         # 控制器
│   │   │   ├── Middleware/         # 中间件
│   │   │   └── Request/            # 请求验证
│   │   ├── Api/                    # API 端控制器
│   │   │   ├── Controller/         # 控制器
│   │   │   ├── Middleware/         # 中间件
│   │   │   └── Request/            # 请求验证
│   │   └── Common/                 # 公共组件
│   │       ├── Controller/         # 基础控制器
│   │       ├── Middleware/         # 公共中间件
│   │       └── Resource/           # 资源转换器
│   ├── Model/                      # 数据模型
│   │   ├── Enums/                  # 枚举类型
│   │   └── *.php                   # 模型文件
│   ├── Service/                    # 业务服务层
│   ├── Repository/                 # 数据仓库层
│   ├── QueryBuilder/               # 查询构造器
│   ├── Schema/                     # 数据库结构
│   ├── Job/                        # 异步任务
│   ├── Command/                    # 命令行工具
│   ├── Event/                      # 事件
│   ├── Listener/                   # 事件监听器
│   ├── Process/                    # 进程
│   ├── MarketData/                 # 行情数据处理
│   ├── Helper/                     # 辅助函数
│   ├── Exception/                  # 异常处理
│   ├── Trait/                      # Trait 复用
│   └── AIGenerate/                 # CRUD 代码生成
├── 🔧 go/services/                 # Go 微服务
│   ├── ws-gateway/                 # WebSocket 网关
│   │   ├── cmd/                    # 启动入口
│   │   ├── internal/               # 内部实现
│   │   │   ├── ws/                 # WebSocket 处理
│   │   │   ├── aggregator/         # 数据聚合
│   │   │   ├── redisx/             # Redis 客户端
│   │   │   └── pack/               # 消息打包
│   │   └── config/                 # 配置
│   ├── match-engine/               # 撮合引擎
│   │   ├── cmd/                    # 启动入口
│   │   ├── internal/               # 内部实现
│   │   │   ├── matcher/            # 撮合逻辑
│   │   │   ├── orderbook/          # 订单簿
│   │   │   └── risk/               # 风控
│   │   └── config/                 # 配置
│   └── market-maker/               # 做市策略
│       ├── cmd/                    # 启动入口
│       ├── internal/               # 内部实现
│       │   ├── strategy/           # 策略实现
│       │   └── execution/          # 执行引擎
│       └── config/                 # 配置
├── ⚙️ config/                      # 配置文件
│   ├── autoload/                   # 自动加载配置
│   └── wallet/                     # 钱包配置
├── 📦 databases/                   # 数据库文件
│   ├── migrations/                 # 数据迁移
│   └── seeders/                    # 数据填充
├── 🔌 plugin/                      # 插件目录
│   └── mine-admin/                 # MineAdmin 后台插件
├── 📝 storage/                     # 存储目录
│   ├── swagger/                    # API 文档
│   ├── uploads/                    # 上传文件
│   ├── lua/                        # Lua 脚本
│   └── languages/                  # 语言包
├── 🏃 runtime/                     # 运行时文件
│   ├── container/                  # 容器缓存
│   └── logs/                       # 日志文件
└── 📚 docs/                        # 文档目录

核心模块​

1. 业务服务层(Hyperf)​

用户服务​

  • 用户注册、登录、登出
  • KYC 实名认证
  • 双因素认证(2FA)
  • WebAuthn 支持
  • 安全设置管理
  • 设备管理

资产服务​

  • 账户余额管理
  • 充值提现处理
  • 资产划转
  • 资金流水记录
  • 冻结解冻机制
  • 资产快照

交易服务​

  • 现货交易
  • 合约交易
  • 杠杆交易
  • 期货交易
  • 股票交易
  • 外汇交易
  • 跟单交易
  • C2C 交易

订单服务​

  • 订单创建、取消、修改
  • 订单状态管理
  • 历史订单查询
  • 委托单管理
  • 成交明细

行情服务​

  • 实时行情推送
  • K线数据管理
  • 深度数据处理
  • 最新成交
  • 24小时统计

管理服务​

  • 后台管理接口
  • 权限管理
  • 操作日志
  • 系统配置
  • 数据统计

2. Go 核心引擎​

WebSocket 网关​

  • 高并发连接管理
  • 实时数据推送
  • 消息路由分发
  • 心跳检测
  • 断线重连
  • MessagePack 序列化

撮合引擎​

  • 高性能订单撮合
  • 内存订单簿
  • 价格优先时间优先
  • 部分成交处理
  • 撮合结果推送

做市策略​

  • 自动做市算法
  • 深度管理
  • 价差控制
  • 风险对冲
  • 策略配置

行情聚合​

  • 多数据源聚合
  • 价格指数计算
  • K线数据生成
  • 数据清洗过滤

技术特性​

高性能架构​

协程并发​

Hyperf 基于 Swoole 协程,实现高并发处理。单进程可处理数万并发连接,相比传统 PHP-FPM 性能提升数十倍。

连接池​

数据库、Redis、HTTP 客户端均采用连接池技术,复用连接,减少建立连接的开销,提升系统吞吐量。

异步队列​

耗时操作通过异步队列处理,避免阻塞主流程。支持延迟队列、失败重试、消息持久化等特性。

内存缓存​

热点数据优先存储在 Redis,采用多级缓存策略。模型缓存自动管理,减少数据库查询压力。

数据处理​

Redis 优先策略​

所有热路径优先使用 Redis 操作,避免频繁查询数据库。采用 Hash 结构精确访问字段,异步双写保证 MySQL 一致性。

MessagePack 协议​

WebSocket 通信采用 MessagePack 二进制协议,相比 JSON 体积更小、解析更快,适合高频数据传输。

查询构造器​

扩展的查询构造器支持自动过滤、排序、分页。通过 URL 参数实现灵活的数据筛选,无需编写复杂查询逻辑。

数据验证​

验证规则从数据库 DDL 自动生成,包括必填、长度、类型、唯一性、枚举值等。只需添加 DDL 无法表达的特殊规则。

认证和安全​

JWT 双场景​

管理端和 API 端使用独立的 JWT 密钥,互不干扰。支持 Token 刷新、黑名单机制、自动过期。

权限控制​

基于 RBAC 的权限系统,支持角色、权限、菜单的灵活配置。中间件自动验证用户权限,拦截非法请求。

加密存储​

敏感数据加密存储,支持字段级加密。密码使用 bcrypt 哈希,API 密钥加密保存。

操作审计​

所有管理操作记录操作日志,包括操作人、操作时间、操作内容、IP 地址等,便于审计追溯。

实时通信​

WebSocket 架构​

Go 实现的 WebSocket 网关,支持百万级并发连接。通过 Redis 管理连接状态、订阅关系、用户绑定。

消息分发​

采用 Redis Pub/Sub 实现消息分发。行情数据、订单状态、账户变动等实时推送到订阅的客户端。

心跳机制​

客户端定时发送心跳,服务端检测连接状态。长时间无心跳自动断开连接,释放资源。

自动重连​

客户端断线后自动重连,恢复订阅状态。服务端保存订阅信息,重连后无需重新订阅。


开发规范​

代码分层​

Controller 层​

  • 处理 HTTP 请求和响应
  • 参数验证
  • 调用 Service 层
  • 返回统一格式数据

Service 层​

  • 业务逻辑处理
  • 调用 Repository 层
  • 事件触发
  • 异步任务分发

Repository 层​

  • 数据访问封装
  • 数据库操作
  • 缓存管理
  • 数据转换

Model 层​

  • 数据模型定义
  • 关联关系
  • 访问器和修改器
  • 类型转换

中间件​

认证中间件​

  • AccessTokenMiddleware: 管理端 JWT 验证
  • TokenMiddleware: API 端 JWT 验证
  • PermissionMiddleware: 权限验证
  • OperationMiddleware: 操作日志记录

功能中间件​

  • CorsMiddleware: 跨域处理
  • RateLimitMiddleware: 频率限制
  • SignatureMiddleware: 签名验证

API 设计​

RESTful 规范​

  • GET: 查询资源
  • POST: 创建资源
  • PUT: 更新资源
  • DELETE: 删除资源

统一响应格式​

所有接口返回统一的数据结构,包含状态码、消息、数据三部分。分页数据包含列表、总数、当前页、每页条数、总页数。

错误处理​

异常统一捕获处理,返回标准错误格式。业务异常、验证异常、系统异常分类处理。


性能优化​

数据库优化​

  • 索引优化:合理创建索引,避免全表扫描
  • 查询优化:避免 N+1 查询,使用 JOIN 或预加载
  • 分库分表:大表水平拆分,读写分离
  • 慢查询监控:记录慢查询日志,优化 SQL

Redis 优化​

  • Key 设计:使用业务前缀,避免 Key 冲突
  • 数据结构:选择合适的数据结构,减少内存占用
  • 过期策略:设置合理的过期时间,避免内存溢出
  • 禁用命令:生产环境禁用 KEYS 等危险命令

代码优化​

  • 协程并发:使用协程处理并发任务
  • 批量操作:批量插入、更新,减少数据库交互
  • 懒加载:延迟加载非必要数据
  • 对象池:复用对象,减少 GC 压力

部署运维​

容器化部署​

  • Docker 镜像构建
  • Docker Compose 本地开发
  • Kubernetes 生产部署
  • 服务编排和自动扩容

监控告警​

  • 系统监控:CPU、内存、磁盘、网络
  • 应用监控:QPS、响应时间、错误率
  • 日志监控:错误日志、慢查询日志
  • 告警通知:钉钉、邮件、短信

日志管理​

  • 分级日志:DEBUG、INFO、WARNING、ERROR
  • 日志轮转:按日期或大小轮转
  • 集中收集:Elasticsearch 存储和分析
  • 日志查询:Kibana 可视化查询

备份策略​

  • 数据库备份:每日全量备份,实时增量备份
  • Redis 备份:RDB 和 AOF 双重备份
  • 文件备份:定期备份上传文件
  • 异地容灾:多地域备份,防止数据丢失

开发工具​

代码生成​

AI 辅助 CRUD 代码生成,根据数据库 DDL 自动生成控制器、服务、模型、验证规则等,大幅提升开发效率。

调试工具​

  • Tinker: 交互式命令行调试
  • Dump Server: 变量输出到浏览器
  • Watcher: 文件监听自动重启
  • IDE Helper: IDE 代码提示支持

文档工具​

  • Swagger: 自动生成 API 文档
  • 注解文档: 通过注解生成接口文档
  • 在线调试: Swagger UI 在线测试接口

安全机制​

数据安全​

  • SQL 注入防护:参数化查询、ORM 防护
  • XSS 防护:输入过滤、输出转义
  • CSRF 防护:Token 验证
  • 敏感数据加密:字段级加密存储

接口安全​

  • 签名验证:请求签名防篡改
  • 频率限制:防止接口滥用
  • IP 白名单:限制访问来源
  • HTTPS 传输:加密通信

系统安全​

  • 权限隔离:最小权限原则
  • 审计日志:操作可追溯
  • 异常监控:实时告警
  • 安全扫描:定期漏洞扫描

加密数字货币交易所系统-WEB3区块链开发者 • © 2026