行业挑战
近年来,随着互联网金融行业的飞速发展,传统金融机构(如交易所、证券公司、银行等)的各类业务与互联网的结合也越来越紧密,如:各大金融机构纷纷推出手机 APP 客户端,支持用户自主办理移动支付、理财、网络借贷、购买金融产品等各类金融业务。新的业务方式对金融行业也提出了新的要求:
- 长链路且快速变化的业务:从业务需求出发,需要分析用户的行为轨迹和交易记录,以应对业务的快速变化。
- 越来越多的实时数据需求:目前需要更多的实时数据来支持业务决策。比如需要依据流量监控、销售情况等,对不同的资源位做出相应调整;同时部分活动也需要实时数据来增强与用户的互动,尤其在金融产品营销活动中需要实时针对用户行为调整策略。
- 越来越高的数据质量要求:数据的结果会直接影响业务决策和线上运营活动的效果,数据质量也决定了计算结果是否可以作为判断的依据。
- 越来越多的实时风控需求:传统风控系统需要完成从依赖专家规则到智能风控的实时化转变,如信用违约、账户安全、贷款欺诈等典型场景:
- 欺诈检测:在办理业务过程中,对用户账号、交易行为等进行实时监控与识别。快速识别异常交易,减少造成用户财产损失的可能。
- 信用评估:在贷款等银行业务审核过程中,快速识别虚假资料、信息伪冒等恶意欺诈行为,并进行高危人群鉴别,整体信用风险评估等,缩短业务审核流程。
解决方案
基于实时计算 Flink 版的解决方案可帮助金融机构从容应对上述挑战,通过 Flink 构建实时数仓、实时反欺诈系统,助力金融机构快速构建实时风控体系。整个数仓体系架构如下:
实时数仓的数据处理过程涉及到以下几个关键环节:
- 数据产生:一般场景下,数据有两个来源:
- 用户行为日志:用户在 App 上的操作会产生一系列日志,包括点击、跳转、浏览、停留时长、机型、IP等信息。
- 数据库中相关信息:用户下单等业务类行为会被记录到数据库中。
- 数据采集:日志和数据库的内容,需要上报到消息队列中,使整条数据链路“流动”起来。比如日志中的数据,可通过日志采集等工具被实时上报到消息队列中。而数据库的数据(Binlog),可通过阿里云数据集成、DTS 产品或者其他开源组件被实时采集到消息队列中。
- 数据加工:消息队列(比如 DataHub/Kafka)的原始数据,往往在格式不齐、内容不全,需要经过数据清洗(ETL)之后,才能更好的被下游业务利用。而整个 ETL 过程,是实时数仓架构设计上非常重要的一环。该环节要做到延时小、成本低、可扩展性好、业务指标计算准确。
在系统选型上,需要选择 Flink 对数据进行处理,Flink 具有强大的数据处理能力,低延时、高吞吐,从而保证业务产出。同时阿里云上也推出了实时计算 Flink 版产品,为用户提供一站式高可用的 Flink 服务。
在数据架构设计上,也可以依据数仓的基本方法论来构建 ODS/DWD/ADS 层,从而减少数据冗余,降低数据存储成本,并且使数据结构具备更好的可扩展性。
- 数据分析:经过 Flink(ETL)处理好的部分数据可以直接被业务方使用,如 App 当日激活/PV/UV 等实时指标。另一部分数据需要经过多维分析才能被业务方使用,这就需要用到 OLAP 系统(如阿里云交互式分析),将数据写入 OLAP 系统后,通过与历史数据的合并查询,即可得到相关数据。
- 数据挖掘:从历史中预测未来一直是人类的梦想,对公司来说,能对未来趋势作出正确的判断才能基业长青。机器学习就是通过历史数据对未来进行预测的一种手段,可以使数据发挥最大的价值。
- 业务系统:经过处理的数据,可直接服务于相关业务方,如运营、决策者、相关应用等,如运营人员可通过实时报表中的数据及时调整运营策略,提高活动转化率;利用实时风控系统,实时预警风险事件,可避免业务损失等。
基于 Flink 的实时数仓架构:
Flink 主要用于实时数仓 ETL 及 BI 部分的指标计算,与各种上下游打通。
成功案例
众安保险
众安保险基于阿里云实时计算 Flink 版产品构建了实时数仓,其应用场景分为三类: 营销活动、实时大屏及反欺诈。
- 在营销活动中主要应用于营销活动流量和交易。通过实时计算可以动态观察用户进入活动各个入口的流量情况,以及活动的 PV/UV、交易量等。通过动态观测的用户行为,可制定更精准的营销策略,提高转化。
- 实时大屏主要应用于实时 KPI 指标监控,如当日保费、当日投保量、当日总体和分平台 PV/UV 等。
- 反欺诈主要应用于积分奖励等现金类的权益监控;针对某个入口是否为用户真实行为的实时监控判断、经纬度判断等。
随着业务快速变化发展,对实时计算的要求也越来越高,需要平台提供低延时、低资源消耗、高效率、高精准度等能力。在满足业务最基本需求的同时,我们也在充分利用实时计算 Flink 版平台的特性,丰富输入输出接口,保证数据质量。在未来的一段时期里, Flink 的 ML 和 Scala 版本也将会在 SQL 版本之上让实时计算在反欺诈方面和复杂的业务领域绽放精彩。
深交所
深圳证券交易所新一代监察系统围绕异常交易行为监管、违法违规线索筛查等核心业务,全面支持交易监控、调查分析、业务研究的一体化监管工作,遵循“安全高效、持续演进、主流开放、自主可控”的设计原则,打造了安全高效、灵活易用、具备较高包容性的分布式架构技术系统。
实时监控平台是监察系统的核心子系统。从架构设计、核心技术、计算能力、高可用和容灾设计等多方面考察,认为 Flink 能够代表实时计算技术的未来趋势,是实时监控平台技术路线的最佳选择。与 Storm 比较,Flink 提供了强大的状态管理机制,更加友好的编程接口以及 Exactly-Once 语义;与 Spark Streaming 比较,Flink 提供了更加强大的窗口计算能力,并且在性能上更加能够满足低时延的要求。
Flink 帮助应用管理状态,自动保存状态(Checkpoint),并提供多种后端实现。当应用需要维护大量状态时,可使用 RocksDB 状态后端,大大降低内存开销,缓解 GC 问题。在故障时,能够将应用状态恢复到最近一个检查点。
Flink SQL 强大的表达能力大大降低了流计算业务开发的门槛,可满足监察系统的实时统计和实时告警业务 80% 以上的开发需求。扩展 UDF、UDAF、UDTF,实现特定的业务功能性函数,进一步简化了业务研发。
Flink 窗口计算支持业务时间(Event Time),支持全量计算和增量计算等模式,优化的内部算法让性能指标十分出色,方便实现区间值指标计算。
Flink 基于 Chandy-Lamport 分布式快照算法,实现了自动故障处理。在系统出现故障时,作业可以从最近的一个状态快照中恢复并继续运行,且能保证内部数据处理的 Exactly-Once 语义。为监察系统实现高可用的分布式实时计算平台提供牢固的基础。
2019 年深交所与阿里巴巴实时计算团队签订合作协议。新一代监察系统的实时计算平台已安全、可靠地运行了近 300 天。截至 2020 年 4 月底,原始业务消息数量平均达 5千多笔/秒,峰值达到 120多万/秒,关键业务统计、监察报警计算平均耗时百毫秒,为核心监察实时业务提供了强有力的支撑。
[1]
https://www.leiphone.com/news/201705/ZVhqW69XRJaKe3cD.html[2]
https://www.infoq.cn/article/wIwa7N6sFBR4QV-ScOgO实时计算 Flink 版产品交流群
阿里云实时计算Flink - 解决方案: https://developer.aliyun.com/article/765097 阿里云实时计算Flink - 场景案例: https://ververica.cn/corporate-practice 阿里云实时计算Flink - 产品详情页: https://www.aliyun.com/product/bigdata/product/sc