作者:刘成龙、蔡跃
用户背景
中信建投证券成立于2005年11月2日,是经中国证监会批准设立的全国性大型综合证券公司。2016年12月9日,中信建投证券在香港联交所上市,股票代码6066.HK,公司A股于2018年6月20日在上交所主板上市。公司具有行业领先、均衡全能的投资银行业务,连续8年保持行业前3名;具有产品丰富且富有竞争力的财富管理业务,公司拥有900万证券经纪业务客户,托管证券市值4.31万亿元,位居行业第2名。累计完成超过8,000单股票及债券主承销项目,主承销金额超过5万亿元,累计完成股票基金交易量超过80万亿元。凭借高度的敬业精神与突出的专业能力,中信建投证券主要经营指标目前均位居行业前10名。
业务需求
在数字化转型过程中,无论是客户、监管还是证券公司内部都对数字化建设提出了更高的要求,从个性化定制的金融产品到多方协同的实时风控能力,乃至公司内客户、业务、资金等多方面的整合管理,都需要一条稳定的、安全的实时数据链路作为重要支撑,以保证各个条线能够具有对业务需求快速反应的能力,同时对业务需求和客户状态进行实时感知并实时给出智能化、差异化、个性化的反馈,为客户提供更优质、更高效、更主动、更安全的服务。
此外,由于金融行业涉及的业务领域众多,公司多年来积累了大量复杂的与业务高度相关的基础数据,在发现问题、分析问题,解决问题的过程中,如何协调业务前、中、后台以及科技部门等多方面配合来开展业务口径的梳理与加工逻辑的开发,成为目前亟待解决的关键问题。
中信的数据中台架构如图所示,主要分为以下几大板块:由 Greenplum 数据仓库和 Hadoop 大数据平台构成的数据中心板块;以离线开发、实时开发、数据交换为主的数据开发板块;以及数据门户、数据网关、数据治理、运营管理等板块构成。
其中数据开发板块目前的任务主要以离线开发与数据交换的离线数据处理为主。但随着业务对数据时效性的提高,基于离线批处理的 t+1 业务模式已经无法完全满足当前市场环境下对信息及时性的需求,这也是大力发展实时开发,力求为客户提供更高时效性数据服务的原因。
从数据门户统一入口进入实时开发模块,首先将集中交易、融资融券等业务信息的实时增量数据拉取到 Kafka 消息队列,Flink 消费 Kafka 实时流数据并与维表数据进行数据加工。加工逻辑中涉及的维表数据量比较大时,需要离线开发与数据交换,通过离线跑批的方式完成对维表的数据准备。最后将结果数据写入关系型数据库或 NoSQL 数据库。数据网关再通过读取结果数据生成 API 接口,对下游的系统提供数据服务。
数据治理板块中的数据管控模块主要管理数据中台的数据库表以及业务相关的数据库表的元数据,用户可以在数据门户订阅他们所关注数据库表的变更信息。当订阅的数据表发生了变化的时候,运营中心可以通过统一告警模块,多渠道通知订阅用户数据库表的变更情况,以便于开发人员及时调整数据加工的任务。
Flink 实时流处理架构首先通过 Attunity 工具采集业务数据库的 CDC 日志,将同一系统下的数据库表变化写入 Kafka 的一个 topic 队列中,这也就意味着 Kafka 的每一个 topic 中都会有多个表的数据,所以在 Flink 的 Kafka source 要先对 schema 和 tablename 这两个字段进行一次过滤,获取想要拿到的数据表的 CDC 数据流,再进行后续与维表的加工逻辑。将处理后的数据写入结果表,根据需求不同写入不同的数据库进行存储。
证券行业数据有两个明显特征:
第一个特点是开盘的时间固定,大量业务在收盘后数据量会大幅减少,甚至有一些业务在收盘后不再产生新的数据。为了节约资源,需要根据实际情况对那些与开盘时间紧密相关的任务设置启停时间;
第二个特点是金融数据的重要性,大量场景下不允许数据偏差存在。针对数据可靠性要求极高的特征,需要对大量实时任务设置夜间数据修正的离线任务,保证数据的正确性。
《Apache Flink 案例集(2022版)》——5.数字化转型——中信建设-Apache Flink 在国有大型银行智能运营场景下的应用(下):https://developer.aliyun.com/article/1227892