東方證券股份有限公司系統(tǒng)運行總部總經理 王海東
證券交易系統(tǒng)是證券行業(yè)最重要的業(yè)務系統(tǒng),集中體現(xiàn)了一家證券公司的綜合技術實力。近幾年,隨著個股期權、港股通、CDR、科創(chuàng)板等業(yè)務的不斷推出,以及市場客戶和交易業(yè)務量的不斷攀升,對證券交易系統(tǒng)的業(yè)務支持速度、并發(fā)及吞吐量、處理時延、安全性、穩(wěn)定性、可擴展性、敏捷性等等均提出了更高的要求。因此,打造兼具穩(wěn)態(tài)、敏態(tài)的證券交易新核心是保持證券公司核心競爭力的關鍵。
作為國內最早關注和踐行分布式技術路線的大型綜合券商,東方證券從2016年12月開始規(guī)劃設計,2018年5月完成了兼具雙態(tài)特性的證券交易新核心的構建,分布式交易系統(tǒng)正式投產上線。經過一年多時間的運行檢驗,系統(tǒng)運行穩(wěn)定,與集中交易系統(tǒng)對比,分布式交易系統(tǒng)實際交易峰值并發(fā)量提高了5倍,上行全鏈路平均時延快100倍,高可用主備切換耗時縮小到百分之一,節(jié)點擴展部署速度提升20倍,業(yè)務開發(fā)周期縮短了一半,單節(jié)點總擁有成本不到十分之一,得到了客戶和業(yè)務部門的高度認同,提高了東方證券在機構業(yè)務市場的知名度和競爭力,取得了令人滿意的業(yè)務效果。
穩(wěn)態(tài)和敏態(tài)
Gartner最早提出了穩(wěn)態(tài)和敏態(tài)的理念。所謂“穩(wěn)態(tài)”,強調要保持現(xiàn)有各業(yè)務系統(tǒng)的安全穩(wěn)定運行,對證券行業(yè)而言,這是所有技術工作的重中之重。所謂“敏態(tài)”,強調敏捷、高效的進行各種業(yè)務創(chuàng)新,這對金融科技廣泛應用的今天,尤其是隨著移動互聯(lián)網、人工智能、大數據、分布式等現(xiàn)代信息技術應用場景的不斷落地,顯得尤為重要。
交易系統(tǒng)能否中長期保持穩(wěn)態(tài),除后期運維人力資源保障外,更重要的取決于它所依賴的基礎架構,東方證券基于分布式技術高可用特性構建的系統(tǒng),攻克了雙活高可用場景下零數據丟失的難題,采用雙活設計,交易節(jié)點故障切換可以做到零數據丟失,并且能在10秒以內完成切換,大幅提升了交易系統(tǒng)的高可靠、高可用水平,保證了中長期的穩(wěn)態(tài)。
交易系統(tǒng)要保持敏態(tài),首先要解決系統(tǒng)間、功能間的耦合問題,其次要解決系統(tǒng)架構的水平可擴展性問題,最后要解決系統(tǒng)對單臺服務器的依賴性問題。東方證券基于分布式技術低時延特性,將業(yè)務邏輯與高可用解耦,大幅簡化了業(yè)務開發(fā)難度,降低了交易業(yè)務系統(tǒng)風險,能夠快速響應業(yè)務創(chuàng)新,縮短業(yè)務實現(xiàn)周期。
穩(wěn)態(tài)和敏態(tài)雖然目標不一樣,但兩者并不矛盾,而是相輔相成的關系。對證券行業(yè)而言,兩者缺一都難以應對激烈的同業(yè)競爭,打造支持“穩(wěn)態(tài)+敏態(tài)”雙態(tài)運營的系統(tǒng)才是王道。
集中式架構的痛點
基于傳統(tǒng)集中式架構的交易系統(tǒng),越來越難以適應未來證券行業(yè)的發(fā)展,存在諸多痛點。
一是集中式架構的業(yè)務和組件高度耦合、難以分拆,擴展性差、牽一發(fā)而動全身。二是集中式架構存在較大延時,處理速度一般在毫秒級,難以滿足快速交易的客戶訴求;三是集中式架構相對封閉,對國外供應商的軟硬件產品依賴性過強,自主選擇余地小且成本高昂;四是集中式架構過于依賴內部代碼邏輯,修改代價較高,且難以支持二次開發(fā),不利于行業(yè)自主創(chuàng)新能力的提升。
綜上,對于穩(wěn)定性要求第一的證券行業(yè),集中式交易系統(tǒng)的每次系統(tǒng)修改和升級都如履薄冰,使得系統(tǒng)同時喪失穩(wěn)態(tài)和敏態(tài)。東方證券較早感知了集中式架構對未來業(yè)務發(fā)展的制約,較早開展了分布式技術轉型,較好的融合了交易系統(tǒng)的穩(wěn)態(tài)與敏態(tài)。
分布式架構的優(yōu)勢
分布式架構是下一代金融交易技術的趨勢,這在證券行業(yè)已形成共識。分布式架構具有降成本、提速度、靈活及擴展性強、架構開放等特性,更適合中國證券市場牛短熊長的特點,也是實現(xiàn)證券公司核心業(yè)務系統(tǒng)自主掌控的最佳可行路徑。在此,以“證券交易資金算法”的例子形象說明分布式架構的優(yōu)勢。
證券行業(yè)經過近30年的發(fā)展,尤其是2005后,各類業(yè)務層出不窮,進而衍生出各種交收模式。隨著參與方的增多,進一步增加了交收的復雜度,使得保障投資者資金正確的資金計算方法越來越復雜,這個算法也正是經紀業(yè)務的核心業(yè)務算法之一。傳統(tǒng)集中交易的資金算法邏輯主要是構建在資金表的資金字段上,一般會把同一種性質的資金用同一個字段表示,然后編寫業(yè)務邏輯進行計算,交收的順序和對手方的特性等都在業(yè)務邏輯中實現(xiàn)。每次業(yè)務修改都可能要修改相關的字段和業(yè)務邏輯,修改后可能影響所有使用該字段和邏輯的業(yè)務。為此我們從業(yè)務架構的角度上考慮改變,嘗試把資金算法構建成一個即穩(wěn)又敏的實現(xiàn)。
首先,我們把資金算法從業(yè)務邏輯中剝離出來,形成多個小核心。每個小核心實現(xiàn)一類資金性質的計算,比如競價可用、港股可用、報價回購可用、銀證可取等等;其次,每個小核心之間按規(guī)范進行對接,這樣每類業(yè)務發(fā)生變化的時候也就只需要修改該業(yè)務的資金算法和業(yè)務邏輯,可以預見其修改的業(yè)務范圍會相對小,修改也相對簡單,而且在調用邏輯充分清晰的情況下比較容易分析修改的影響域并進行精準的驗證。
上述案例的解決方案是典型的“小核心、大外延、分布式業(yè)務架構設計思路”,按照這種思路設計的業(yè)務架構,可以解決緊耦合帶來的痛點,從而實現(xiàn)該業(yè)務場景對應系統(tǒng)功能的穩(wěn)態(tài)和敏態(tài)共存。近觀科創(chuàng)板業(yè)務的技術實現(xiàn),相關的權限規(guī)則、盤后業(yè)務等邏輯,在分布式架構下都是相對獨立的業(yè)務實現(xiàn),完全不影響原有業(yè)務功能。而基于傳統(tǒng)集中式架構則只能修改原有核心交易功能來實現(xiàn)業(yè)務,設計復雜度、業(yè)務風險、維護成本都隨之上升。
用分布式技術支撐分布式業(yè)務
基于傳統(tǒng)集中式架構的交易系統(tǒng)之所以無法實現(xiàn)上述案例提及的功能,與其歷史發(fā)展有關。集中交易系統(tǒng)的業(yè)務與技術架構始于本世紀初,最初的業(yè)務及技術架構與業(yè)務發(fā)展是匹配的。但隨著業(yè)務品種擴充、業(yè)務規(guī)模的飛速增長,各業(yè)務模塊緊耦合的架構弊端逐漸顯現(xiàn)。因此促使我們利用分布式技術來進行業(yè)務解耦的實現(xiàn),并降低系統(tǒng)高可用維護成本。
業(yè)務解耦的實現(xiàn)主要依賴兩方面問題的解決,一是業(yè)務解耦規(guī)范的制定,二是解耦后原子業(yè)務相互調用的性能提升。業(yè)務解耦規(guī)范制定的重點是能否根據業(yè)務內容整理出清晰易用可擴展的核心業(yè)務條線,能否把不同業(yè)務模塊間的切面處理的干凈漂亮。這在傳統(tǒng)集中交易業(yè)務架構初期是比較難的,目前隨著業(yè)務的成熟以及系統(tǒng)設計人員經驗的積累行業(yè)內已經具備了將業(yè)務清晰解耦的條件。第二,對于原子業(yè)務相互調用的性能來說,由于傳統(tǒng)集中式架構依賴于數據庫實現(xiàn)業(yè)務的完整性,且當時業(yè)務邏輯梳理不夠充分,導致一個業(yè)務調用往往會有多次同步的數據持久化動作,同時,原先網絡性能也相對較弱、抖動較大,因此相互調用的性能大多在毫秒,甚至百毫秒級別,并行處理能力較差,不適用于對穩(wěn)定性要求高的大壓力場景?,F(xiàn)在,基于高性能網絡的低延遲方案已經可以讓系統(tǒng)間的調用運行在微秒級,單節(jié)點并發(fā)處理能力達到每秒幾十萬筆,完全可以適配相關要求。
對于高可用的維護成本,傳統(tǒng)集中式架構的交易系統(tǒng)依賴IBM小型機、物理數據庫、高端存儲等高可用技術,一套高可用系統(tǒng)的硬件成本動輒需要千萬級。由于成本較高,因此往往把需要高可用的功能集中部署、集中運維。從而導致運行風險集中、業(yè)務創(chuàng)新實現(xiàn)緩慢的問題,這也正是傳統(tǒng)集中式交易系統(tǒng)的重要痛點。值得慶幸的是,隨著自主可控浪潮的推動,各類高可用技術發(fā)展迅猛,尤其是基于低延遲高可用的分布式技術,其硬件成本通??煽刂圃诎偃f級。這讓高可用系統(tǒng)的應用范圍一下就可以擴展到很多方面,從而使需要高可用特性的系統(tǒng)可以分開部署實現(xiàn)業(yè)務解耦。
基于分布式架構打造證券交易新核心
有了以上提及的業(yè)務和技術架構的準備,也就有了證券交易新核心的基礎。分布式技術打造的證券交易新核心相比傳統(tǒng)集中交易系統(tǒng)具有明顯的優(yōu)勢。
傳統(tǒng)集中交易系統(tǒng)的現(xiàn)狀包括但不限于四點,一是在一個相對高可用的物理數據庫內存放了賬戶、權限、參數、費率、資產以及流水等數據;二是投資者交易指令通常比較復雜,大多會涉及到上述所有類型的數據;三是營運業(yè)務指令相對單純,但一般也會涉及到上述兩到三個類型的數據;四是清結算相關業(yè)務最復雜,通常會反復多次用到上述所有類型數據。
這樣的邏輯一開始看上去似乎并不復雜,數據和業(yè)務分開,需要什么處理什么就可以了。然而這只是表面現(xiàn)象,實際情況是由于所有業(yè)務都依賴這些數據,一旦有新的業(yè)務需要改動時,很難辨識對其他業(yè)務的影響,前面所舉資金算法就是一種場景。如果把數據庫比作證券交易系統(tǒng)的心臟,那么所有業(yè)務使用數據庫的場景就如同萬箭穿心,這種情況下穩(wěn)態(tài)和敏態(tài)也就成了無法實現(xiàn)的幻影。
對比上述四點現(xiàn)狀,通過分布式技術解耦后的系統(tǒng)狀態(tài)如下:
一是業(yè)務上以營運管理為中心將系統(tǒng)分解成多類小核心,并實現(xiàn)業(yè)務核心的高內聚,避免過長的業(yè)務條線;
二是以每個小核心為中心結合相應的外延業(yè)務形成子系統(tǒng),其中引擎和服務可以根據業(yè)務分成多個,例如有競價交易引擎、非交易引擎、大宗交易引擎等等;
三是每個子系統(tǒng)采用分布式的高可用技術保障穩(wěn)定性,從而實現(xiàn)系統(tǒng)的穩(wěn)態(tài);
四是技術上子系統(tǒng)間使用分布式的低延遲高速消息總線進行數據交互,實現(xiàn)業(yè)務解耦,從而易于實現(xiàn)系統(tǒng)的敏態(tài);
為更好證明業(yè)務解耦在技術層面的可行性,我們接下來談一談如何結合分布式技術和物理數據庫實現(xiàn)數據一致性。這里我們在基于高性能的基礎上,以資產計算解耦為例,著重從數據使用的特點進行分析,從而解決一致性問題。通常,要保障一致性往往要先解決持久化問題。本例而言,基于物理數據庫所構建的高可用仍然是非常好的數據持久化工具。因此,我們這個例子中使用物理數據庫作為持久化的一個場景提供業(yè)務管理和查詢服務。
這里有兩類外部指令需要特別關注,一是銀證轉賬,一是資產查詢。對于銀證轉出,其事務一致性要求往往較高,因此在轉賬時應直接從競價引擎先行扣除再轉出。而對于資產查詢,如果只是針對總資產進行統(tǒng)計分析,一致性時延要求則不太高,約百毫秒級,這時我們使用的是競價引擎同步下來的結果,在數據庫與可取資金合并后輸出的數據。此外,對總可取資金查詢也可以這樣實現(xiàn),只有買入依賴的競價可用查詢,因為時延要求比較高,我們建議在競價引擎中直接查詢。這種方案很好結合了分布式技術和物理數據庫分場景實現(xiàn)了數據一致性,完成了資產的分布式計算。
總結
回顧系統(tǒng)建設過程,我們在對業(yè)內分布式架構進行了調研分析后,選擇了與華銳金融技術的專業(yè)團隊合作,一步一步完成了原型驗證、系統(tǒng)設計和開發(fā)、上海節(jié)點上線、南方中心節(jié)點上線等多個里程碑,最終打造出既可靠、又快速的分布式交易系統(tǒng)。目前,系統(tǒng)已經支持了現(xiàn)貨交易、新股發(fā)行、回購、科創(chuàng)板、信用交易等多項業(yè)務,并與賬戶系統(tǒng)、營運管理和清算系統(tǒng)之間實現(xiàn)了良好的交互,目前正在增加更多的業(yè)務引擎。
除了低時延和高可用特性以外,分布式架構還具有很多優(yōu)良特性,比如彈性可擴展、開放、平臺化、易于自主掌控、易于國產化等。這些特點相對于傳統(tǒng)技術而言,在系統(tǒng)的穩(wěn)態(tài)和敏態(tài)建設中都有著不可替代的優(yōu)勢。
經過實踐檢驗,我們深信基于低時延高可用分布式架構打造的證券交易新核心將成為解決傳統(tǒng)集中交易痛點、實現(xiàn)穩(wěn)態(tài)和敏態(tài)并舉的優(yōu)選方案。