PHP 业务层
Go 服务层
关系型数据库
缓存和队列
文件存储
PHP 核心包
认证和安全
第三方服务
工具库
┌─────────────────────────────────────────────────────────┐
│ 客户端层 (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/ # 文档目录
Hyperf 基于 Swoole 协程,实现高并发处理。单进程可处理数万并发连接,相比传统 PHP-FPM 性能提升数十倍。
数据库、Redis、HTTP 客户端均采用连接池技术,复用连接,减少建立连接的开销,提升系统吞吐量。
耗时操作通过异步队列处理,避免阻塞主流程。支持延迟队列、失败重试、消息持久化等特性。
热点数据优先存储在 Redis,采用多级缓存策略。模型缓存自动管理,减少数据库查询压力。
所有热路径优先使用 Redis 操作,避免频繁查询数据库。采用 Hash 结构精确访问字段,异步双写保证 MySQL 一致性。
WebSocket 通信采用 MessagePack 二进制协议,相比 JSON 体积更小、解析更快,适合高频数据传输。
扩展的查询构造器支持自动过滤、排序、分页。通过 URL 参数实现灵活的数据筛选,无需编写复杂查询逻辑。
验证规则从数据库 DDL 自动生成,包括必填、长度、类型、唯一性、枚举值等。只需添加 DDL 无法表达的特殊规则。
管理端和 API 端使用独立的 JWT 密钥,互不干扰。支持 Token 刷新、黑名单机制、自动过期。
基于 RBAC 的权限系统,支持角色、权限、菜单的灵活配置。中间件自动验证用户权限,拦截非法请求。
敏感数据加密存储,支持字段级加密。密码使用 bcrypt 哈希,API 密钥加密保存。
所有管理操作记录操作日志,包括操作人、操作时间、操作内容、IP 地址等,便于审计追溯。
Go 实现的 WebSocket 网关,支持百万级并发连接。通过 Redis 管理连接状态、订阅关系、用户绑定。
采用 Redis Pub/Sub 实现消息分发。行情数据、订单状态、账户变动等实时推送到订阅的客户端。
客户端定时发送心跳,服务端检测连接状态。长时间无心跳自动断开连接,释放资源。
客户端断线后自动重连,恢复订阅状态。服务端保存订阅信息,重连后无需重新订阅。
所有接口返回统一的数据结构,包含状态码、消息、数据三部分。分页数据包含列表、总数、当前页、每页条数、总页数。
异常统一捕获处理,返回标准错误格式。业务异常、验证异常、系统异常分类处理。
AI 辅助 CRUD 代码生成,根据数据库 DDL 自动生成控制器、服务、模型、验证规则等,大幅提升开发效率。