上海证券交易所技术开发部陈晨——证券交易系统架构设计_挑战与实施经验分享
2020-02-27 684浏览
- 1.证券交易系统架构设计 —— 挑战与实践 上海证券交易所 技术开发部 陈晨 cchen@sse.com.cn +86 138-0199-1611
- 2.上交所交易系统介绍 交易系统技术架构 挑战及解决之道 交易系统的未来 目录
- 3.上交所交易系统介绍
- 4.发展历史 • 1990 年 11 月 26 日成立,同年 12 月 19 日正式营业。
- 5.上交所 1990.12.19 • 开业第一天即 采用电子撮合 系统 • 每秒处理 3 笔,月处理 2 万笔 1992.12 • 系统升级,采 用 UNIX 小型 机 • 每秒 200 笔, 日处理 200 万 笔 1993.1 • 采用卫星广播 行情 • 双向卫星接收 订单 1997 , 1999 • 系统两次升 级,性能提升 至每秒 2 万 笔,日处理 800 万 发展历史 开业的第一天就采用电子撮合系统进行交易撮合 基于 Novell 服务器的局域网络 每秒处理 3 笔业务,月处理成交 2 万笔 市场的委托、行情、成交回报等环节仍需要手工完成 1992 年 12 月,系统升级 Novell 主机更换为基于惠普小型机 UNIX 操作系统 每秒 200 笔,日处理能力 200 万笔 1993 年,采用单向卫星广播行情,双向卫星接收报单 1997 年和 1999 年进行了两次设备和应用的重大升级 系统处理能力提高到每秒 2 万笔,日处理能力 800 万笔 后随着不断的扩容和改造,性能和容量不断被刷新
- 6.上交所 2009.11.23 • 新一代交易系 统上线 • 使用多主机并 行撮合 • 最高支持 10 万笔每秒 • 全天容量 1 亿 笔订单 • 账户容量 1 亿 2014.11.17 • 沪港通业务上 线 发展历史 新一代交易系统的上线 2009 年 11 月 23 日,新一代交易系统上线 使用多主机并行撮合 最高支持 10 万笔每秒 全天容量 1 亿笔订单 帐户容量 1 亿 基于新一代交易系统, 2014 年 11 月 17 日沪港通 业务上线
- 7.市场结构图 市场参与者 监管者 SFC 基础设施 港交所 券商 基金公司 上市公司 证监会 行情商 指数公司 上交所 深交所 中登公司 大商所 郑商所 上期所 中金所 产品 沪港通 股票 债券 基金 OTC 权证 商品期货 投资者 香港投资者 境内投资者 QF II RQFII RQFII QFLP 贵金属 QDII 海外市场 股指期货
- 8.核心交易系统内部结构 交易主机 交易主机 系统结构图 交易主机 交易主机 通信服务器 通信服务器 交易专网 券商柜台系统 交易所报单机 外部接口主机 外部接口主机 消息总线 存储网关 其他各类系统
- 9.交易系统技术架构
- 10.交易系统技术架构 交易系统的三层式划分 交易层 定序层 撮撮撮撮合合合合器器器器1111 • 分配股票(银行、汽车) • 分配基金、 ETF 定定定定序序序序器器器器1111 撮撮撮撮合合合合器器器器2222 • 分配股票(制作业、零售) • 分配债券 定定定定序序序序器器器器2222 接入层 接接入入点点 AA 接接入入点点 BB 接接入入点点 CC 券券商商 基基金金公公司司 资资管管公公司司 沪沪港港通通
- 11.功能 实现 模式 • 同组交易主机为接收单一输入序列的状态 机 • 从一系列独立运作的交易主机节点中自动 选举产生主节点 • 可利用集群锁服务来选举主节点 • 备机可选择“重演”或者“重放”模式 • 执行交易业务逻辑 交易层
- 12.交易层 集群锁管理模式 基于 OpenVMS 的 Lock 机制,实现了一套用于集群 (Grou p) 管理,集群内各主机同步、通信的工具库 81 82 83 获取锁成功,成 为集群 Master 获取该锁失败, 成为集群 Slaver, 同时被 告知 Master 为 81 获取该锁失败, 成为集群 Slaver, 同时被 告知 Master 为 81
- 13.功能 实现 模式 • 提供一组彼此对等的实例同时提供对外服 务 • 不需要考虑主从划分和失效接管 • 点对点的路由转发 • 将券商端的订单提交给定序层实例 接入层
- 14.功能 实现 模式 • 多播通信机制 • Paxos 算法、虚同步 • 自主研发 、商业软件 、开源软件 • 逻辑概念,可采用单独排队机定序或者主 撮合定序 • 高可用设计的关键、确定全序 • 持久化及保持动态一致性 定序层
- 15.挑战及解决之道
- 16.交易系统面临的挑战 交易系统在设计之初就要考虑到如何满足和平衡各 方面的技术需求 高性能 高可用 易扩展 交易系统 架构设计是一 个平衡和抉择 的艺术
- 17. 衡量交易系统性能主要指标 吞吐量 订单时延 系统容量 高性能
- 18.高性能 1. 流水线化内存撮合 HHCCCCMM 主主机机与与通通信信服服 务务器器间间通通信信 HHHHCCMM 主主机机间间通通信信 撮合内部消息流 MMSSRRTT 撮撮合合直直通通路路由由器器 PPrree MMaattcchheerr 撮撮合合预预处处理理模模块块 MMaaiinn MMaattcchheerr 主主撮撮合合模模块块 撮 合 下 游 消 息 流 DDaattaa RReepplliiccaattiioonn 数数据据持持久久化化 TTrraaddee CCoonnffiirrmmaattiioonn 成成交交确确认认 MMaarrkkeett DDaattaa 行行情情数数据据 TTrraaddee BBooookk MMaaiinnttaaiinn 成成交交簿簿维维护护
- 19.高性能 2. 内容和键值分离 精简的进程间通信消息 消息 body 通过内存缓存; 进程间传递短小的消息 header ; 进程通过 header 信息,访问内存获取消息实体; Msg App-0 A Msg G App-n Ref. C App-1 Msg B F Shared Memory Ref Msg Ref. D F G E Ref. ApApp-p2l. Process 1
- 20.高性能 3. 数据打包处理 消息的打包处理 请求消息通过用 header 表示后很短小,支持多条打包模式; 申请新的共享内存消息,消息体中包含多个请求实体的 header ; 实际消息通信中传递打包消息的消息 header 即可; 进程接收消息后,根据打包消息 body 中的多个实际消息 header , 逐一处理。 Msg App-0 A Ref. i D App-1 Msg F E B Shared Memory Ref 1 Msg 1 Ref 2 Msg 2 … Ref n Msg n C Ref i Ref 1 + Ref 2 + … + Ref n
- 21.高性能 4. 多线程异步 IO 应用异步 IO 提升性能的典型案例 调用进程通过异步 IO 连续的抛出一组 IO 请求, RMS 可以并行地处 理这些请求,成倍地提升 IO 吞吐量; 连续发出的请求应当有一定限制,当未完成的请求数量达到限制时 ,调用进程可以主动将自己阻塞。 调用进程 达到并发 IO 请求 的上限,主动阻塞 调用进程 AST RMS ( 文件系统 )
- 22.中央主机集群 Host Host 交易主机集群 Host Host Host Host 高性能 5. 多机并行 陆家嘴数据中心 外高桥数据中心 CS OES CS CS OES OES
- 23.高可用 衡量交易系统可用性主要指标 恢复时间目标 RTO ( Recovery Time Objective s) 恢复点目标 RPO ( Recovery Point Objectives )
- 24.高可用 技术抉择的难题 人工侦测故障 ? OR 应用程序自动侦测故障 应对单点故障 OR 应对双点故障? 同城灾备同步复制 OR 异步复制?
- 25. 站点备份 高可用 1. 站点备份
- 26.高可用 2. 主机备份
- 27.高可用 3. 进程恢复 进程的恢复机制 事务 / 请求数据带事务的文件存储,包含相应的状态位; 任何一个进程异常,根据事务文件中数据状态重演恢复; 无法应对程序本身逻辑错误 Txn Data A App-0 Trigger C Txn Data B Database/ Journaled File Data + status App-1 D E App-1’
- 28.高可用 4. 消息重发 / 防重处理 系统发生主备切换 切换完成后的自动通知机制 未响应消息重新路由机制 消息防重复处理机制
- 29.高可用 5. 流控机制 流量 / 负载控制: 系统必须提供自保护机制来处理异常的大量或者突发交易量 包括主动控制和被动控制 主动控制: 主动控制实现于前端 ( 请求源端 ) 会员,根据尚未响应的订单数量控 制请求发送速度 系统可配置成会员端总体的请求数量不超过后台的处理能力,因此 从源端控制整个系统的负载 被动控制: 路由架构内置的自我保护机制 每个路由架构组件跟踪其输入 / 输出差异,并且根据监测的差异触发 自我保护机制来或者阻塞消息流,或者弹回新的请求
- 30.易扩展 主要指标 扩展性衡量系统适应业务发展与变更的能力,既包 括业务容量的扩展又包括业务模式的扩展 应对方案 高扩展性需要在内部核心数据结构和接口定义上预 留足够的扩展空间。 系统内部结构上,通过分层抽象服务使得某一个层 次的升级更新不影响到全局架构,通过模块化设计 使得某一个模块的变更不影响到整体稳定。
- 31.易扩展 1. 系统架构的扩展 后台的扩展 • 交易层中的各个平台, 可以平行扩展设备,支 持业务的容量和品种的 发展 • 接入层中,可以根据网 段规模和接入点无缝第 进行平行扩展;每个接 入点属于无状态设备 前台的扩展 • 对于市场参与者的接入 ,既提供客户端的模式 ,也支持消息协议和 API 的模式扩展 • 交易所提供的接入端可 以无差异的多地不少和 彼此备份、分流业务数 据等 LAN WAN or LAN LAN EI CS Step OES TH Trading Cluster CH Central Cluster Host Tier Back End CS … CS CS Tier Fix OES … Binary values Protocol Tier Front End … OES OES Tier
- 32.易扩展 2. 应用配置的扩展 基于产品的不同类别配置,可根据负载均 衡的原则,重新进行划分或扩展 单一类别的处理容量可以通过配置参数进 行调整。调整后的容量在系统重启后自动 生效 银行股 主机 1 医药板 块 零售板 块 订单量 200w 订单量 200w 银行股 A 银行股 B 主机 1 主机 2 医药板 块 零售板 块 订单量 500w 订单量 150w
- 33.易扩展 3. 设计模式的分层设计 业务应用系统 Patten Layer 批处理架构 BAT Arch 消息通讯架构 应用进程架构 MSG Arch SHL Arch 监控架构 MON Arch 操作架构 OPT Arch 高可用架构 H Arch 错误 传递 Function 共享内存库 Layer SHM Lib 日志库 LOG Lib 同步 IO 库 SIO Lib 异步 IO 库 AIO Lib 配置信息库 CFG Lib 数据算法库 DSM Lib 应用锁库 LCK Lib 数据 类型 Wrapper Layer C99 标准 POSIX 标准 OS Wrapper OS Feature 3nd Party Lib Wrapper GLIB Log4c 框架 配置 OS 操作系统 ( Linux, UNIX, Free BSD 等支持 POSIX 接口的操作系统)
- 34.交易系统的未来
- 35.交易系统的未来 轻量化的技术系统 小型机 - 》 PC 服务器 开放性的转变 封闭操作系统 - 》开源操作系统 商业应用软件 - 》开源应用软件 形成企业级的基础库 EzWEB EzSOFT HAP 新技术新算法的研究 FPGA Infiniband 全内存备份
- 36.互联网格局下的交易系统 更多的外部攻击 更长的交易时间 更复杂的业务处理 更紧迫的竞争压力
- 37.THANKS!