QuantDinger 实战:自托管 AI 交易操作系统 · 第 2 章 v5 架构总览


QuantDinger 实战:自托管 AI 交易操作系统 · 第 2 章 v5 架构总览

章节摘要:本章把第 1 章启动的那堆容器拆开讲透。2.1 节给六进程边界:migration(数据库迁移)、backend(HTTP API)、trading-worker(交易长循环)、scheduler-worker(调度)、celery-worker 与 celery-beat(异步任务与节拍)各自的职责表,加上一张以 PostgreSQL 为事实源、Redis 为队列的通信图。2.2 节讲 v5 的设计哲学「HTTP API 不拥有长循环」:请求超时、进程回收、滚动重启、水平扩容都会杀死长循环状态,所以状态入库、循环进 worker、API 只读写数据库与队列——这也是本章对自研系统最有迁移价值的一课。2.3 节用三张图走通系统动态行为:一次下单从策略到交易所的路径、一段行情从交易所到数据库的路径、以及定时对账的回流。读完本章,日志里每一行都应该有归宿。

学习目标

  • 说出六进程各自的职责、启动顺序与依赖关系。
  • 用通信图解释「PostgreSQL 是唯一事实源、Redis 是任务通道」。
  • 论证为什么 HTTP 进程不该持有交易循环,并说出三个理由。
  • 复述「状态入库、循环进 worker、API 只读写库与队列」的分工公式。
  • 走通三条动态路径:下单路径、行情入库路径、对账回流路径。
  • 把进程分离思想迁移到自己的系统设计里。

核心概念速览

v5 进程分离全景(详细版见 2.1 节) ┌────────────── PostgreSQL 18(唯一事实源)──────────────┐ │ 状态 · 订单 · 行情 · 账户(一切持久事实) │ └───▲────────▲────────▲────────▲────────▲─────────────┘ │读写 │读写 │读写 │读写 │读写 backend(HTTP) ──┘ trading- ──┘ scheduler─┘ celery- ──┘ migration ──┘ 只读写库与队列 worker worker worker 首启建表迁移 交易长循环 调度循环 异步任务 ▲ ▲ ▲ └──── Redis 8(队列 / 缓存 / beat 节拍)────────┘ ​

一句话金句:请求会死,循环必须活着——所以状态入库、循环进 worker、API 只做读写。

(文字流程图)migration 先行建表 ──▶ backend 与各 worker 并行启动 ──▶ 运行期一切协同经数据库与队列完成,进程之间互不直连。

子章节导航

  • 第 2.1 节《六进程边界》:职责表、通信图、启动顺序与常见误解纠正。
  • 第 2.2 节《API 不拥有长循环》:四个会杀死循环的场景、正解分工、对自研系统的启发。
  • 第 2.3 节《消息流与数据流》:下单路径、行情入库路径、对账回流的完整走读。

三节按序读:先认静态边界(2.1),再懂设计动机(2.2),最后看动态流(2.3)。

子章节之间的逻辑关系

┌──────────────┐ 「为什么这样拆」 ┌──────────────────┐ 「拆开后怎么动」 ┌──────────────┐ │ 2.1 六进程边界 │ ───────────────▶ │ 2.2 API 不拥有长循环 │ ──────────────▶ │ 2.3 消息流与 │ │ 静态:谁是谁 │ │ 动机:请求与循环冲突 │ │ 数据流 │ └──────┬───────┘ └────────┬─────────┘ └──────┬───────┘ │ ▼ │ │ 设计哲学落到下单/行情/对账三条路径 │ └───────────────────────────────────────────────────────────────────┘ ▼ 第 3 章 数据层(第一条路径的源头:行情从哪里来) ​

前置知识与后续延伸

  • 前置:第 1 章部署产物(一张活的 ps 输出)与 1.2 节的源码模块导读。
  • 延伸阅读:《Jev 决策编程》第 08 章《工程化生产》——请求纪律、超时与失败兜底,与本章哲学互为参照。
  • 后续:第 3 章《数据层》——架构图里左侧的行情入库路径,从此展开成完整一章。

免责声明:本书仅供研究与教育用途,不构成任何投资建议;实盘交易风险自担,建议长期停留在 paper 模式。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U