背景
近年来随着国际形势的变化,信创产业成为我国国家战略的一部分。一直以来,一直以来,全球 ICT 产业底层标准、架构、产品、生态等要素均由国外公司或机构制定和控制,使我国 ICT 产业乃至广大用户面临被卡脖子、数据泄露、信息安全等诸多风险,尤其是 2018年以来,中兴、华为等公司的遭遇成为鲜活的实例。
为了应对这种局面,我国将信创产业纳入国家战略,提出了“2+8”发展体系,志在摆脱对国外 ICT 产业的依赖,此即信创产业产生的背景。国家《“十四五”国家信息规划》指出,信息化进入加快数字化发展、建设数字中国的新阶段。加快数字化发展、建设数字中国,是顺应新发展阶段形势变化、抢抓信息革命机遇、构筑国家竞争新优势、加快建成社会主义现代化强国的内在要求,是贯彻新发展理念、推动高质量发展的战略举措,是推动构建新发展格局、建设现代化经济体系的必由之路,是培育新发展动能,激发新发展活力,弥合数字鸿沟,加快推进国家治理体系和治理能力现代化,促进人的全面发展和社会全面进步的必然选择。
在信创战略和国家数字化转型的大背景下,越来越多的金融机构主动拥抱变化,突出“数据驱动业务”的重要地位。近年来,在全球经济数字化浪潮的带动下,我国大数据与实体经济的融合应用不断拓展。
某证券公司(后文简称“公司”)今年来深入信创、数字化转型相关工作,积极推进信息系统的信创化改造和数字一体化实践。当前公司正在数字化转型的关键阶段,随着数字化的深入,公司内部运营和业务系统每天都会积累大量的数据,对于沉淀在系统深处的数据进行提取和整合愈发困难,然后上层应用对于数据的需求却越来越迫切。
传统的数据开发工具已经无法满足现有业务部门的引用需要:
世界金融形式动荡,对于中国金融反洗钱要求越来越高,传统的数据开发与调度方式无法满足券商反洗钱打通所有业务数据流程和时效性需求,往往一次源系统的变化就会需要大量的人工参与与调整;
监管报送要求很高,不同频次不同优先级的报送,传统调度无法自动化满足复杂场景报送要求;
新兴数据源与湖仓一体给数据开发和调度对于开源生态和国产信创生态提出了更高的挑战;
业务实时性要求更高,盈亏情况、资产账户信息、持仓股票信息都需要实时计算,批流一体对于大数据研发和调度都提出了更实时、更及时的挑战;
数据处理结果要支撑下游业务部门,部分业务关乎市场交易、公司经营,对于系统稳定性有极高的要求。
在以上背景下,公司基于信创技术路线建设适用于券商业务场景的DataOps平台,提供一站式的数据开发、任务编排、运维管理服务,目标提升数据需求的交付效率和流程管理水平。
概要
某证券公司证券基于白鲸开源旗下产品WhaleStudio打造DataOps平台,为数据需求开发交付提供统一高效、完善的解决方案。DataOps平台采用全栈信创,从服务器芯片、操作系统到数据库、中间件均选用国产自研产品,实现全面替换。DataOps平台自2022年11月上线以来,提供了良好易用性、功能全面的数据开发工具集,数据共享交换、SQL脚本开发、编排调度、任务运维、数据服务的集成,有效降低数据处理链路的开发成本。公司信息技术部、基金子公司、期货公司的数据开发人员基于DataOps平台,对公司经纪管理、投资银行、经营分析、托管等业务的数据需求进行开发、编排、调度,运维,平台应用于公司反洗钱、实时盈亏计算、监管报送、数据精算等多个核心应用,累计编排定义工作流超过3000个,上线任务数量接近16000个,交易日平均运行工作流实例数量超过5000个,日均任务执行任务数量超过20000个。目前公司各业务线数据处理任务还在持续上线DataOps平台,整个平台规模还在持续增长中。
图1 DataOps平台模块
项目所涉及的数据来源情况
项目涉及数据来源:数据来源于该证券公司内部各业务部门实际使用数据,涉及交易、账号、资金流水、融资融券、基金、期货等等涉及公司业务各方面的数据,同时来自于内部研发和业务部门需求反馈统计,部分数据根据公司监管要求进行了模糊处理。
成果所涉及的数据驱动业务能力
DataOps平台对于券商大数据治理的业务驱动主要体现在以下几个方面:
为了满足反欺诈、监管报送等业务需求,基于工作流的任务编排可以将数据处理的各个环节进行串联,开发人员能够在全局视角对数据处理链路进行定义、修改、运维。
鉴于湖仓一体、多种业务相互关联的背景,系统提供丰富的依赖方式,能够支持对外部、内部条件的依赖触发。并且支持依赖影响分析,帮助开发者快速了解任务上下游情况。
鉴于监管报送有复杂的要求以及实时性要求,系统以平台化方式纳管全量的周期化任务,提供丰富的运维手段,出现故障第一时间通知运维。
对于该券商内部10余个部门,提供租户-项目-用户的权限体系,在保证高效协作的前提下,有效控制团队间任务和资源权限,保证符合合规要求。
根据券商特殊的交易市场业务,针对券商交易日历场景设计自定义日历和日历函数功能,在配置大数据任务调度时间、业务日期、补数据等方面提供便利,用户可以灵活根据业务日期的要求进行传参。
面对券商监管和合规要求,工作流、任务以及所使用的资源信息都支持打包发布,且提供相关API接口对接持续集成工具,从而支持数据任务的敏捷开发,符合DataOps发展趋势。
综上所述,DataOps平台在数据任务的管理、开发、编排、运维等方面均提供了灵活丰富的解决方案,能够有效提高数据需求的开发交付效率,同时借助DataOps平台也能让整体数据需求的开发流程更加规范。
成果涉及的关键技术和工具平台
某证券公司DataOps平台以基于OushuDB为主的数据引擎作为底座,在此基础上搭建数据交换平台、离线/实时数据开发平台、统一调度系统等子系统。DataOps平台开箱即用,容易上手,各业务部门的数据分析师、数据开发人员可以自主使用平台进行数据开发和配置。公司各信息系统的数据由数据交换汇聚到湖仓平台,再通过离线数据开发平台和实时数据开发平台开发数据处理任务。统一调度系统将各种类型的任务编排为工作流,以工作流承载整个数据处理流程,并纳管任务执行节点,分配服务器资源,定时进行任务调用。数据在DataOps平台中经过清洗、抽取、标记、建模、分析形成指标数据或者结果数据,然后再通过数据交换或者数据服务共享给下游。
图2 DataOps平台功能架构
某证券公司DataOps平台针对证券行业增加了企业级产品功能并加强系统安全与稳定性,提供使用者开发、运行管理、配置监控几大模块,提供云IDE开发调试数十种数据环境之外,也帮助用户低代码的拖拽或者导入开发调度与数据同步任务,支持与Git集成实现自动化的CI/CD。助力企业数据消费者、数据探索者、数据分析家、数据科学家
,以及数据客户/供应商提高调度效率,降低生产成本,有以下优势:
简单易用:可视化操作界面,直接使用拖拽就可以数十种数据组件的开发和调用,也可以使用Excel导入或者Python编程的方式实现批量任务生成;
节约人力:强大的运维和Ops工具,适配各种复杂开发和运维场景,可以结合Git实现自动化CI/CD,上线之后有多种运维工具和自动化处理机制帮助处理生产环境异常。
运行稳定:各子系统服务均采用的分布式架构,部分服务节点故障不会影响整体稳定性,支持弹性扩展,从而实现性能线性增长,一个集群可管理多云百万任务;
多生态支持:支持云组件、大数据组件、数据组件、AI组件、Http组件等数十种常见组件,并结合开源生态不断扩展升级中。
全模式DAG开发
在后疫情时代,远程办公与A/B分组已经成为常态,而各种数据组件的复杂端口和各种开发使用的客户端往往是远程办公的挑战。同时,在现场办公室来自不同团队水平各自不同,有习惯使用代码开发的程序员,有只会SQL的数据分析师,DataOps平台提供全模式DAG开发能力,可以使用IDE、低代码、python代码、Excel导入等方式,快速整合内部使用者和开发者的开发使用流程,最终实现内部的DataOps流程落地:
图3 DataOps平台DAG编排功能
全研发链路管理
在研发部署管理过程中有多种管理模式,部分采用DevOps的CICD模式,部分采用导入导出的部署模式,支持企业多种研发模式的管理,帮助企业快速适配DataOps流程,实现开发、测试、部署的整体流程提效:
结合Git的CI/CD能力
DataOps平台与Git工具集成,该解决方案将持续集成/持续部署(CI/CD)实践与工作流结合使用。CI/CD可以加快代码发布速度,CI/CD不仅使开发人员能够更快地做更多的事情,而且还使他们(和他们的运营伙伴)做得更少。利用好CI/CD有如下好处:结合使用我们自己的工具和开源工具来构建,测试和部署代码;自动测试,在代码审查批准后自动部署;模版化的CI/CD流程大大加快了构建和部署到多个云中多个环境的时间;自动化测试和持续集成使部署更安全,更优化;CI/CD大大减少了构建和部署应用的时间,并消除了构建环境的问题;CI/CD管道自动化大大提高了团队的交付速度。
图4 DataOps平台持续集成流程
高性能全链路保障
得益于去中心化的多Master多Worker机制,DataOps平台的调度模块获得了极高的稳定性和性能,目前在用户生产环境已经有数百万任务在线,秒级任务高大10万并发都可以顺利运行的实际案例。因为调度模块系统采用Master与Worker分离的模式,在保证高性能高稳定的的同时,也可以对调用的资源进行控制和分配,同时利用多租户结合类似Yarn、K8s等底层资源池,可以实现任务之间的并行度控制、资源控制、用户资源限制等诸多功能。目前经过测试调度模块比同类型调度产品Airflow性能要快15倍,同时也支持了更好的稳定性。
图5 DataOps平台调度模块分布式部署架构图
高效多维的调度监控运维
在生产环境当中,经常会遇到一些不可控的意外情况出现,例如某些系统数据晚到、源系统变更或者出现一些特殊脏数据,导致部分任务和数据处理工作流异常。而大部分企业,管理层和监管层的日报对于上报的时间的要求是极为严格,如果没有强大的工具帮助,此时就需要大量的运维工作来处理异常,而且极容易产生误操作。DataOps平台实现了一套强大的容错机制和工作流运行管理,让运维人员事半功倍的处理各种复杂场景。
数据处理工作流、任务的血缘追溯
图6 DataOps平台数据开发任务血缘分析
强大的容错机制
在企业数据运行过程当中,经常由于其它系统访问或者大任务处理造成数据源的响应时间过长,从而导致客户端访问失败的情况DataOps平台有丰富的容错机制,让用户设置等待时间、重试次数时长等,最大限度的让系统自动从错误机制中恢复,而无需人工参与。
丰富的时间管理
对于时间的变化经常会遇到各种复杂场景:例如日历不是自然日历,有多种业务日历;切日时间不是正常的0:00分,而是特殊时间点;脚本当中处理的数据日期与调度时间不同等。如果没有强大的时间管理功能,企业非常难以推广到更多的部门使用。
多种日历管理
日历管理支持按业务需求定制化,比如可以自定义跳过周末不执行,仅工作日执行。也可以将已有的日历导入系统中,或者通过提供的日历模版编写自定义日历。切日时间调整
用户可以通过修改日切时间,更改日切T的日期逻辑判断。如下图,以跑批日历为例子,日切时间为16:00,以20220323举例,16之前,通过图中T-1=20220322,可推断T为20220323,16点之后T为20220324。
数据日期(牌)管理
创建牌(数据日期、业务日期),从而实现调度时间和数据业务日期不同的情况,DataOps平台支持前后自定义翻牌;支持自定义脚本直接生成业务日期数值。操作上,在DAG画布中通过创建翻牌任务,关联牌,这里便是强大的业务翻牌任务的使用。
项目成果效益
直接效益方面:
在国际金融动荡的大环境下,加强反洗钱流程自动化程度和检测效率:过去由于反洗钱涉及到多个信创、大数据平台的计算,缺乏合适的自动化平台化管理,很多指标依赖于大数据集群,运维难度高。很多操作需要人工审核或者修改代码,缺少可视化、自动化的平台和方法实现反洗钱业务流程效率无人看守和自动处理。使用本项目的自动化开发和调度平台之后,人员运维投入减少50%,同时提升业务修改实现效率50%,可以打通整个反洗钱相关数据的获取和服务,更好的为反洗钱业务提供数据支撑。
提高监管报送自动化比率,减少人员手动运维20%工作量:监管报送含有多张复杂报表(有一些特殊复杂的需求,每月第一、第二、第六交易日需要取上个月最后一个交易日,每周第一、最后一个交易日跑上周数据和当天数据),过去使用之前几乎每一个不同交易日都需要定制化数据处理任务,这样设计比较复杂,开发周期长且容易出错。新业务需求过来需要非常复杂的开发工作,而使用新平台提高了整体新业务对于监管报送的工作量,整体运维和开发工作量减少20%。
实现公司批流一体计算,让经纪业务实现实时盈亏分析:使用本套平台和可以利用批流一体对场外基金的盈亏数据做出实时展示,过去大多用离线数据批处理,对于增量数据处理用微批(半小时),这样数据的时效性和准确性不够,现在用离线+全量+实时增量数据(日间),这样大幅提升了盈亏分析数据展示的时效性和准确性。可以对盈亏情况、资产账户信息,持仓股票信息等实现实时分析,让经纪业务客户满意度大幅提高。
不可替代性:
智能化的大数据开发和调度系统系统在大规模数据处理和分析中具有不可替代性,其自动化调度、分布式架构和可视化设计能够提高反洗钱、监管报送、经纪业务等业务的工作效率、减少人工干预、优化资源利用、提高数据处理速度等,在竞品中有着独特的优势。其针对券商应用场景所设计的自定义调度日历、日历计算函数等功能,有效覆盖复杂的调度传参应用场景,具有鲜明的独创性。
潜在效益:
目前DataOps平台在多项证券业务上体现出显著效果,公司在业务拓展、提高业务处理效率方面得到明显提升,而平台未来在更多的业务部门使用和适配,可以全面提高数据驱动效率,减少人工参与,在数字化转型、数据湖仓一体化建设中都将发挥关键作用,是长期业务发展的前提和基础。通过DataOps平台上任务的高效运行,数据才能源源不断地被汇集、分层、加工、输出,为企业持续提供数据服务,将数据价值转化为业务价值。
项目亮点及创新性
支持反洗钱,跨多系统依赖的自动化调度
反洗钱涉及到多个信创、大数据平台的计算,缺乏合适的自动化平台化管理,很多指标依赖多个大数据组件,运维难度高。很多操作需要人工审核或者修改代码,缺少可视化、自动化的平台和方法实现反洗钱业务流程效率无人看守和自动处理。
反洗钱任务调度中一个重要问题就是如何解决依赖触发,工作流中的任务往往具有上下游的依赖关系,很多任务必须在某种条件达成之后才能够运行。在数据处理链路中,可能涉及多个系统、多种业务的复杂依赖情况,针对此类问题,DataOps提供了多种方式的依赖管理方式。
首先是反洗钱工作流内部的依赖管理,这种情况使用画布中的连线即可确定任务的前置任务。
项目内部的工作流之间的依赖,DataOps平台的编排调度模块提供了子工作流的节点类型,可以直接将项目内部的某个工作流作为另一个工作流的任务节点,由此形成依赖。
对于对于反洗钱还涉及到多个业务系统数据的跨工作流的依赖,调度模块引入Dependent节点。此节点支持跨项目对整体工作流或者单个任务进行依赖。在工作流中可以引入此类节点,配置依赖的项目和任务,只有上游都运行成功,下游才可以继续运行。
图7 依赖配置图
在反洗钱还有一类场景是任务依赖外部条件,如需要数据库某个标志或者是某个文件的生成。DataOps平台支持事件触发功能,事件触发分为文件、数据库和Kafka三种方式。
文件事件触发方式会检查用户设置的文件路径的文件是否存在,发现文件存在可以触发后续执行流程。
数据库事件支持用户自定义SQL,一旦发现SQL查询有结果即可触发后续流程。
Kafka消息事件,用户可以配置Kafka数据源,检查指定Topic的数据是否到来,从而触发后续执行。
大数据开发与调度平台在依赖管理方面为用户提供了多层次的选择,能够满足各种依赖的场景,让人员运维投入减少50%,同时提升业务修改实现效率50%,可以打通整个反洗钱相关数据的获取和服务,更好的为反洗钱业务提供数据支撑。
多种交易日历实现建工自动化报送
监管报送含有多张复杂报表(有一些特殊复杂的需求,每月第一、第二、第六交易日需要取上个月最后一个交易日,每周第一、最后一个交易日跑上周数据和当天数据),过去使用之前几乎每一个不同交易日都需要定制化数据处理任务,这样设计比较复杂,开发周期长且容易出错。而监管报送的数据日期与交易所开市时间密切相关,公司绝大多数的业务数据并非按照自然日进行处理的。
交易日历中遇到节假日、周六周天的情况,都需要跳过处理。然而在各种业务数据的完成时间同样有很大差异,例如基金申购、赎回、确认等,都可能涉及T-1、T-2等方式。因此调度时间和业务时间绝大多数情况无法同步,不能简单获取当前日期进行数据处理。
下图列举了A股市场数据处理中需要使用的日历、调度时间,可以看出整个逻辑相当复杂。如果涉及香港、美股甚至其他市场的业务数据,那么调度时间的复杂性就会成倍增加。
图8 券商调度周期示意
DataOps平台针对证券行业的调度需求,设计了日历、牌、日期函数等工具,有效解决此类问题,提供灵活多样的定时方式。首先引入自定义日历功能,用户可以点选或者导入excel配置日历。日历的作用有如下三点:
配置定时的时候引用,用于控制调度日期。
配置牌值使用,用于控制业务日期。
补数据时候,业务日期范围会与日历取交集,来确定补数据的业务日期。
图9 日历配置
牌主要作用是为工作流确定业务日期,具体实现是关联某个日历,然后按照日历的日期,在规定时间翻牌,从而达到业务日期的更新的目的。
图10 牌的配置
结合日历和牌可以灵活的设置调度时间和数据业务时间。例如:需要在每个交易日之前完成T-1交易日数据处理的场景,就可以使用跑批日日历来配置调度时间,使用T-1交易日的牌来确定业务时间。
统一大数据开发和调度平台还支持了日历函数的相关功能,能够基于任何一个自定义日历和基准时间来计算日期,比如计算业务日期所属月、当月第一个交易日、每年最后一个交易日等。利用日历函数可以在工作流任务中灵活的进行日期参数的动态传递。从而实现新业务开发对于监管报送的自动化处理,整体运维和开发工作量减少20%。
批流一体计算,让经纪业务实现实时盈亏分析
盈亏分析作为某证券公司蜻蜓点金App一个重要的功能,主要是为用户提供当前账户资产、持仓、盈亏收益等信息,帮助用户根据当前持仓情况及时作出投资决策调整。因此,该功能不仅要向用户提供准确的盈亏收益数据,也需要对数据时效性有一定要求。
过去受限于技术壁垒主要采用离线批处理的模式,凌晨会对全量用户基金净值数据进行离线加工,然后针对日间增量补充的数据则使用定时离线微批的方式,从而在开市期间为用户提供盈亏收益数据,这种传统的处理模式不仅处理流程复杂,而且时效性不足,存在很大的缺陷。因此有必要借助新的技术和工具进行改造。
DataOps平台作为某证券公司全新打造的研发运维一体化平台,基于DataOps平台,采用流批一体的处理模式,盈亏分析场景整体处理方式改造为离线批处理完成对夜间全量数据的计算加工,基于夜间全量计算结果针对日间的增量数据采用实时计算方式,实时计算能高效的完成增量数据的处理,极大的缩短了数据延迟,为用户提供新鲜的基金持仓盈亏收益数据,帮助用户及时作出投资决策,让经纪业务客户满意度大幅提高。
权限设计与全链路数据任务编排
大数据开发调度系统中在操作层面有项目、工作流、任务的开发、运行、上线等操作,在菜单层面有定时、日志、告警等配置,平台涉及多种调度资源如日历、牌、定时、数据源等。所以在权限体系设计过程中,涉及多种资源和菜单的权限管理,需要依托于项目来设计权限体系。DataOps平台采用租户-项目-角色的权限体系,具体描述如下:
(1)租户下有若干项目,用户需要加入租户,才能加入租户下项目;
(2)租户作为资源管理单位,租户中的日历、牌、数据源等在租户下的项目中对用户可见。
(3)在项目中分为管理员、数据开发、数据运维、访客4种权限,分别对应不同的菜单和操作权限。
(4)分为平台级(不可修改的共享资源)和租户级。平台级资源由超管配置,对于所有用户可见、可使用,比如日历、牌、定时等。租户级的资源,如数据源、环境、worker分组、租户内特殊定时、日历、牌等,用户自定义资源默认在租户内项目下可见、可以使用。
综上所述,在权限体系方面DataOps平台的理念为通过租户管理资源权限,通过项目角色管理菜单和操作权限。此种设计理念对于其他存在菜单、资源、操作权限控制需要的系统,都具有参考意义。
同时,DataOps平台为了实现数据处理任务的编排,需要将数据处理全流程进行串联,就不可避免要把数据中台各个系统的任务进行串联。针对这个场景,DataOps平台支持了自定义任务类型的接入方式。
DataOps平台采用API接口方式,抽象出来标准任务流程的接口:
项目任务查询接口:查询当前项目下目标系统的任务列表,用于为节点选择对应的任务。
任务执行接口:根据任务信息,调用启动目标系统任务执行。
任务状态获取接口:根据任务标识获取任务状态,用于DataOps平台上任务状态展示。
任务实时日志接口:根据任务标识获取任务日志信息,用于查看任务执行日志。
任务停止接口获取:通过任务标识终止任务执行。
目标系统的任务支持以上接口,就可以对接在DataOps调度模块上进行统一的任务编排。另外,DataOps的调度模块支持传递动态参数给目标系统任务,能够达到根据传递的数据日期进行数据处理的目的,从而可以运行历史数据。
这种任务通过API抽象接入的方式,对于许多有系统交互、任务执行的系统具有借鉴意义。
跨环境的发布方案
DataOps作为数据开发过程中的重要工具,必然涉及开发环境到生产环境的迁移。针对此问题,DataOps平台的各子系统均提供了发布打包功能,支持任务粒度进行跨环境发布、导入。具体的实现流程如下:
(1)用户选择项目、工作流进行打包,每个工作流任务信息被转化为json格式,按照项目工作流目录进行存放,生产发布包。
(2)用户在测试开发环境打出发布包,在生产环境进行导入操作,系统会检查相关调度资源如执行用户、定时、日历、任务组等资源是否存在,权限是否满足。校验完毕之后,就会将相关工作流导入到对应项目中。
在此生产发布过程功能的开发和使用过程中,总结了以下经验:
任务相关相关配置、资源数据都需要使用唯一标识,且保持生产测试环境保持一致。
用户权限在生产和测试环境需要保持一致。
全栈信创部署架构
DataOps平台采用全栈信创架构,具体技术选型如下:
信创底座:在服务器和操作系统的选择上采用了全面国产信创替代的方案,其中:服务器统一使用了鲲鹏ARM v8处理器,这种处理器具有出色的计算性能和节能优势,能够有效满足海量数据处理的需求。操作系统则统一使用了麒麟V10系统,该系统通过安全加固和优化,保障了系统的安全可靠。
大数据底座:大数据存储系统选择国产极速云数据库OushuDB,这套系统既拥有强大的扩展性,具备良好的容错能力,能够稳定管理千万级的数据,此外,OushuDB作为新一代分布式湖仓一体数据底座,可以提高查询响应的速度,非常适合券商千万级的交互式分析和报表生成等需求。
数据集成工具:实时采集工具从Attunity替换为了国产SeaTunnel。SeaTunnel具有配置简单、采集低延迟等特点。离线采集工具从Infomatica PWC替换为国产DataX。DataX支持多种异构数据源采集,可靠、高效、易于迁移。
数据处理工具:采用了国内领先的一站式大数据处理平台数栈,提供离线脚本开发和实时脚本开发能力。
总体来看,本方案全面采用国产核心系统和工具,不仅考虑了安全可控的需要,也兼顾了性能和扩展性。从服务器到操作系统,从数据存储到数据采集,实现了核心技术自主可控,有效保障了券商数据的安全性。
联系方式
公司网站: www.whaleops.com
联系邮箱: zenghui@whaleops.com
下滑探索更多WhaleStudio的优势,让我们帮助你构建一个高效、安全的大数据解决方案。🚀
本文由 白鲸开源 提供发布支持!