Professional Documents
Culture Documents
大数据时代证券核心系统演进
大数据时代证券核心系统演进
21
精
选
研
究
报
告
/精
品
解
决
方
案
案
方
决
解
品
大数据时代证券核心交易系统架构演化
/精
告
报
究
研
选
精上交所技术公司 刘凯
21
20
目录
• 从马背到互联⽹:证券交易系统历史
案
方
• 上交所交易系统演进
决
• 证券交易系统架构的挑战
解
品
• 证券核⼼交易架构演化
/精
告
报
究
研
选
精
21
20
从马背到互联网:证券交易系统历史
• 证券交易所的诞⽣
案
• 问题
方
• 远洋贸易获利颇丰但是风险重重
决
• 如何分担风险共享利润?
解
品
• 首个交易所的诞⽣
/精
• 1613年, 阿姆斯特丹证券交易所
告
• 第⼀只证券东印度公司证券
报
究
研
选
精
21
20
从马背到互联网:证券交易系统历史
案
交易与清算 订单与行情 市场信息
方
决
人工时代 纸张 自⾏车 信鸽/马队
解
电子与机械时代 纸张 机械风动管 电报/电话
品
计算机与网络 计算机 X.25⽹络 电话
/精
互联网时代 计算机 Internet/⼴域⽹ Internet/⼴域⽹
告
报
究
研
选
精
21
20
从马背到互联网:证券交易系统历史
• Stage1:分散式的区域交易所
案
• 通信不便,美国⾼峰期有数百家交易所运转
方
决
• Stage2:国家性的交易所
解
• 部分合并,部分退出,形成每个国家⼏家主要交易所
品
/精
• Stage3:电子交易所的竞争
告
• 信息时代带来的是交易所门槛的降低,依托信息技术的电⼦化交
报
易所能够向传统巨⽆霸挑战
究
• 另类交易系统,场外电⼦市场ECN,电⼦化交易所
研
• Stage4:交易所之间的全球化竞争与合作
• 合并,互联 选
精
21
20
上交所交易系统演进
• 1990年11月26日成立,同年12月19日正式营业
案
方
决
解
品
/精
告
报
究
研
选
精
21
20
上交所交易系统演进
第三代:分布式集群系统(2009.11-⾄今)
案
方
第二代:商用小型机系统(1992.12-2009.11)
决
解
品
第三代交易系统2009年11月23日上线,使用多主机并行
撮合,最高支持10万笔每秒,全天容量2.4亿笔订单。
/精
第一代:局域网系统(1990.12-1992.12)
建立在集群系统上,通过分层部署在关键应用、主机以
告
及⽹络三个⽅面皆有冗余,满⾜容灾和可扩展需求,在
报
发⽣灾备切换时可保证订单数据“零丢失”。
第⼆代交易系统建立在商用小型机系统上,通过双向卫星
究
和光缆建成覆盖全国的通讯网络,支撑了“从上海到全国,
从场内到场外,从营业部到集中交易”的交易⽅式变⾰。
研
选
• Novell主机更换为基于惠普小型机UNIX操作系统
每秒200笔,日处理能⼒200万笔
•
精
1990年11月26日成立,同年12月19日正式营业,是第 • 1993年,采用单向卫星⼴播⾏情,双向卫星接收报单
21
一个直接采用计算机撮合系统进⾏交易的新兴交易所。 • 1997年和1999年进⾏了两次设备和应用的重⼤升级,
• 基于Novell服务器的局域⽹络 系统处理能⼒提⾼到每秒2万笔,日处理能⼒800万笔
20
• 每秒处理3笔业务,月处理成交2万笔 • 后随着不断的扩容和改造,性能和容量不断被刷新
• 市场的委托、⾏情、成交回报等环节仍需要⼿⼯完
成
20
21
证券交易系统架构的挑战
精
选
研
究
报
告
/精
品
解
决
方
案
证券交易系统架构的挑战
高吞吐
案
挑战
方
§ 集中处理整个上海证券市场的证券交易 § 串⾏交易/并⾏交易?
决
§ 交易机会稍纵即逝,需要争抢 § 主机内并⾏/分布式并⾏?
⼀笔订单理论上可触发众多交易 并⾏交易时的
解
§ §
§ 数据传输和处理的集中突发是常态 同步
品
§ 未来需要支持30-50万笔每秒处理 ⼀致性保证
/精
分布式事务
告
实时灾备切换…
报
究
研
选
精
21
20
证券交易系统架构的挑战
低时延
案
方
§ 实时处理性能对证券业务⾄关重要 挑战
可预期性需求
决
§
§ 价格发现能⼒
解
§ 物理门槛:摩尔定律的失效
§ 市场状态的及时同步 强校验机制
品
§
§ 目前普遍为单笔订单毫秒级延时 § 100%安全性:备份的代价
/精
§ 未来需要做到微秒级处理 § 处理的有序性和公平性
告
报
究
研
选
精
21
20
证券交易系统架构的挑战
高可用
案
挑战
方
决
§ 是业务连续性保障,证券市场的关键 § 所有代码都有Bug?!
解
§ 单个部件的可用性和整体可用性均需保 § 所有环节不许有单点隐患
持⾼⽔平
品
§ 灾备实时切换数据0丢失
§ 两地三中⼼的布局要求
/精
§ 关于安全与效率的平衡
告
报
究
研
选
精
21
20
证券交易系统架构的挑战
灵活性
案
挑战
方
§ 业务支持的灵活性
决
§ 升级部署的灵活性 § 业务模型的分析
解
§ 操控的灵活性 § 底层架构的支持
品
§ 应急处理的灵活性 § 数据结构的完善
/精
§ 扩展的灵活性 § 软件架构的可操作性
§ 全球化交易的灵活性
告
报
究
研
选
精
21
20
大数据时代的特征
20
21
精
选
研
究
报
告
/精
品
解
决
方
案
证券核心交易架构演化-分布式架构
• 单体架构
案
方
决
• 分布式层级架构-可扩展
解
品
?
/精
• 微服务 -可编排复用
告
报
究
研
选
精
21
20
证券核心交易架构演化-分布式架构
• 选择
案
• 基于服务的架构 Vs 事件驱动的架构
方
• 事件驱动为主,兼顾基于服务
决
• 关键点
解
• Event Sourcing
品
• CQRS
/精
告
报
究
研
选
精
21
20
16
证券核心交易架构演化-Event Sourcing&CQRS
• Martin Fowler
案
• 整个系统以事件为驱动,所有
方
业务都由事件驱动来完成。
决
解
• 系统的数据以事件为基础,事
品
件要保存在某种存储上。
/精
• 业务数据只是⼀些由事件产⽣
告
的视图,是可重演的。
报
究
研
选
精
21
20
证券核心交易架构演化-Event Sourcing&CQRS
• 使用Event Sourcing进⾏节点灾备与恢复
案
方
• 依靠CQRS增加交易的性能
决
Order
State Machine
Master
解
品
/精
State Machine
告
Slave
报
究
研
State Machine
Slave
选
精
21
Slave
证券核心交易架构演化-Exactly Once
• 证券处理的特点
案
• 必须保证故障时数据处理 “Exactly Once”
方
决
• 保证单节点处理的幂等性
解
• 分布式架构的整体故障恢复
品
/精
• 可以考虑类似分布式快照机制
告
• 或者考虑逻辑时钟的应用
报
究
研
选
精
21
20
证券核心交易架构演化-分布式事务
• 证券交易中的事务
案
• 本地事务
方
决
• 分布式事务
解
• 分布式事务的选择
品
/精
• SAGA
告
• TCC
报
• 交易系统中的实现
究
研
• 每⼀阶段事务均为⼀个正常处理事件
• 事务编号在事件处理节点中传递 选
精
• 事务管理器
21
20
证券核心交易架构演化-高可用设计
• 状态复制
案
方
结果复制,状态同步 输入复制,执行重演
决
解
品
共享磁盘复制 TCP复制 组播复制
/精
告
报
究
• 灾备切换(共识的建立)
研
CoroSync+DL
选
手工切换 Paxos & Raft Zookeeper/etcd
M
精
21
20
证券核心交易架构演化-传输模型变化
案
基于路由的架构
基于总线的架构
方
决
节点1 路由管理
解
节点1
品
路由表
/精
告
报
路由表
节点2 节点3 路由表
究
节点2 节点3
研
选
精
21
案
基于点对点传输的结构
基于组播的结构
方
决
节点1
解
节点1
品
/精
告
交换机 交换机
报
究
节点2 节点3 节点2 节点3
研
选
精
21
性能和公平性
20
证券核心交易架构演化-低延时加速和并行
• 全内存实时数据处理 • 微观进程内的并⾏处理
案
• NUMA节点优化
方
• 多线程并⾏
决
• CPU核⼼分配 • Barrier
解
• 缓存命中率 • 顺序merge
品
/精
• ⽹络加速与Kernel bypass • 分布式并⾏处理
告
• 低延时⽹卡 • 多种模式-负载均衡
报
• 低延时交换机
究
研
• 软件硬件化
• FPGA 选
精
21
20
证券核心交易架构演化-资源可调度
• 数据与计算资源相分离
案
• 计算资源可调度
方
• 内部状态可输出
决
• 应急场景可操作
解
• 进程内的资源管理器
品
/精
• 计算资源:线程
• 内部状态:堆内存和共享内存
告
报
• 提供状态查询,应急修改等功能
究
研
选
精
21
20
证券核心交易架构演化-分布式节点管理
• ⼀个分布式节点管理 以系统为单 以节点为单
案
• 参考数据上场 位的管理 位的管理
方
• 配置数据加载
决
解
• 日志和状态数据的监控
品
• 操作控制
/精
• 升级部署
告
• Service Mesh与Sidecar的
报
• 节点业务的支持
究
研
• 支持类节点的互联
• 交易分布式节点的Sidecar 选
精
21
20
证券核心交易架构演化-国产化的支持
案
系统性能优化工具 调优最佳实践
方
NUMA绑核+CPU预取, 版本升级、锁优化、内存优化等手段调优,多并发场景整体性能提升较大
决
队列操作时延显著下降
解
品
版本升级: 多并发场景下整体性能
/精
• 升级编译器,引入两个编 8
NUMA绑核 译选项(流水线&目标平 7.1
台指令集)
告
C/C++性能分析 7
• 升级Glibc至2.3.1版本
+
报
6 5.4
锁优化:
究
CPU预取配置 • 修改业务逻辑,优化锁的 5
研
顺序,提升锁的执行效率。
• 打开CPU预取
4
资源调度分析
选
• 修改内核代码
3
精
nr_alloc_success_++; 2
21
内存屏障优化:
• 修改C++ atomic原子类
1
20
型指定的内存模型,提升 nr_alloc_success_.fetch_add(1,
内存池性能 std::memory_order_relaxed);
0
20
21
精
选
研
究
报
告
/精
品
解
决
方
案