后端架构

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