作者:vivo互联网服务器团队- Liu Xianchao
本文基于营销自动化数据驱动场景,分析介绍了Presto+大宽表方案、Bitmap方案、StarRocks方案的架构演进。
1分钟看图掌握核心观点👇
图 1 VS 图 2,您更倾向于哪张图来辅助理解全文呢?欢迎在评论区留言。
从增量市场进入存量市场,粗放型的运营已经无法为企业带来更多的市场份额和营收增长。这一现状也驱动企业思考精细化运营,通过精细化运营挖掘出用户最大价值,从而提升用户LTV。精细化运营落地的重要举措就是数据驱动。通过门店数字化运营,可以实现打通品牌与导购与消费者的全程触点,沉淀、留存场景化交互数据,深度挖掘客户需求,为用户提供个性化服务。例如:线下的门店开业或者做一些促销活动,通过短信、富媒体短信、企业微信、导购朋友圈等触点将活动信息传递给门店周边有需要的用户,吸引用户到店。
vivo通过智能手机以及智能手机售卖渠道的运营,积累了全渠道,全场景的门店相关数据。
综合了标签、事件、门店LBS数据的受众筛选,成为精细化营销的一大难点。
首先MySQL的性能不足以支撑亿级数据多表且或非逻辑实时计算,通过调研以及公司海量计算组团队的方向,我们采用了OLAP(用于分析和查询大规模数据集的计算处理技术)引擎Presto,利用Presto的SQL on Everything特性,实现了多数据源综合的受众圈选。
图中为营销自动化平台数据驱动整体架构,分为业务层、计算层、数仓层。
基于这套架构的痛点:
为解决以上问题点,通过与大数据、DMP团队合作优化底层标签数据结构,采用Bitmap数据结构设计标签优化底层数据源。
数据结构设计如下:
基于用户维度预计算自增id,作为Bitmap下标,将标签列值转换为行值,每行都存储所有用户压缩成Bitmap的数据。
由于引入DMP标签服务,需对现有OLAP引擎进行改造。
底层数据源:由于Presto SQL On Everything的特性,支持各种存储在不同数据库中的数据,通过开发Presto Connector Plugin获取DMP平台标签服务,大部分数据还是在Hive数仓表中。如:事件数据/门店数据等。
Presto计算层:在Presto服务,主要开发了Presto Bitmap相关的UDF Plugin,Presto Connector获取DMP平台标签,通过Presto源码改造实现 Select In Bitmap能力。 进行上述改造后,计算层就可以通过统一的SQL实现各种服务。
使用示例:
select count(user_id) from user_id_mapping where day='${day}'and user_rn in(select bitmap from dmp.virtual_table where rule='#标签规则')通过虚拟化DMP表,在Presto中解析后查询DMP标签Bitmap用户数据返回下标数组与id_mapping表进行计算。
营销自动化核心流程中移除了对大宽表依赖,新标签上架可由原来1.5人天提升到0.5人天。
查询耗时由当前的分钟级别优化到秒级别(P90=38s),其中纯标签场景可以低至毫秒级别。
此次迭代解决了查询性能和标签上架效率问题,但随着业务复杂度增加,现有架构面临新的技术挑战:
为解决上述局限,并为下一代实时数据分析业务场景做好准备,我们评估并引入StarRocks,其存算一体架构、向量化执行引擎,有望在实时分析场景带来突破性提升。
为体现切换StarRocks的升级价值,从 高性能、 高可用、 高安全维度进行对比。
通过3.2.1的调研对比,明显确定了StarRocks的优势,因此对现有业务系统场景分析,提前将StarRocks需要兼容的点改造完成。
将切换StarRocks需要改造的点都准备完成后,我们将遵循“由简到繁、由读到写、分阶段推进”的原则,分为四个阶段改造业务系统,控制切换风险及平滑过渡:
经过以上迭代后架构如下:
计算和数仓层变为存算层:计算和数仓一体化,整体由StarRocks控制。
问题一:
营销短信任务下发场景中,仅部分数据下发(如总量下发一千万条,实际仅允许下发一百万条)
分析验证:
解决方案:协调集群运维同事,调整线上StarRocks集群的系统变量 sql_select_limit,解除100万条结果集限制,并在重启集群后问题得以解决。
问题二:
服务频繁Full GC,且GC耗时1s以上,导致服务请求超时
分析验证:
解决方案:通过改造代码中MySQL JDBC的配置参数,启用流式查询功能。
本文主要介绍了营销自动化数据驱动-OLAP架构演进史,最初为解决业务诉求,支撑业务快速上线,基础架构采用Presto+大宽表方案。
随着数据量及标签维度的激增,为提升标签上架效率,引入Bitmap方案实现预聚合计算,通过标签上架统一至DMP,显著降低响应延迟;在满足业务诉求的同时,针对数据安全方向进行深入探索OLAP引擎能力,从Presto切换为StarRocks引擎,不仅在数据安全方面有保障,同时也提升了查询性能以及完成机器资源的降本。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69912579/viewspace-3114541/ ,如需转载,请注明出处,否则将追究法律责任。