股票证券交易系统架构分析与设计
根据之前参与了一个国家级证券交易所新一代交易系统的经历,画了一个交易所基本架构图,如下:
名词解释:
0. STEP协议是什么?
STEP: Securities Trading ExchangeProtocol,是中国金融行业数据通信标准JR/T0022-2004,目前被深圳交易所采用,作为LeveII数据向信息服务商分发的数据的标准协议。
其实,这个交易所支持多种证券交易协议,包括:FIX,FAST协议。
1. FIX基本介绍
FIX--The Financial Information eXchange ("FIX") Protocol,金融信息交换协议.是针对交易相关消息的规范。在银行、券商、交易所、投资机构、相关业间应用非常广泛。这些市场参与者基于统一的语言进行自动交易。
fix是工业驱动的消息标准,它是开放和自由的,但不是一套软件。而是一个规范,各厂商基于规范开发相应的软件。作为在交易通信中的主导协议,fix与其它的订单处理系统、交易系统融合。fix协议有两层:会话层和应用层。会话层主要是负责传输数据,而应用层则是处理相关的业务数据。
2.FAST协议
FAST(FIX Adapted for Streaming) ,其核心是一个压缩算法,将按照fix规范定义的数据经过压缩以后,可以在很大程度伤降低发送、接收双方的带宽。
交易所对稳定性和性能,有极高的要求,这就对架构设计能力有很高的考验,有幸参与这一个有意思的过程,其实,里面的架构师都是来自微软,ebay,IBM的一线架构师,其中Ebay的架构给了我们不少启发。
首先说说我们的最终达到的成果吧:
目前可容纳的投资者账户数超3亿个,证券数量从原有系统的5千只可扩大至5万只,容量扩大了10倍。并且具备每秒30万笔、每日超4亿笔委托的处理能力,是原有系统的3倍。新一代交易系统将平均委托处理时延约为1.1毫秒,仅为原有系统的百分之一,而五年总体成本仅是原有系统的1/3。
这个架构核心思想也是借鉴EBAY架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。
但证券交易系统对数据一致性有更高要求,但交易所不缺钱,很多高性能,高可用都是用很贵的硬件堆起来的。
BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。
基本可用(Basically Available)
基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。
电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。
软状态( Soft State)
软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql replication的异步复制也是一种体现。
最终一致性( Eventual Consistency)
最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。
ACID和BASE的区别与联系
ACID是传统数据库常用的设计理念,追求强一致性模型。BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。
ACID和BASE代表了两种截然相反的设计哲学
在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此ACID和BASE又会结合使用。
参考资料