金融行业市场风险管理涉及计算模型复杂、数据量大、时效要求高等特点,传统实现方案中依赖于批量计算架构实现。典型的传统金融行业批量计算架构基于批量服务器和数据库服务器之间大量数据交互实现,最显著的缺点是网络IO和磁盘IO占用了绝大部分处理时间和CPU性能,对于千万级数据量的批量计算通常需要小时级的处理时间。在金融领域投资交易风控计算场景下,需对千万级乃至亿级数据量进行多维度反复读取、运算,使用传统的存算分离架构体系已难以满足性能与成本的平衡。
针对该技术瓶颈,工商银行软件开发中心在充分调研了业界主流内存数据库解决方案(如Apache Ignite、Memcached等虽能降低磁盘IO,但应用于千万级数据量的场景仍需要通过大量网络IO进行数据交互)以及分布式内存计算框架(如Apache Spark、Hadoop MapReduce和Apache Flink等,也仍需在计算任务执行过程中通过文件系统或数据库进行数据读取,计算性能仍无法最大化,无法达到性能设计目标)优缺点的基础上,结合金融风险场景特点,自主设计研发了分布式内存计算架构,目前已在理财等产品线风险限额指标事中控制等场景应用上线,打造了高性能金融投资交易风控共享服务,实现了投资交易风险指标事中刚性控制能力优化和风控管理水平的提升。
总体设计思路
工行研发分布式内存计算架构,将源数据直接存储于应用服务器内存,计算过程中读取内存数据实现存算一体;并通过分片算法将数据分布在分布式应用服务器节点内存,解决了因应用服务器内存大小限制导致的全量数据无法加载到单一节点的问题,成功实现了将千万级数据量的金融投资交易事中风险指标耗时计算从小时级缩短至分钟级甚至秒级,有效提升了理财事中风控场景计算效能。该架构在在其他金融业高频、高时效、大计算量场景(如市场风险量化计算、估值核算等)中具有广泛的适用性。分布式内存计算架构设计的具体技术实现设计分为内存数据加载、存储结构设计、计算任务调度、计算任务执行四部分。
内存数据加载
数据需预先存储于节点内存中,可利用空闲时段通过批量任务(如晚间批量)预加载相关数据,并通过Hash算法将数据分配至各个内存运算节点。具体实现可分为二步,首先,由外部适配应用将对应的数据从源数据库导出为文件,存储于分布式文件系统中,如该文件需要进行分片则由专用节点通过MurMur3算法对文件进行拆分,拆分后的分片文件仍存储于分布式文件系统中;其次,内存运算PAAS节点定频扫描对应分布式文件系统路径,并解析对应分片文件,保存于PAAS节点内存中。设计上,节点支持通过独立节点加载非分片数据文件或者在每个分片节点加载非分片数据文件,具体设计如图1。
图1-内存数据加载
存储结构设计
应用服务器节点内部应实现三种数据结构,以应对不同场景运算处理的存取检索性能需求和存储数据量需求,通过文件名称规则配置三种对应的数据结构:
1. 内存Map:应优先支持HashMap,同时应支持TreeMap,以灵活支持KEY前缀检索,保证存取检索性能最大化。
2. SQL引擎:通过H2嵌入式数据库SQL引擎实现,兼容标准化SQL语句,支持WHERE子句的各种复杂检索条件,提供最大的检索条件灵活性,特别是支持GROUP BY及其SUM、COUNT等相关聚合函数(需适配对应的表结构)。
3. 堆外Map:通过H2嵌入式数据库MvStore引擎实现,基于本地文件和内存缓存的堆外Map,通过适度牺牲存取性能,可以存储较大数据量,具备和Map相同的接口特性,同时也支持KEY前缀检索。
图2-存储结构设计
计算任务调度
任务通过协调节点发送给分布式内存运算节点,任务信息应包含:任务名称、任务批次编号、任务参数(JSON形式)和任务相关数据。联机RPC接口将任务信息直接通知至分布式内存运算节点;批量接口先将文件存储于分布式文件系统,再类似联机接口通知至分布式内存运算节点。分布式内存运算节点先加载任务相关数据至内存中,再执行计算任务,最终将计算结果持久化至Redis或SQL数据库。
图3-计算任务调度
计算任务执行
分布式内存计算节点将接收到的计算任务推送至计算任务线程池,通过线程池执行具体任务实现,计算任务执行时可访问本地内存中的数据,或者通过缓存机制配合Redis内存数据库读取参数或者少量动态数据,以保证计算性能最大化。为防止计算结果存储堵塞计算任务,计算结束后将计算结果推送至推送线程池,并通过统一的异步推送任务将运算结果持久化至SQL数据库或者Redis内存数据库。
图4-计算任务执行
该分布式内存计算框架解决了金融投资交易事中风控指标计算任务量量大、基础数据多样、时效要求高等难点,支持产品层指标模板灵活配置和检查规则灵活组装,目前已满足分钟级甚至秒级的高时效的事中风控要求,大幅超越金融业系统供应商的计算性能,事中风控计算性能达到金融同业最高水平。系统投产上线后,已累计为工商银行理财交易提供三大类60余种风险指标事中控制,为日均2万余笔投资交易提供事中风险防范,日均计算监控事中交易风险指标约300万次,单笔交易风险识别效率提高40倍以上,进一步提升了理财产品风险管控能力。
展开全文
- 移动支付网 | 2023/6/5 11:55:52
- 移动支付网 | 2023/6/2 10:35:43
- 移动支付网 | 2023/6/1 17:35:14
- 移动支付网 | 2023/5/31 11:44:20
- 移动支付网 | 2023/5/29 11:49:54
- 移动支付网 | 2023/5/22 15:45:03
- 移动支付网 | 2023/5/16 15:07:06
- 移动支付网 | 2023/5/16 12:06:33
- 移动支付网 | 2023/5/16 11:22:01
- 移动支付网 | 2023/5/12 12:02:11
- 移动支付网 | 2022/11/14 12:01:31
- 移动支付网 | 2020/10/27 18:12:50
- 反洗钱实务 | 2019/9/9 9:24:18
- 人民网 | 2019/8/27 9:13:25
- 移动支付网 | 2019/5/5 10:57:56