本文选自《交易技术前沿》总第三十八期文章(2020年3月)
陈镇光 丁一 / 国信证券股份有限公司 chenzguang@guosen.com.cn
摘要:随着国内外证券市场的持续发展,当前的证券交易系统已越来越难以满足业务上的需求。本文从证券行业的应用现状出发,分析证券业务对交易技术的新需求,研究设计新一代交易系统应用架构,解决当前交易系统普遍存在的耦合过紧、效率不高、扩展性差等问题,以支持新业务的快速上线,并满足不同类别客户做全业务的需求,从而更好的支持未来证券交易业务的发展。
一、引言
证券公司目前普遍采用的是集中式的交易系统,集中交易系统是证券公司最重要的一套系统,它几乎覆盖了所有的场内证券业务和部分场外业务。可以说,集中交易系统为证券行业十几年来的稳定发展做出了巨大贡献。然而,随着证券业务越来越复杂、交易品种越来越丰富,集中交易系统上集成了越来越多的业务逻辑,而且目前的集中交易架构普遍采用的是单体结构,系统的拆分、扩展能力有限,导致系统过于臃肿,越来越无法适应业务的快速发展。
另一方面,随着外部接入的放开,量化交易客户对交易速度的要求越来越高,集中交易系统完全无法满足量化交易业务对性能的要求。于是,很多证券公司引入了针对量化业务的量化交易系统。然而,集中交易系统和量化交易系统是两套独立的体系,在架构上难以做到互相融合,这就制约了客户做全业务的需求。
因此,证券行业急需研究、建设新一代的交易系统,而有的券商已经开始在尝试。
二、证券行业新一代交易系统应用现状
新一代交易系统在证券行业中的应用主要基于以下两种模式。
(一)基于极速框架的应用模式
这种模式的核心思想是,以性能为核心,基于极速交易架构,从机构客户试点开始,试图扩展到全客户、全业务。
基于极速框架设计的交易系统应用在极速交易业务是可行的,但如果要扩展到集中交易业务,就会面临以下两方面的挑战:
一方面,它设计的出发点是极速,对服务拆分的能力有限,特别是核心交易引擎依然是一个单体结构。它的分布式主要体现在水平扩展方面,比如可以复制出多个交易引擎来实现高可用,但要对交易引擎做垂直拆分是比较难做到的,因为拆分增加了交互复杂性,必然影响性能,失去了极速的意义。所以如果采用这种模式,随着业务不断增加,将会面临目前单体架构普遍遇到的问题。
另一方面,普通的股票交易客户(俗称“散户”)对交易延迟是不敏感的,是否有必要投入极速交易架构?极速交易架构相比普通交易架构需要付出更多的成本代价,但是这种架构在极速方面所做的优化对集中交易业务而言并不能带来更多的业务价值,也就是投入产出比不高。
因此这种架构模式具有应用上的局限性,并不适合推广到所有业务。
(二)基于微服务框架的应用模式
这种模式的核心思想是,以分布式为核心,基于微服务架构,试图对交易业务进行完全解耦,并且容量和功能可扩展。
微服务的架构本身是比较先进的,主要面临的挑战是落地实施。
另一方面,服务拆分之后就会带来一些分布式的问题,比如原来都在一个系统里通过一个事务指令可以完成,现在拆分到了多个系统,如何保证分布式事务的一致性?这是一个难题。
这些挑战说明了微服务架构在证券行业还不到大规模落地的时候,特别是针对核心交易系统。
三、证券业务对交易技术的需求分析
(一)证券业务对快速交付的需求
由于目前的交易系统都是集中式的单体结构,随着业务越来越复杂,集中交易系统集成了太多的业务逻辑,导致系统过于庞大,缺乏灵活性,改动升级代价大、风险高,无法适应业务上快速交付的需求。
例如,理财业务属于各个公司的个性化业务,它具有一定创新性、需要通过不断探索完善其功能,因此需要频繁发布更新。理论上,理财业务的更新不应该影响其他业务。
而实际上由于目前所有业务都耦合在一个系统上,任何一个业务的变更都可能影响其他业务,所以任何一个业务的变更都会导致其他业务也需要同步构建、测试和发布,极大的影响了交付的效率,无法满足业务对上线时间的要求,也无法适应未来敏捷开发的需求。
(二)证券业务对交易速度的需求
1. 不同业务对交易速度的需求
场内交易业务对交易系统的要求,除了要满足基本的功能需求之外,越来越多的体现在对交易时效性的要求上。交易速度甚至是某些业务最核心的诉求。交易速度的提升不仅能够捕捉更多的市场机会,为客户带来更大的收益,也是券商核心竞争力的体现。下面从交易时效性出发,根据交易速度对业务竞争力的影响,笔者对交易业务进行了分类(见表1)。
总体上可分为实时和非实时两类,其中非实时业务表示对时效性没有太多要求,或者需要较长时间(分钟级以上)才能完成交易的业务;而实时业务则表示客户需要即时完成交易 的业务,或者交易结果会受实时行情影响的业务。实时业务又可以进一步细分为极速和快速两个子类别。
- A类(极速需求):交易速度是业务的核心需求之一,速度越快越能增加业务的竞争力,也越能增加公司在行业的影响力。
- B类(快速需求):交易速度对业务有一定影响作用,但业务竞争力还受其他因素如算法、外部环境等的影响;或者由于交易量占比不大,对公司整体利润没有实质性影响。
- C类(普通需求):交易速度只需要达到客户接受的范围内即可(如秒级),速度的提升对业务的竞争力几乎不产生影响。
2. 不同客户对交易速度的需求
从客户的角度出发,不同的客户对交易速度的需求是不同的。但随着程序化交易的普及,越来越多的客户将意识到交易速度的重要性,因为它将直接影响收益,例如抢涨停板、套利、逃顶等。下面根据客户的交易方式和当前的市场竞争力,分析交易业务的速度指标需求(见表2)。
总体上分为量化客户和普通客户。普通客户指的是目前市场上占绝大多数的散户。量化客户指的是机构客户和一些专业的个人投资者,他们借助现代统计学和数学的方法,利用计算机技术来进行交易。其中量化客户又进一步细分为普通量化客户和极速量化客户。
- I级(量化客户-极速):对A类业务的交易速度非常敏感,因为资金量大并且交易频繁,客户有意愿投入更多成本用于提升交易速度。
- II级(量化客户):客户关注交易速度,并且借助计算机程序自动化执行,基本上能够跑赢市场上绝大多数的散户。在其他条件不变的情况下,客户希望速度越快越好。
- III级(普通客户):客户对交易速度并不敏感,因为是通过纯手工操作,秒级内的延迟对他们的影响并不大。
四、新一代证券交易系统应用架构设计
(一)交易分级设计
速度和容量等需求对软件设计和硬件规格的要求是不同的,因此根据前面对业务和客户的分级需求,证券公司需要建设分层次的交易系统,以达到成本和收益的最佳组合(如图1所示)。
图1:分级交易系统
(1)技术可行性主要受两个方面的影响:
一方面是业务逻辑复杂度。越复杂的软件或硬件,执行速度必然越慢,也越难以进行调优,所以融资融券交易业务最好不要放在极速柜台中实现。
另一方面是系统的并发量。单机的性能随着并发量的上升而下降,但并发量超过单机阈值时就面临拆分或分布式部署,进一步增加系统复杂性。所以极速柜台只能面向少量客户。
(2)建设与管理成本:理论上速度快的系统完全可以满足慢速系统的时效性需求,但越快的系统需要投入的成本会越高,所以极速层和快速层都设定了准入门槛,不可能接入所有的客户。
(3)用户体验:让客户切换使用系统意味着损失了客户的便捷性,在其他条件不变的情况下应用尽量让客户在一个系统中完成所有业务。
(二)服务化设计
服务化设计主要解决普通交易系统的快速交付问题。服务化设计最关键的要点是如何把控拆分的粒度。下面根据Gartner对服务化定义的三种不同拆分粒度[1]进行分析:
(1)宏服务(MacroService):这是目前普遍存在的系统,就是类似于单体架构,基于共享数据和公共的访问接口,它的主要优点是方便管理。
(2)小服务(MiniService):基于中粒度的服务,将单体架构拆分成少数相对独立的服务,主要目标是改善敏捷性。
基于MacroService的架构是券商的现状,根据前面的分析这种架构的问题比较突出;而基于MicroService架构存在的问题在前面章节也已经分析过,目前并不适合在证券行业大规模推广。所以真正适合证券行业的服务拆分方式是基于MiniService的架构,因为它既能达到解耦的目的,也不会带来太大的复杂性。
借鉴MiniService的思想,以及对业务快速交付需求的分析,下面对集中交易的业务进行拆分。如果拆分粒度太大就达不到解耦的目标,如果拆分过细又会导致管理复杂,所以需要进行权衡,权衡的标准就是业务的变更频率。因为不同业务的变更不应该互相影响,这是解耦的主要目标,越是变更频繁的业务越能够成为独立拆分的备选服务。因此,根据从实践中统计的变更频率大小,集中交易业务适合拆分成如下独立的服务(如图2所示)。
图2:普通交易系统的服务化拆
- 理财服务:理财销售与管理,如场外基金、金天利等;
- 两融服务:融资融券、转融通的业务逻辑处理;
- 债券服务:债券交易、质押回购、协议回购等业务逻辑处理;
- 交易服务:对接证券交易所的场内交易通道;
- 资产中心:管理客户的资金、股份数据;
- 账户中心:管理客户的账户数据,如客户适当性数据等;
- 清算中心:实现统一清算逻辑,从各系统采集数据并分发交收后结果。
(三)极速化设计
1. 资金股份管理
交易系统分级之后需要解决的一个问题就是客户的资产(即资金和股份)如何管理。一种方案是采用集中的管理方式,也就是通过独立的资产中心管理所有客户的资金股份。这种方案的优势是方便管理,但无法满足低时延的需求,特别是对于极速交易系统,如果每次交易都需要到另一个系统查询、更新资产数据,将极大影响性能。
因此,一种更合理的方案是对资产数据按客户类型进行拆分(见图3)。I级客户的资产数据部署在极速交易系统,II级客户的资产数据部署在快速交易系统,III级客户的资产数据部署在普通交易系统。由于III级客户的数量比较大,并且对交易速度要求不高,根据前面服务化设计思路,可以拆分出针对III级客户的独立资产中心。
图3:客户资产按客户类别独立拆分和部署
三类资产数据之间不交叉,每个客户只有一份资产数据并且部署在尽量快的系统中,以此来保证交易速度,并避免了客户要在不同系统之间做资金调拨。
2. 交互解耦设计
当客户的资产数据被拆分之后,就会出现系统之间交互的问题。比如有一个I级客户要购买金天利,因为他的资金是存储在极速交易系统的,而业务则在普通交易系统中处理,所以这两个系统就需要进行交互;而其它系统也类似,因此正常情况下所有交易系统之间两两都需要交互,复杂度急剧上升。
为了解决这个问题,通过引进一个服务调度中心来解耦交易系统之间的这种交互关系(见图4),当需要请求资金时通过服务调度中心进行转发。每个系统只需要对接服务调度中心,减少了交互复杂性。
图4:引进“服务调度中心”解耦系统间交互
另外,引进服务调度中心还有一个目的是用于实现服务整合的功能,比如客户查询交易流水,由于流水数据是分散在多个系统的,所以可以由服务调度中心将请求分发到各个系统,整合各个系统的结果后再返回给客户。
3. 路由逻辑设计
交易系统分级之后需要解决的另一个问题是,网关应该怎样设计路由策略以满足外部客户的统一接入。通过统一的接口,为客户的接入提供便捷性。根据4.1节对分级交易系统的功能划分,可以设计出对应的路由表(见表4)。
每一条路由项都是由客户级别和业务类别两个维度组成的。网关根据当前客户所属的级别,和请求的业务类型就可以路由到具体的交易结点。
如果每类系统中有多套,比如极速交易系统可能有多套,这时服务调度中心路由时需要结合具体的客户,而不仅仅根据客户的级别。
4. 就近部署原则
为满足低时延需求,交易系统需要部署在尽量靠近交易所的机房。所以在靠近深交所的深圳机房,和靠近上交所的上海机房都需要部署快速交易系统和极速交易系统。
两地部署之后,客户的资产需要进一步拆分,比如I级客户原来资金只有一份,如果他要做两个交易所的业务就需要拆成两份,分别部署在两地。资金拆分之后带来的另一个问题就是应该如何进行调拨?
通常的做法是两地资金独立部署,同个客户需各开一个账户,不进行任何资金调拨。这种方案虽然实现简单,但客户使用的便捷性不足,两地资金无法共享。
所以,一种更合理的方案是,客户使用同个账户管理两地资金,日初资金划分和日间调拨由客户手工发起,再通过服务调度中心进行路由,这就是为客户提供了资金使用的便捷性。
(四)完整交易架构
综合前面的设计,最终形成了新一代证券交易系统整体的应用架构(如图5所示)。
图5:新一代证券交易系统整体应用架构
它是基于当前证券行业的现状,以可落地实施为目标而设计出来的解决方案,满足了证券业务对交易技术的需求:
(1)借鉴Gartner关于MiniService的思想,基于业务变更频率评估的拆分标准,对普通交易系统进行服务化设计,满足证券业务对快速交付的需求。
(2)通过对交易系统做分级设计,以及极速化的架构优化,不仅满足证券业务对交易速度的需求,也满足所有客户做全部场内业务的需求。
这个架构不仅满足了证券业务上的需求,也可以适应未来技术发展而做架构的局部演化。目前可以预见的未来可能的演化方向有两种:
第一种是如果极速交易架构成熟度足以覆盖快速交易业务,比如它可以支持全部场内业务而仍然能够达到较高的速度,那么极速交易系统和快速交易系统可以合二为一。
第二种是如果微服务架构在证券行业的应用已经成熟,那么普通交易系统的服务可以进行更细致的拆分,达到完全解耦,也就是从Gartner所定义的MiniService向MicroService过渡。
因此,这个架构具有比较好的弹性,可以很好的支持业务未来长期的发展。
五、总结和展望
证券交易系统作为支撑证券业务快速发展的最重要基础系统,从最初的营业部分散模式发展到后来的总部集中模式。但近十年来,行业中的证券交易系统在架构上并没有多少发展,累积了很多的历史包袱,导致逐渐出现了影响业务发展的瓶颈。
本文以国信证券在交易系统领域的研究和实践为基础,从证券行业的现状出发,分析了证券业务对交易技术的需求,进而设计了新一代证券交易系统的应用架构,该架构已经在国信内部开始落地实施。
随着金融科技的兴起,技术在金融行业中不仅只起到支撑业务的作用,而将更多的起到引领业务的作用。因此,是时候研究并建设新一代的证券交易系统,使其在未来证券行业的发展中起到更加积极的作用!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/53431.html