【摘要】新一代分布式证券核心交易系统普遍采用内存化交易,虽然系统性能得到了极大提升,但是存在内存容量有限、异常恢复慢、缺乏通用干预手段等问题。本课题提出一种分布式多级缓存架构,减少集中式数据访问风险、缓存容量大等问题;基于内存映射技术实现高性能、大容量内存缓存,使用“热点数据优先加载,非热点数据延迟加载”策略,解决内存异常恢复慢问题;提供轻量SQL引擎,实时操作内存数据,实现内存可视化。此外,本课题提出了一种多种客户分区策略,将千万级客户横向划分到多个交易节点,单节点内纵向划分到多个交易核心,从而满足高容量、高吞吐、低延时的交易需求。


(相关资料图)

01

课题背景及意义

1.1

课题背景

为顺应数字经济和实体经济深度融合的国家战略,证监会科技监管局发布的《证券期货业科技发展“十四五”规划》针对核心交易系统建设提出要求:“持续打造行业新型基础设施建设,在行业核心机构和组织平台建设方面,着力打造优化新一代交易结算系统”。

近年来,基于分布式低时延架构已成为证券交易系统架构的发展趋势,全球大型证券交易所、境外大型投行、国内头部券商核心交易系统都向分布式架构转型,以达到高性能、高并发、可扩展的建设目标。

1.2

研究意义

分布式证券核心交易系统普遍采用内存交易。内存化交易面临诸如稳定性、容量有限、高性能、易用性、可维护性等问题或风险:

海通证券以全自主研发模式,探索了基于高速容错消息总线的新一代分布式交易系统(简称HOTS系统)。一方面借鉴传统数据库高可用原理、丰富的运维手段,强化稳定性、可维护性、易用性;另一方面通过数据建模、分区,应用架构革新等,解决容量、性能问题。

02

课题目标及内容

2.1

课题目标

在整个金融行业面临系统架构、业务需求、性能和运维方面各种挑战的背景下,HOTS系统不仅需要解决目前现有系统面临的诸多问题,而且需要支撑未来10~20年的业务持续发展,进而为整个金融行业提供一些有价值的、可参考的应用成果。

2.2

课题内容

本课题将从四个研究方向展开:

分布式多级缓存;

基于内存映射技术的内存缓存;

基于轻量SQL引擎的内存缓存;

千万级客户内存缓存研究与实现。

2.2.1 分布式多级缓存

图1 HOTS系统架构图

HOTS系统基于分布式低时延应用架构,采用高速容错消息总线和内存交易技术,它具有高性能、低时延,高稳定性、高可用性等特点。HOTS系统每个应用都具备缓存数据能力,天然地形成了分布式多级缓存。

图2 分布式多级缓存示意图

1)接入网关缓存登陆客户资产、交易结果数据;

2)交易前置缓存全量客户资产、交易结果数据;

3)交易核心缓存全量客户资产、交易请求、结果数据。

分层缓存架构,将集中数据访问分解为多级数据访问,提升访问效率。每级缓存实现多副本数据持久化,采用日志回放(重演)机制,快速重建内存,增强容错性。

2.2.2 基于内存映射技术的高效内存缓存

新一代核心交易系统内存缓存管理主要问题:数据恢复慢、数据一致性、内存安全性、内存占用大。

为了解决这些问题,本课题提出一种基于内存映射技术的高效、安全的内存缓存管理方法,有效提升内存重建速度,降低重演前后数据的不一致性概率,解决内存占用大问题。

本课题高效内存缓存的核心技术:

1)存储结构:特殊的数据文件、索引文件结构,热点、非热点数据分区存储;

2)缓存机制:热点数据全量加载,非热点数据延迟加载(索引查找记录行号后再加载数据),索引全量加载;

3)缓存替换策略(LRU+LTU):LRU表示替换最近被请求最少的对象;LTU表示替换最早使用的对象(证券交易客户行为特点);

4)重演恢复:基于内存映射技术并发加载内存快照,再增量重演总线数据;

5)内存管理器:提出一种高效的内存申请算法,制定标准的内存访问接口,表级、行级并发控制,保证内存更加安全、高效访问。

图3 特殊的数据文件、索引文件存储结构示意图

2.2.3 基于轻量SQL引擎的内存缓存

传统关系型数据库用SQL语句管理数据库,极大提升运维效率,而内存化数据常使用特殊的运维工具,不仅维护、学习成本高,而且操作不当还可能导致内存数据破坏,引发生产事故。

图4 轻量SQL引擎内部结构图

因此将SQL引擎植入内存结构表,彻底解决内存缓存可视化难题,降低运维复杂度,提升系统易用性、健壮性。

图5 SQL语句操作内存缓存示意图

轻量SQL引擎实现缓存可视化操作:

1)支持WEB柜台对多个节点发送SQL请求,以及结果展示;

2)支持节点级、群组级、设备级三种模式控制SQL执行;

3)支持SQL语句预执行;

4)兼容常用SQL语法。

2.2.4 千万级客户的内存缓存研究与实现

对证券核心交易系统缓存数据建模,可以分为三类:

1)客户数据:包含客户信息、股东账户、资金、持仓等;

2)交易数据:包含委托、转账、仓单、负债等;

3)基础数据:包含证券基本信息、系统参数等;

单节点500万客户、500万委托,客户数据占总量数据82%,因此该类数据成为内存缓存研究的关键对象。

2.2.4.1 多策略客户分区

根据证券核心交易业务特点,本课题提出了多种客户分区策略:

1)客户类型:分成普通经纪客户、信用客户两类;

2)营业部:将若干个营业部客户集中到一个交易节点;

3)营业部、委托量策略:营业部策略基础上考虑营业部每日委托量,将委托量大的营业部尽可能均衡分布到多个交易核心;

4)白名单策略:分布式系统升级时常用灰度发布策略,因此灰度客户指定交易核心,减少新业务上线风险。

实际运营管理时,通过业务监控分析交易特点,灵活设置客户分区策略,T+1日时生效。

2.2.4.2 总线点对点通讯

单节点内部署多交易核心组,由于其订阅消息相同,交易前置、报盘会分别给多个交易核心组推送数据,这样交易前置、报盘总线通讯量会变大N倍(N=核心组数量)。因此增加客户级、股东账户级路由推送,保证交易前置、报盘总线消息推送给指定核心,减少总线通讯量,降低全链路时延。

图6 点对点通讯逻辑示意图

2.2.4.3 系统异常恢复

盘前数据上场时,根据总线消息,构建内存结构表,生成内存快照文件。重演时,应用优先并发加载本地内存快照文件,再根据指定的总线序号增量重演。

假如重演时应用校验缓存文件异常,沿用总线全量重演模式。

图7 异常重启流程图

03

课题成果应用

3.1

基于内存映射技术的内存恢复

测试单节点100万、500万、1500万三种客户量,主要测试案例:

1)全量客户加载缓存大小,对比只加载热点客户(100万)缓存大小;

2)对比内存映射、常规文件读取加载内存快照耗时,再对比总线全量重演。

表1 多种内存恢复耗时

主要成果:

1)单节点500万客户,优先加载100万热点客户恢复,缓存空间大幅下降(66%+);

2)随着缓存空间下降,内存快照重演较总线重演耗时大幅下降(77%+),内存映射性能更加极致,下降98%至秒级;

3)热点客户量稳定时,即使单节点客户大幅增加,缓存空间增长比例低(仅6%),恢复耗时变动平稳(仅为秒级)。

3.2

内存缓存可视化成果

图8 WEB柜台实现内存可视化界面

主要成果:

1)支持节点、群组、设备三级缓存操作;

2)权限管理,以及操作流水复核,便于运维人员核对SQL执行结果;

3)解决内存缓存黑盒子问题,实现缓存的可视化,为内存巡检、监控赋能,提供盘中干预方法,便于异常时快速运维。

3.3

应用效果

分布式缓存架构下系统整体性能提升,大幅提高核心交易业务服务能力,满足客户的交易需求。

图9 系统性能指标对比图

04

总结与展望

本课题从分布式多级缓存、基于内存映射技术的高效内存缓存、千万级客户内存缓存研究等方向对证券市场前沿内存交易技术与创新热点进行研讨,期望为行业提供一些参考思路。

展望未来,还需要完成以下工作:

1)优化内存缓存索引的内存管理效率,以及索引查找效率;

2)轻量SQL引擎支持多表联合查询等复杂SQL语句;

3)完善内存缓存的实时监控。

推荐内容