【交易技術前沿】新一代證券交易系統應用架構的研究

【交易技術前沿】新一代證券交易系統應用架構的研究
上交所技術服務 今天

本文選自《交易技術前沿》總第三十八期文章(2020年3月)

陳鎮光 丁一 / 國信證券股份有限公司 [email protected]

   摘要:隨着國內外證券市場的持續發展,當前的證券交易系統已越來越難以滿足業務上的需求。本文從證券行業的應用現狀出發,分析證券業務對交易技術的新需求,研究設計新一代交易系統應用架構,解決當前交易系統普遍存在的耦合過緊、效率不高、擴展性差等問題,以支持新業務的快速上線,並滿足不同類別客戶做全業務的需求,從而更好的支持未來證券交易業務的發展。

一、引言

   證券公司目前普遍採用的是集中式的交易系統,集中交易系統是證券公司最重要的一套系統,它幾乎覆蓋了所有的場內證券業務和部分場外業務。可以說,集中交易系統爲證券行業十幾年來的穩定發展做出了巨大貢獻。然而,隨着證券業務越來越複雜、交易品種越來越豐富,集中交易系統上集成了越來越多的業務邏輯,而且目前的集中交易架構普遍採用的是單體結構,系統的拆分、擴展能力有限,導致系統過於臃腫,越來越無法適應業務的快速發展。
   另一方面,隨着外部接入的放開,量化交易客戶對交易速度的要求越來越高,集中交易系統完全無法滿足量化交易業務對性能的要求。於是,很多證券公司引入了針對量化業務的量化交易系統。然而,集中交易系統和量化交易系統是兩套獨立的體系,在架構上難以做到互相融合,這就制約了客戶做全業務的需求。
   因此,證券行業急需研究、建設新一代的交易系統,而有的券商已經開始在嘗試。

二、證券行業新一代交易系統應用現狀

   新一代交易系統在證券行業中的應用主要基於以下兩種模式。

(一)基於極速框架的應用模式

   這種模式的核心思想是,以性能爲核心,基於極速交易架構,從機構客戶試點開始,試圖擴展到全客戶、全業務。
   基於極速框架設計的交易系統應用在極速交易業務是可行的,但如果要擴展到集中交易業務,就會面臨以下兩方面的挑戰:
   一方面,它設計的出發點是極速,對服務拆分的能力有限,特別是核心交易引擎依然是一個單體結構。它的分佈式主要體現在水平擴展方面,比如可以複製出多個交易引擎來實現高可用,但要對交易引擎做垂直拆分是比較難做到的,因爲拆分增加了交互複雜性,必然影響性能,失去了極速的意義。所以如果採用這種模式,隨着業務不斷增加,將會面臨目前單體架構普遍遇到的問題。
   另一方面,普通的股票交易客戶(俗稱“散戶”)對交易延遲是不敏感的,是否有必要投入極速交易架構?極速交易架構相比普通交易架構需要付出更多的成本代價,但是這種架構在極速方面所做的優化對集中交易業務而言並不能帶來更多的業務價值,也就是投入產出比不高。
   因此這種架構模式具有應用上的侷限性,並不適合推廣到所有業務。

(二)基於微服務框架的應用模式

   這種模式的核心思想是,以分佈式爲核心,基於微服務架構,試圖對交易業務進行完全解耦,並且容量和功能可擴展。
   微服務的架構本身是比較先進的,主要面臨的挑戰是落地實施。
   一方面,服務拆分之後,服務之間的關係複雜,增加了管理和運維的難度。微服務架構之所以能夠在互聯網公司流行,是因爲它們對研發的投入非常大,能夠對微服務組件進行定製開發和維護;而以券商目前的研發實力是比較難做到的。
   另一方面,服務拆分之後就會帶來一些分佈式的問題,比如原來都在一個系統裏通過一個事務指令可以完成,現在拆分到了多個系統,如何保證分佈式事務的一致性?這是一個難題。
   這些挑戰說明了微服務架構在證券行業還不到大規模落地的時候,特別是針對核心交易系統。

三、證券業務對交易技術的需求分析

(一)證券業務對快速交付的需求

   由於目前的交易系統都是集中式的單體結構,隨着業務越來越複雜,集中交易系統集成了太多的業務邏輯,導致系統過於龐大,缺乏靈活性,改動升級代價大、風險高,無法適應業務上快速交付的需求。
   例如,理財業務屬於各個公司的個性化業務,它具有一定創新性、需要通過不斷探索完善其功能,因此需要頻繁發佈更新。理論上,理財業務的更新不應該影響其他業務。
   而實際上由於目前所有業務都耦合在一個系統上,任何一個業務的變更都可能影響其他業務,所以任何一個業務的變更都會導致其他業務也需要同步構建、測試和發佈,極大的影響了交付的效率,無法滿足業務對上線時間的要求,也無法適應未來敏捷開發的需求。

(二)證券業務對交易速度的需求

  1. 不同業務對交易速度的需求

    場內交易業務對交易系統的要求,除了要滿足基本的功能需求之外,越來越多的體現在對交易時效性的要求上。交易速度甚至是某些業務最核心的訴求。交易速度的提升不僅能夠捕捉更多的市場機會,爲客戶帶來更大的收益,也是券商核心競爭力的體現。下面從交易時效性出發,根據交易速度對業務競爭力的影響,筆者對交易業務進行了分類(見表1)。
    ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200601194401684.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dvd290dW8=,size_16,color_FFFFFF,t_70)
    總體上可分爲實時和非實時兩類,其中非實時業務表示對時效性沒有太多要求,或者需要較長時間(分鐘級以上)才能完成交易的業務;而實時業務則表示客戶需要即時完成交易 的業務,或者交易結果會受實時行情影響的業務。實時業務又可以進一步細分爲極速和快速兩個子類別。
    

    A類(極速需求):交易速度是業務的核心需求之一,速度越快越能增加業務的競爭力,也越能增加公司在行業的影響力。

    B類(快速需求):交易速度對業務有一定影響作用,但業務競爭力還受其他因素如算法、外部環境等的影響;或者由於交易量佔比不大,對公司整體利潤沒有實質性影響。

    C類(普通需求):交易速度只需要達到客戶接受的範圍內即可(如秒級),速度的提升對業務的競爭力幾乎不產生影響。

  2. 不同客戶對交易速度的需求

    從客戶的角度出發,不同的客戶對交易速度的需求是不同的。但隨着程序化交易的普及,越來越多的客戶將意識到交易速度的重要性,因爲它將直接影響收益,例如搶漲停板、套利、逃頂等。下面根據客戶的交易方式和當前的市場競爭力,分析交易業務的速度指標需求(見表2)。
    

在這裏插入圖片描述
總體上分爲量化客戶和普通客戶。普通客戶指的是目前市場上佔絕大多數的散戶。量化客戶指的是機構客戶和一些專業的個人投資者,他們藉助現代統計學和數學的方法,利用計算機技術來進行交易。其中量化客戶又進一步細分爲普通量化客戶和極速量化客戶。

I級(量化客戶-極速):對A類業務的交易速度非常敏感,因爲資金量大並且交易頻繁,客戶有意願投入更多成本用於提升交易速度。  

II級(量化客戶):客戶關注交易速度,並且藉助計算機程序自動化執行,基本上能夠跑贏市場上絕大多數的散戶。在其他條件不變的情況下,客戶希望速度越快越好。   

III級(普通客戶):客戶對交易速度並不敏感,因爲是通過純手工操作,秒級內的延遲對他們的影響並不大。   

四、新一代證券交易系統應用架構設計

(一)交易分級設計

   速度和容量等需求對軟件設計和硬件規格的要求是不同的,因此根據前面對業務和客戶的分級需求,證券公司需要建設分層次的交易系統,以達到成本和收益的最佳組合(如圖1所示)。

在這裏插入圖片描述
圖1:分級交易系統

   (1)普通交易系統:定位於面向所有普通客戶進行全部場內和部分場外交易。系統實現的目標是穩定、容量大並支持全業務,技術上主要採用傳統的數據庫作爲存儲組件。
   (2)快速交易系統:定位於有快速交易需求的量化客戶做場內實時業務。系統實現的目標是高性能、高可靠性、容量可擴展,並支持場內絕大部分業務;技術上主要採用目前較爲先進的內存交易技術。
   (3)極速交易系統:定位於需要極致交易速度且資金量大的少量託管量化客戶或自營業務。系統實現的目標是交易通道的低時延,技術上採用目前最先進的軟、硬件加速機制。
   爲滿足所有客戶對全部業務的交易需求,對每類系統的功能和邊界進一步詳細劃分(見表3)。

在這裏插入圖片描述
除了滿足業務需求外,上表對各層次功能的劃分主要考慮了以下因素:
(1)技術可行性主要受兩個方面的影響:
一方面是業務邏輯複雜度。越複雜的軟件或硬件,執行速度必然越慢,也越難以進行調優,所以融資融券交易業務最好不要放在極速櫃檯中實現。
另一方面是系統的併發量。單機的性能隨着併發量的上升而下降,但併發量超過單機閾值時就面臨拆分或分佈式部署,進一步增加系統複雜性。所以極速櫃檯只能面向少量客戶。
(2)建設與管理成本:理論上速度快的系統完全可以滿足慢速系統的時效性需求,但越快的系統需要投入的成本會越高,所以極速層和快速層都設定了准入門檻,不可能接入所有的客戶。
(3)用戶體驗:讓客戶切換使用系統意味着損失了客戶的便捷性,在其他條件不變的情況下應用盡量讓客戶在一個系統中完成所有業務。

(二)服務化設計

   服務化設計主要解決普通交易系統的快速交付問題。服務化設計最關鍵的要點是如何把控拆分的粒度。下面根據Gartner對服務化定義的三種不同拆分粒度[1]進行分析:
   (1)宏服務(MacroService):這是目前普遍存在的系統,就是類似於單體架構,基於共享數據和公共的訪問接口,它的主要優點是方便管理。
   (2)小服務(MiniService):基於中粒度的服務,將單體架構拆分成少數相對獨立的服務,主要目標是改善敏捷性。
   (3)微服務(MicroService):基於小粒度的服務,每個服務擁有私有的數據、私有的接口,服務之間調用關係複雜,主要目標是實現持續集成、持續交付。
   基於MacroService的架構是券商的現狀,根據前面的分析這種架構的問題比較突出;而基於MicroService架構存在的問題在前面章節也已經分析過,目前並不適合在證券行業大規模推廣。所以真正適合證券行業的服務拆分方式是基於MiniService的架構,因爲它既能達到解耦的目的,也不會帶來太大的複雜性。
   借鑑MiniService的思想,以及對業務快速交付需求的分析,下面對集中交易的業務進行拆分。如果拆分粒度太大就達不到解耦的目標,如果拆分過細又會導致管理複雜,所以需要進行權衡,權衡的標準就是業務的變更頻率。因爲不同業務的變更不應該互相影響,這是解耦的主要目標,越是變更頻繁的業務越能夠成爲獨立拆分的備選服務。因此,根據從實踐中統計的變更頻率大小,集中交易業務適合拆分成如下獨立的服務(如圖2所示)。

在這裏插入圖片描述

圖2:普通交易系統的服務化拆

理財服務:理財銷售與管理,如場外基金、金天利等;   

兩融服務:融資融券、轉融通的業務邏輯處理;   

債券服務:債券交易、質押回購、協議回購等業務邏輯處理;   

交易服務:對接證券交易所的場內交易通道;  

資產中心:管理客戶的資金、股份數據;   

賬戶中心:管理客戶的賬戶數據,如客戶適當性數據等;   

清算中心:實現統一清算邏輯,從各系統採集數據並分發交收後結果。 

(三)極速化設計

   極速化設計主要解決引進快速交易系統和極速交易系統後面臨的架構問題。
  1. 資金股份管理

    交易系統分級之後需要解決的一個問題就是客戶的資產(即資金和股份)如何管理。一種方案是採用集中的管理方式,也就是通過獨立的資產中心管理所有客戶的資金股份。這種方案的優勢是方便管理,但無法滿足低時延的需求,特別是對於極速交易系統,如果每次交易都需要到另一個系統查詢、更新資產數據,將極大影響性能。
    因此,一種更合理的方案是對資產數據按客戶類型進行拆分(見圖3)。I級客戶的資產數據部署在極速交易系統,II級客戶的資產數據部署在快速交易系統,III級客戶的資產數據部署在普通交易系統。由於III級客戶的數量比較大,並且對交易速度要求不高,根據前面服務化設計思路,可以拆分出針對III級客戶的獨立資產中心。
    

在這裏插入圖片描述

圖3:客戶資產按客戶類別獨立拆分和部署

   三類資產數據之間不交叉,每個客戶只有一份資產數據並且部署在儘量快的系統中,以此來保證交易速度,並避免了客戶要在不同系統之間做資金調撥。
  1. 交互解耦設計

    當客戶的資產數據被拆分之後,就會出現系統之間交互的問題。比如有一個I級客戶要購買金天利,因爲他的資金是存儲在極速交易系統的,而業務則在普通交易系統中處理,所以這兩個系統就需要進行交互;而其它系統也類似,因此正常情況下所有交易系統之間兩兩都需要交互,複雜度急劇上升。
    爲了解決這個問題,通過引進一個服務調度中心來解耦交易系統之間的這種交互關係(見圖4),當需要請求資金時通過服務調度中心進行轉發。每個系統只需要對接服務調度中心,減少了交互複雜性。
    

在這裏插入圖片描述
圖4:引進“服務調度中心”解耦系統間交互

   另外,引進服務調度中心還有一個目的是用於實現服務整合的功能,比如客戶查詢交易流水,由於流水數據是分散在多個系統的,所以可以由服務調度中心將請求分發到各個系統,整合各個系統的結果後再返回給客戶。
  1. 路由邏輯設計

    交易系統分級之後需要解決的另一個問題是,網關應該怎樣設計路由策略以滿足外部客戶的統一接入。通過統一的接口,爲客戶的接入提供便捷性。根據4.1節對分級交易系統的功能劃分,可以設計出對應的路由表(見表4)。
    ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200601194852886.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dvd290dW8=,size_16,color_FFFFFF,t_70)
    每一條路由項都是由客戶級別和業務類別兩個維度組成的。網關根據當前客戶所屬的級別,和請求的業務類型就可以路由到具體的交易結點。
    如果每類系統中有多套,比如極速交易系統可能有多套,這時服務調度中心路由時需要結合具體的客戶,而不僅僅根據客戶的級別。
    
  2. 就近部署原則

    爲滿足低時延需求,交易系統需要部署在儘量靠近交易所的機房。所以在靠近深交所的深圳機房,和靠近上交所的上海機房都需要部署快速交易系統和極速交易系統。
    兩地部署之後,客戶的資產需要進一步拆分,比如I級客戶原來資金只有一份,如果他要做兩個交易所的業務就需要拆成兩份,分別部署在兩地。資金拆分之後帶來的另一個問題就是應該如何進行調撥?
    通常的做法是兩地資金獨立部署,同個客戶需各開一個賬戶,不進行任何資金調撥。這種方案雖然實現簡單,但客戶使用的便捷性不足,兩地資金無法共享。
    所以,一種更合理的方案是,客戶使用同個賬戶管理兩地資金,日初資金劃分和日間調撥由客戶手工發起,再通過服務調度中心進行路由,這就是爲客戶提供了資金使用的便捷性。
    

(四)完整交易架構

   綜合前面的設計,最終形成了新一代證券交易系統整體的應用架構(如圖5所示)。

在這裏插入圖片描述

圖5:新一代證券交易系統整體應用架構

   它是基於當前證券行業的現狀,以可落地實施爲目標而設計出來的解決方案,滿足了證券業務對交易技術的需求:
   (1)借鑑Gartner關於MiniService的思想,基於業務變更頻率評估的拆分標準,對普通交易系統進行服務化設計,滿足證券業務對快速交付的需求。
   (2)通過對交易系統做分級設計,以及極速化的架構優化,不僅滿足證券業務對交易速度的需求,也滿足所有客戶做全部場內業務的需求。
   這個架構不僅滿足了證券業務上的需求,也可以適應未來技術發展而做架構的局部演化。目前可以預見的未來可能的演化方向有兩種:
   第一種是如果極速交易架構成熟度足以覆蓋快速交易業務,比如它可以支持全部場內業務而仍然能夠達到較高的速度,那麼極速交易系統和快速交易系統可以合二爲一。
   第二種是如果微服務架構在證券行業的應用已經成熟,那麼普通交易系統的服務可以進行更細緻的拆分,達到完全解耦,也就是從Gartner所定義的MiniService向MicroService過渡。
   因此,這個架構具有比較好的彈性,可以很好的支持業務未來長期的發展。

五、總結和展望

   證券交易系統作爲支撐證券業務快速發展的最重要基礎系統,從最初的營業部分散模式發展到後來的總部集中模式。但近十年來,行業中的證券交易系統在架構上並沒有多少發展,累積了很多的歷史包袱,導致逐漸出現了影響業務發展的瓶頸。
   本文以國信證券在交易系統領域的研究和實踐爲基礎,從證券行業的現狀出發,分析了證券業務對交易技術的需求,進而設計了新一代證券交易系統的應用架構,該架構已經在國信內部開始落地實施。
   隨着金融科技的興起,技術在金融行業中不僅只起到支撐業務的作用,而將更多的起到引領業務的作用。因此,是時候研究並建設新一代的證券交易系統,使其在未來證券行業的發展中起到更加積極的作用!

參考文獻

[1] Gartner. Not Just Microservices: Choose the Right Service Granularity for Your Applications[R]. https://www.gartner.com/en/documents/3947496. 2019-07-17.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章