众安保险 CDP 平台:借助 Apache Doris 打破数据孤岛,人群圈选提速 4 倍
随着业务在金融、保险和商城领域的不断扩展,众安保险建设 CDP 平台以提供自动化营销数据支持。早期 CDP 平台依赖于 Spark + Impala + Hbase + Nebula 复杂的技术组合,这不仅导致数据分析形成数据孤岛,还带来高昂的管理及维护成本。为解决该问题,众安保险引入 Apache Doris,替换了早期复杂的技术组合,不仅降低了系统的复杂性,打破了数据孤岛,更提升了数据处理的效率。
作者|众安保险开发专家 戴鸿文
众安在线财产保险股份有限公司是中国首家互联网保险公司,由蚂蚁金服、中国平安和腾讯于 2013 年联合发起设立。众安专注于应用新技术重塑保险价值链,围绕健康、数字生活、消费金融、汽车四大生态,以科技服务新生代,为其提供个性化、定制化、智能化的新保险。业务和关联公司的业务包括:众安保险、众安医疗、众安小贷、众安科技、众安经纪、众安国际、众安银行等。截至 2023 年中,众安服务超过 5 亿用户,累计出具约 574 亿张保单。
CDP 建设目标及方案
快速数据集成:CDP 需支持集成常见的关系性数据库(如 MySQL、PG 等 )和数据仓库同(如 Hive、MaxCompute 等),同时还需要整合实时数据流(如 Kafka 等)。 精准用户识别:在复杂的业务体系中,CDP 平台需能够灵活整合多种 ID 类型,形成统一的用户视图,为下游的实时营销场景提供支撑。 灵活的用户标签和强大的分群能力:这是 CDP 平台的核心建设目标,旨在提供全面深度的用户洞察,精准满足用户需求。 多维度实时分析:支持对用户画像、用户旅程和营销效果的实时跟踪与回收。为优化营销策略和提升用户参与度提供有力的支持。
全域数据采集:CDP 平台通过实时和离线数据采集方式,实现对全域数据的整合。利用 Flink 进行实时数据采集,同时建设离线数仓以整合多渠道数据,确保高质量的数据资产沉淀。 用户数据融合:通过 ID Mapping 技术,可将现有的用户数据进行融合,打破数据孤岛。即将用户手机、用户身份证、设备指纹、OpenID 等用户身份进行融合,形成统一的用户标识(OneID)。 标签和客群管理:CDP 平台支持多维度标签的建设,包含用户属性、用户行为、业务交易状态等。同时,通过规则客群的圈选能力实力客群的精细划分。 用户数据分析:基于丰富的用户标签数据,CDP 平台提供用户画像洞察功能,支持实时效果评估和营销漏斗分析。 用户数据服务:CDP 平台提供多维度的数据接口服务能力,包括用户标签、客群、分层和实时事件等,赋能用户全链路智能营销。
CDP 平台架构的演进历程
架构 1.0:多个技术栈,形成数据孤岛
离线数据:通过 ETL 方式集成各业务线的数据库数据,包括行为埋点数据、日志数据等,并将这些数据抽取数仓 DWS 层。随后,利用 Spark 作业将 DWS 层数据抽取到 Impala 中,进行离线的标签计算和客群的圈选。同时,我们还通过 Spark 抽取 DWS 层业务体系里的用户点边关系,并将其集成到 Nebula 图数据库中,提供全面的点边关系计算、边距计算以及 One ID 计算功能。 实时数据:采用 Kafka 实时回收所有的业务线的 Binlog 数据、行为埋点数据以及各业务线的事件上报数据,在 Flink 中实现实时标签的配置化计算,并通过 Flink Checkpoint 进行复杂的实时指标计算和事件组合。最终将实时标签存储在 Hbase 中,以便为各业务线提供点查服务。
架构 2.0:统一技术栈,打破数据孤岛
架构简洁,运维成本降低:引入 Doris 之前,我们需要额外维护 CDH 集群和 Nebula 集群。而现在,仅凭单一 Doris 集群就可以完成所有的工作,显著降低运维成本。此外,Doris 还提供的完善集群监控设施也极大方便了我们对集群的便捷管理。 支持 SQL,快速上手:Doris 兼容 MySQL 协议,这意味着对于已经熟悉 MySQL 的开发者来说,无需额外的学习成本就能快速上手操作。 丰富的数据导入形式:Doris 提供了丰富且便捷的数据导入方式,使数据库迁移和数据导入变得高效和方便。用户可以根据实际需求选择适合的导入方式,以快速完成数据迁移和导入操作。
Doris for CDP 在业务场景中的实践
离线数据导入:针对标签计算、实时客群预估与圈选,以及标签和客群多维画像分析等场景,我们采用 DataX 工具,通过 Stream Load 方式将离线数据高效写入到 Doris 里。为确保 Stream Load 的稳定性,我们在线上对 30 多个线程并发导入进行测试,结果显示,每秒 Upsert (写入或更新) 数量高达 30+ 万条。对于我们当前的一级用户量来说,导入效果可以很好满足我们的需求。 部分列更新:在实时写入场景中,当使用 Flink 实时写入标签数据时,需要精确到单个用户和标签的实时更新和插入,流程相对复杂。而 Doris Stream Load 可以开启部分列更新 外部数据源对接:在实时分析报表场景中,经常需要跨多个数据源的交叉分析。Doris 的 Multi-Catalog 功能可以更方便对接外部数据目录,无需进行数据迁移或导入,即可进行外部数据源的联邦查询。无论是基于 Hive 或 Max Compute 的查询,还是 JDBC 业务线的数据查询,都能迅速获得精准的分析结果,极大提升了查询效率。
02 OneID
构建 ID 图谱
构建 OneID
首先,利用 Doris 提供的 row number
窗口函数生成完整的全局行顺序。然后对所有 ID 关系数据进行 Union All 操作。接着,使用窗口函数 dense rank
和row number
的复数生成为空/不为空时的首列 Rank 值。最后,通过循环迭代计算每一列最小距离,并不断迭代 Rank 值,直到当前列与上一迭代结果全局匹配。当所有数据连续匹配满 5 次后,就以最终 Rank 值为准进行用户分组,从而得用户唯一标识 OneID。
结合上图以及构建流程,可以得出结论:1 - 4 行是用户 1,5 - 6 行是用户 2。
03 标签体系
离线标签:在 Doris 中抽象出三种业务类型表,分别是用户数据表、业务明细表和行为事件表。根据上方标签配置规则,通过 DSL 动态语义生成 SQL,然后在 Doris 中进行计算,并将计算结果存储在 Doris 中,形成一张离线标签宽表。 实时标签:基于 Flink 接收 Kafka 、 CDC 消息,并根据实时标签配置元数据,在 Flink 中计算出实时标签,并将最终结果写入 Doris 的实时标签宽表中。
set enable_unique_key_partial_update=true;
insert into tb_label_result(one_id, labelxx)
select one_id, label_value as labelxx
from .....
curl --location-trusted -u root: -H "partial_columns:true" -H "column_separator:," -H "columns:id,balance,last_access_time" -T /tmp/test.csv http://127.0.0.1:48037/api/db1/user_profile/_stream_load
3. 标签点查:随着线上业务量的不断增长,我们面临着处理超过 5000 QPS 标签请求的挑战。为满足这一需求,我们采用多种策略来确保高效的点查性能。首先,通过利用 PrepareStatement 技术,预编译和执行 SQL 查询,从而提高查询效率。其次,精细调整了 Backend(BE)参数和表参数,以优化数据存储和查询性能。同时,我们打开了行存,进一步提升系统在高并发场景下的处理能力。
在 be.conf 中调整 BE 参数:
disable_storage_row_cache = false
storage_page_cache_limit=40%
在建表时调整表属性:
enable_unique_key_merge_on_write = true
store_row_column = true
light_schema_change = true
4. 标签计算:为了满足用户对于标签配置的灵活需求,系统允许在 DSL 生成的语义中进行多表 Join 操作,而这就可能会涉及十几张表的 Join 操作。为了确保标签计算性能最优,我们充分运用 Doris Colocation Group 策略,对所有分桶列的类型、数量和副本进行统一,并优先满足 Colocation Join 和本地的 Hash Join。在线上环境中,也可以打开Colocate With
开关,指定一个 Group,确保全局表的分片与副本策略一致。
04 客群圈选
05 客群归属
总结与展望
最后,我们衷心感谢 SelectDB 技术团队(selectdb.com)所提供的技术支持,未来我们期待与社区更紧密的合作,为社区贡献力所能及的力量,共同推动技术的发展与进步。
更多行业实践
智慧金融与政企:杭银消金|河北幸福消费金融|金融壹账通|平安人寿|奇富科技|同程数科|星云零售信贷|银联商务|招商信诺人寿|360数科 |360企业安全浏览器
互联网与文娱:斗鱼|叮咚买菜|工商信息查询平台|货拉拉|荔枝微课|票务平台|奇安信|腾讯音乐|天眼查|网易互娱|网易严选|小米|小鹅通|约苗|字节跳动|知乎|360商业化
企业服务与新经济:橙联|度言|观测云|慧策|领健|领创|Moka BI|美联物业|拈花云科|思必驰|物易云通|云积互动|有赞|纵腾集团