Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

架构

状态:规划

最后复核:2026-08-15

关联:Issue #3、PR #4

长期讨论:GitHub Discussions

当前仓库状态

本仓库当前是一个空的 Rust 2024 workspace,尚不存在 domain、engine、adapter、runtime、application、状态机或交易能力。

目标系统最终面向生产部署和真实资金交易;这是 target state(目标状态),不是对当前成熟度的声明。

已决定的原则

  • 从单进程模块化单体(modular monolith)开始。
  • 先构建市场数据,且只通过已经验证的垂直切片增加能力。
  • 正确性、确定性和资金安全优先于延迟优化;状态未知、陈旧、无效或不完整时必须 fail-closed(失败关闭)。
  • 将确定性行为表达为 event in -> state/effect out,使相同输入可以重放。
  • 价格和数量使用整数 tick 与 lot 表示。
  • 每个热路径当前状态只分配一个写入者;I/O、持久化、日志、Dashboard 和其他冷路径工作移出热路径。
  • 所有订单意图在进入 Trading Adapter 前必须经过独立 pre-trade risk(盘前风控);风控不可用时禁止放行。
  • 订单、成交、持仓与余额转换必须可审计,并支持从权威事件或快照恢复/重建。
  • 本地状态必须能与交易所订单、成交、持仓和余额对账;优先使用 drop-copy 或等价的独立执行回报来源。
  • 可观测性不得阻塞热路径,但必须支持故障定位、恢复验证和审计追踪。
  • 延迟必须端到端测量并基于明确预算验收;当前没有延迟保证。
  • venue 传输 DTO 保持在 domain 之外;Adapter 在明确边界转换外部表示。
  • 只有两个真实 Adapter 证明存在替换 Seam 后,才引入 trait。
  • 不允许策略逻辑发送网络请求,也不允许把 MARKET order 用作回退。

术语:

  • Module(模块): 内聚的行为及其拥有的状态。
  • Interface(接口): Module 的狭窄公开契约。
  • Seam(接缝): 可以替换实现的有意边界。
  • Adapter(适配器): 外部系统与 Seam 之间的转换。

规划中的依赖方向

目标方向为:

domain <- engine <- adapters/runtime <- apps

这是对未来代码的约束,不代表这些模块或目录已经存在。domain 代码预计包含单位、身份、不变量、事件、确定性状态转换和 effect,但不依赖 venue DTO、网络、数据库、异步 runtime、系统时钟、环境变量或可观测性投递。

这些生产约束从第一条切片开始参与验收,但架构只在已验证切片确有需要时扩展;不得为未来层预建空骨架。

逻辑 Layer、Module、Interface、状态所有权与受控事件流的详细契约见 MODULES.md。该契约约束后续 Issue,但不代表对应实现、目录或部署已经存在。

架构图索引

图只负责展示关系,精确语义仍以 MODULES.md 的职责卡和状态所有者表为准。每张图均提供 SVG 预览和 Excalidraw 权威源文件: