作者:郭育波
用户背景
众安在线财产保险股份有限公司(以下简称“众安”)是中国首家互联网保险公司,众安总部位于上海,不设任何分支机构,完全通过互联网展业。由“保险+科技”双引擎驱动,众安专注于应用新技术重塑保险价值链,围绕健康、数字生活、消费金融、汽车四大生态,以科技服务新生代,为其提供个性化、定制化、智能化的新保险。
平台概况
上图是众安保险的实时计算整体架构图,最下层是数据源层,包括了来自于应用系统的业务数据、应用系统的消息数据、用户行为埋点数据以及应用日志数据,这些数据都会经过 Flink 进入实时数仓。
实时数仓分为四层:
第一层是 ODS 层,数据经过 Flink 到 ODS 层后会关联一张原始表,这个表是和数据源一一对应的,然后会有一个视图表对原始数据进行简单的清洗加工;
数据经过 Flink 下发到 DWD 层,DWD 层是基于主题域进行划分的,我们现在划分为用户数据域、营销数据域、信贷数据域和保险数据域等;另外还有一部分是 DIM 层,包含用户相关、产品相关和渠道相关等维表数据,DIM 层的数据会保存到 HBase 中;
经过 DWD 层的数据清洗之后,数据下发到 DWS 层,DWS 层会对数据进行整合汇总,一般会有指标宽表和多维明细宽表;
最后这些数据会进入 ADS 层,服务具体多样的数据应用。这一层包含多样的 OLAP 数据存储引擎,包括使用 ClickHouse 作为大盘实时报表的存储引擎,使用HBase 和阿里云的 TableStore 为用户标签和特征工程提供数据存储服务,以及使用ES服务实时监控场景。
上图是众安保险的实时计算平台架构图。在任务管理模块里面编辑和提交任务,任务编辑器同时支持 Flink SQL 和 Flink JAR 任务,提供了比较便利的 Flink SQL 编辑功能和调试功能,也支持多种任务启动策略,比如基于 checkpoint、offset、时间点和最早位置等,还支持定时和即时生成 checkpoint 功能。任务提交之后,会通过 Flink 客户端将它提交到我们自建的 CDH 集群里。任务管理服务也会定时从 Yarn 获取任务的实时状态。
监控方面,Flink 会把指标日志数据推送到 PushGateway,Prometheus 获取 PushGateway 这些指标之后会在 Grafana 进行数据的可视化展示。除了对任务异常的状态监控之外,众安还会对资源使用率、消息积压等多种情况进行实时告警。此外 Flink 还支持了比较多的 connector,比如阿里云的 ODPS、TableStore 和 Hologres,也内置了丰富的 UDF 并且支持用户自定义 UDF。