layout: post title: 交易系統更新與跨越 categories:
在金融業裡大多數採用封閉式系統作為伺服器,且年代幾乎跨越十年二十年之久,而電腦技術先進和開源資源豐富的現在, 透過軟體達成以往大型主機的功能也並非不可能,從Google、Facebook的崛起就可以知道分散式系統再也不是遙不可及的, 在摸索交易系統歷史的脈絡中,一個中國的blog給我很多關鍵字和引導,博主是一位上海證交所的技術主管。 作為一個不到30歲而無幸參與的年輕人來說,真是由衷感謝。
這個blog的內容後來似乎集結成書,書名為「交易系统更新与跨越」武剑锋著,年代為2010年。
趁著這個周末把一些相關重點整理起來。
效能約達80k筆訂單/秒,日成交1.2億筆
對外傳輸協定 FIX Protocol
http://fixglobal.com/home/china-market-on-forward/
上海证券交易所(上交所)白硕总工程师介绍STEP协议的重要性及其在中国的发展
Bai Shuo, Shanghai Stock ExchangeSTEP协议是如何开始的,它是由哪些组织最早开发的?
早在2003年,在开始筹备新一代交易系统(该系统于2009年11月23日上线)项目时,上交所就已决定引进一套基于消息的交易所与券商之间的协议 ,该协议被广泛认可为金融信息交换协议(FIX)。这一开创性的工程获得了中国证券监督管理委员会(证监会)的支持。在全国标准化的框架下,该协议成为证券行业的八大标准之一。WG01工作组负责在证监会的指导下起草该协议。WG01工作组的成员包括:上交所、深交所、上期所以及国信证券等证券公司。该协议被正式命名为《证券交易数据交换协议》,简称STEP协议(非正式名称为中国的FIX,或CFIX),它的推出被视为建立一流证券市场的第一步。STEP 1.0版编写于2004年,并于2005年发布。2006年,STEP被修订为1.1版。
STEP是如何适应中国金融界的总体标准应用的?
虽然FIX是证券行业的全球标准,但STEP更适合中国市场,因为STEP引入了许多本国业务,并对若干消息与字段增加了本地定义。比如,国内证券交易需要控制到投资者账户,这一信息被纳入Parties组件。同时,在8500到8540区间为中国分配了41个字段,用于行情揭示以及各种基金、权证、投票业务。对现有字段取值扩展定义的有:订单类型(tag40)、订单拒绝原因(tag103)、行情条目类别(tag269)、交易状态(tag326)等。
STEP的应用范围如何?其涉及交易周期的哪些部分?适用于哪些资产类别?
STEP涉及交易周期的交易前及交易部分以及一些特定的注册指令。STEP适用于股票、基金、债券、权证、交易所交易基金以及许多特色非交易业务,如首次公开发行、股票增发、基金申购及赎回、权证行权、债券出入库、股东投票等。
较早采用STEP的组织有哪些?有哪些组织目前正在使用STEP?为什么?
上交所已经把STEP用于Level 2行情信息服务,业内相关的信息服务商同期启用了STEP协议。原因是,对于这类创新型的技术服务,采用STEP可以利用其容易扩展和便于维护的特性,且没有兼容遗留接口的负担。
STEP的下一个发展阶段是什么?近期内STEP采用率增长最明显的领域是什么?STEP有新的目标或应用吗?
由于过去五年中许多新业务的推出,STEP正在进行修订。STEP/FAST近期将用于上交所Level 1行情分发。上交所综合业务平台(ATP)上的大宗交易业务、报价回购业务以及约定购回业务、转融通业务也将在近期采用STEP作为业务记录标准格式。在未来,待在创新型业务上积累了更多的经验后,我们将逐步地在传统的核心业务上应用STEP协议方式来作为接口。
系統規模約100萬行 (除了系統基礎架構外應該還包含業務層)
交易系統在此指稱作為證券交易所的交易撮合系統
交易系統的設計可分為兩個面向:交易機制、架構設計
架構上須滿足六項需求
以及系統的特性須滿足
為何系統需持續更新與推進
技術面對於交易系統主要關注
總之,面對軟硬體破壞、request壓力、業務變更下,交易系統能安全運行
X.25 Protocol
主機層使用Tandem Nonstop設備 SuperDOT 中間層(通訊主機) HP的K系列 訊息交換 第三層 用戶端
兩個資料中心 Tandem S系列 K系列 55個node 700個CPU UNISYS主機 - 數據廣播 排隊 報價更新 資料庫 數據交換用乙太網 FDDI互備
NSC Nouveau Systeme de Cotation 四層式架構
LIFFE 三層式架構
Eurex 和 Xetra 四層式
SAXESS
1+1 Active-Standby 部署
第一代 386 PC/Novell 第二代 PA-RISC/HP UX
世界主流平台HP NonStop, HP OpenVMS, Sun Solaris
2003年的Benchmark 選擇幾個歷史交易日作為input 比較撮合能力、延遲時間、容量支援、行情發布
特殊設計的硬體支持單點故障的快速回復
1997年開始使用Intel Itanium處理器 NonStop OS 支持Java
(NonStop機器有其特殊的開發環境存在,非一般的X86?)
DRBD(Distributed Replicated Block Device)
DLM(Distributed Lock Manager)
系統開發上仿照HAL的概念,把應用系統和操作系統隔離,減低移植困難度
新系統設計
在新舊系統銜接期,利用工具將舊系統訂單轉換為新系統協議後,送到後台撮合,進行結果比對,持續一年多
高負載情況下可能導致系統雪崩,要對源頭進行流量控制
交易系統還可能有異步消息,成交回報 被撮合後發出成交消息,一筆訂單可能撮合上百萬張單
解決方法 push + pull 後台主動廣播,前台檢測遺失包並發出重傳請求
前台到中台斷線時,前台自動重連到備用通信伺服器 中台到後台斷線時,通信伺服器停止向前台服務
指數計算
架構進程 - HCCM 主機與通信伺服器通信管理 - 接收來自中台的req,消息轉發給下面三個 - response回傳 - GSRT 同步路由管理 (非交易類請求?) - MSRT 撮合路由管理 - 轉交req給撮合器 - HHCM 主機間通信管理 - 主機間信息路由、傳輸 - ART 異步路由管理 - 文件系統,先寫入訊息到文件,再發送觸發訊息 - 重新觸發器,檢查未完成的異步消息 - HROM 主機恢復管理
process設計sliding windows,req > response到一個數目會暫停發送
後台發送成交回報時,可能是多到多傳輸,發現通信伺服器堵塞時,直接丟棄封包 讓通信伺服器發出回補請求,用auto increment id當消息編號
驗證:輸入上千萬筆賣出1股訂單,用一張單買入上百萬股,使得後台瞬間發出大量成交回報
行情類消息:用多播協議發送給指數主機、通信伺服器和外部接口
(基本上是master-slave架構,master RW、slave read-only,slave replay binlog)