简述

Xronos架构设计1中我提到了宽界的缺陷, 并为此提供了解决方案和设计原则.

  1. 服务低耦合, 使用高速消息中间件
  2. 单机单线程, 多机(JVM/Machine)并行
  3. Consumner centric: 消费者pull模式
  4. Lambda架构: 尽可能地无状态执行,减少对事件或数据源的更改
  5. Off-Heap: 降低GC频率

Xronos将在这五个原则下进行设计与实施。
1与4是架构上的设计原则,因此,在本篇文章中,主要涉及这两个。
为实现服务低耦合,我们需要将服务拆分,根据微服务的拆分原则,我将架构分成三层,9个服务。

设计

服务低耦合:可以对照架构图阅读。

  1. Application: 提供展示页面,可展示数据以及指令控制。
    • Monitor app: 数据可视化,可视化交易数据,订单数据,盈利数据,历史数据,资产,密钥等等。
    • Commander app: 指令控制,主管策略的启动,策略运行参数,运行环境,虚拟化节点增删等等。
  2. Main Service: 核心服务层
    • 策略管理器: 多核心策略管理
    • 交易服务: 主要是对策略的输出结果进行风险分析管理,头寸管理,订单路由等等。
      • 订单管理服务:个人认为订单服务可以放在交易服务中,毕竟交易服务比订单服务更加抽象,且两者的概念相近。因此该服务主要处理订单相关的业务。
    • 持久化服务: 主要用于消息的持久化。
    • 数据(分析)服务: 在架构图中并没有画出,该服务主要用于日后的数据分析,因子挖掘等。
    • 回测引擎:在架构图中并没有画出,该服务主要用于策略的回测和调试。
  3. Gateway: 提供交易所的路由服务,接受和发送各类数据(行情,交易,资产等)
    • Websocket: 与交易所保持长连接,接受行情、资产、交易数据等。
    • API: 请求各类数据,提交订单,交易等等。

Lambda架构
什么是lambda架构?参考维基百科:

Lambda architecture depends on a data model with an append-only, immutable data source that serves as a system of record.It is intended for ingesting and processing timestamped events that are appended to existing events rather than overwriting them. State is determined from the natural time-based ordering of the data.

简而言之:组件在消费数据时不对数据源进行更改,组件产生的数据只能追加在原有的事件之后。

架构图

以下是架构设计图:

Xronos Architecture
Xronos Architecture