概要:刚刚结束的2020天猫双11中,MaxCompute交互式分析(Hologres)+实时计算Flink搭建的云原生实时数仓首次在核心数据场景落地,为大数据平台创下一项新纪录。借此之际,我们将陆续推出云原生实时数仓双11实战系列内容,本篇将重点介绍Hologres在阿里巴巴AliExpress的最佳实践,并助力AliExpress实时数仓升级,节约成本近50%,提效300%。
AliExpress中文名是全球速卖通,是阿里巴巴面向国际市场打造的跨境电商平台,被广大卖家称为“国际版淘宝",在2020年全球疫情肆虐的大背景下迎来了自己的10周年,伴随业务全球市场的拓展,AliExpress也同样遇到了大多数电商都会遇到的问题:流量红利逐步消失、拉新成本飞速上升以及引流效率的逐渐疲软等。业务发展需要从原始的野蛮生长逐步转向流量的精细化运营,于是帮助业务看清站内流量的分发及承接效率的流量通道也就应运而生了。
关于电商平台元素的解析有大家比较熟悉的“人、货、场”分法,人和货相对好理解,场可以理解为消费者和商品之间创建特殊链接的产品形式,如搜索、推荐、店铺、猜你喜欢等,流量通道便是以更加结构化的方式描述平台元素之间的关系,实现更好研究不同场域流量效率的目的。
在仅持续48小时(国际11不同于国内,持续2天)的双11大促过程中,数据更新的频率直接决定了业务做决策的频次,流量通道数据实时化的需求迫在眉睫。文章接下来希望带你一起还原借助Hologres卓越性能落地流量通道实时分析体系的过程。
一、流量通道实时化数仓架构调研
流量通道升级前停留在准实时架构,整体数据的时效为H+3(3小时前数据可查),所以接下来的重点工作变成了实时架构的设计及实现,综合AliExpress内部及其他BU的应用场景,主流实时数仓架构演进主要如下:
1)基于Flink+多数据引擎的Lambda数仓架构
Lambda实时数仓也是业界相对通用的解决方案,数据采集之后根据业务需求分为实时层与离线层,分别进行实时处理和离线处理。处理结果在数据服务层对接数据应用之前会进行数据的合并,从而实现实时数据与离线数据同时服务于在线数据应用和数据产品。
离线层处理:采集数据归并到离线数仓之后,首先会统一到ODS层。对ODS层的数据进行简单数据清洗,构建DWD层(明细层)。在数据建模的过程中,为了提高数据分析效率以及进行业务分层,会对DWD层的数据进行进一步的加工和处理,相当于预计算。预计算结果在对接数据服务之前还会转储到一些离线存储系统中。
实时层处理:逻辑与离线层类似,但是更加讲究时效性。实时层同样是对上游数据库或者系统的数据进行实时数据的订阅和消费。消费数据之后会将其写到实时的DWD层或DWS层。实时计算引擎提供的是计算能力,最终处理结果需要写到一些实时存储中,例如KV Store等。
很多场景离线层还有一个重要的功能就是对实时层数据问题的修正,其次基于成本和开发效率的考虑,实时层一般保留两到三天的数据,而月、年的数据等更长的数据存储在离线数仓中,使用时需要离线数据和实时数据的结合场景,方式是引入了更多产品,如MySQL、ADB等。在流量通道场景,大促相关的分析往往需要对比历史同比或环比数据,比如需要和去年或者是前年的双11做对比分析,同样需要考虑到离线数据回刷或者数据一致性的问题。
AliExpress已有的实时数仓也属于Lambda架构的范畴,流处理层的几个关键思路如下:
- Flink承担绝大部分的解析+聚合计算。
- 消息队列TimeTunnel中沉淀抽象明细层和汇总层结果。
- 按照维度表数据量级,选择使用Lindorm或者MaxCompute存储。
- 根据下游应用场景特点将结果数据导入不同的存储引擎,例如为了提供高QPS的点查询引入Lindorm;为了对离线数据进行交互式分析,会引入ADB等。
伴随业务的高速增长和数据膨胀,数据质量、运维复杂、成本高、业务敏捷性等问题也逐渐突显,具体如下:
- 一致性问题:离线/实时