简述

在前文的Xronos的架构设计1和2中已经基本提到了整个系统的工作流程和层级架构. 本文会针对设计理解进行进一步的讨论和设计.
HFT系统主要的特点是快, 如何在极短的时间内找到套利可能行, 并交易成功.很多人会误以为淘宝等成熟的电商平台的架构直接套用就能实现HFT系统. 事实上, 这只对了一半.

  1. 不少的去耦合的架构设计可以借鉴.
  2. 电商平台注重的是水平扩展, 更重视其可用性(慢一点无所谓, 但是不要用不了). 而HFT系统则是注重的是单机响应(慢了不行, 宁可不交易)

两种系统的区别实际上就是高可用和高性能直接的区别. 前者更倾向于高可用, 后者更倾向于高性能。本质上是吞吐量和延迟之间的区别, 此处引入两者的定义,实际可以用公式描述两者的关系,相互之间呈反比。

Latency – The time taken for a packet to be transferred across a network. You can measure this as one-way to its destination or as a round trip.
Throughput – The quantity of data being sent and received within a unit of time

所以在系统的设计上, 我们需要有针对性的倾向性, 在模版架构上, 对主要链路进行精细化设计是至关重要的. 如何权衡, 则是一个重要的问题.

权衡

在讨论如何权衡之前, 需要整体把握设计初衷.

  1. 为什么去耦合?
    因为低耦合可以方便系统部署, 降低单模块的复杂性, 方便水平扩展.
  2. 为什么要有这么多模块?
    原则上跟问题1是一个问题. 不同的模块功能不一样, 有些模块是CPU密集型, 有些模块是IO密集型. 因此这些模块的存在应该是并行存在, 而非是串行.
  3. 如何让模块之间的相互影响更小?
    • 设计主路径: 非CPU密集和非IO密集模块组成的主要运行路径,各模块低耦合通信, 无阻塞.
    • 设计次路径: 该路径上各模块并行执行, 相互的功能独立, 依赖性低.

设计

此时又要回到在架构1中已经提及的设计。为了避免主要路径被阻塞,Xronos也引入了反馈机制, 并参考了如下的设计。

lambda arch with feedback
lambda arch with feedback

以控制系统为核心的主路径,执行的是所有非阻塞的,非IO密集,非CPU密集的任务。主要以权限控制,状态控制为主。
在Xronos架构设计1中我已经较详细地设计了系统,在此处不再赘述。