前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AliExpress基于Flink的广告实时数仓建设

AliExpress基于Flink的广告实时数仓建设

作者头像
Flink实战剖析
发布2022-04-18 13:42:46
1K0
发布2022-04-18 13:42:46
举报
文章被收录于专栏:Flink实战剖析

摘要:实时数仓以提供低延时数据指标为目的供业务实时决策,本文主要介绍基于Flink的广告实时数仓建设,主要包括以下内容:

1. 建设背景

2. 技术架构

3. 数仓架构

4. 实时OLAP

5. 实时保障

6. 未来规划

建设背景

广告是目前互联网流量变现的一种重要手段,广告投放的优化很大程度上依赖于广告效果数据,依托于广告曝光、点击、消耗、订单等指标调整广告投放策略,以达到最优投放效果。前期主要提供T+1效果数据,投放策略往往需要第二天才能做出调整,不能及时做出投放优化,特别在一些大促场景,实时优化显得尤为重要,需要及时调整例如人群、地域、出价等策略,以此为背景建设实时数据链路。

目前实时数据的场景主要有以下几种:

实时大屏:提供给运营、产品使用,展示核心的业务指标:曝光、点击、消耗等数据。

实时特征:提供给算法使用,统计用户维度的行为数据。

商家看板:提供给商家使用,展示商家的在不同维度的曝光、点击、消耗等数据。

多维分析:提供给运营、分析师使用,实时分析广告数据。

技术架构

依托新一代实时计算引擎Flink的兴起,在超高性能、数据一致性保障、SQL化编程方式等特点下推动了实时数仓的发展。

当前的整体技术架构图如下:

在数据源侧,一方面服务器日志数据与MySQL变更数据作为数仓的数据源,会被采集消息队列Kafka中;另外一方面MySQL 中的数据会通过DataX离线方式同步到HBASE中,通常是在维度建设初始化使用;

在数据加工侧,使用Flink作为计算引擎,HBASE作为维表存储数据库,Flink任务在处理的过程中会做一些数据解析、规范化、打宽、聚合等操作;

在数据服务侧,使用两种不同的存储引擎HBASE与Hologres,HBASE提供KV查询,应用于实时大屏、商家看板等固化查询场景, Hologres用于在线分析,应用于多维分析等场景,提供多维分析能力。二者由统一数据接口服务封装,对外提供查询。

数仓架构

数仓的分层搭建需要从复用、成本、质量、扩展性等方面去考虑,实时数仓的搭建,包括层次划分、命名、主题域划分、数据域划分与离线相差不大,目前划分层次如下:

数据源层:DB日志与服务器日志,DB日志数据主要是广告商家、投放计划等物料数据;服务器日志是广告引擎曝光日志、广告点击日志、用户真实曝光日志;按照不同的业务属于又可以分为搜索广告日志、推荐广告日志。

中间层:分为DIM层与DWD层,DIM层即维度层,其数据来源于DB日志,通过离线全量+实时增量方式完整同步操作;明细层DWD建设很重要的一个要求就是能够被复用,因此将搜索、推荐广告日志做了水平合并供下游多方使用,另外一个是维度扩充,提前做维表信息关联,避免下游多次join操作。

应用层:按照应用场景划分为实时大屏、商家后台实时指标、实时特征、实时多维分析,提供了不同维度的曝光、点击、消耗等数据。

从当前分层架构来说,可以说与离线分层上有两个差异:

  • 层次更少:离线中会存在汇总层与集市层,但是对于实时来说层次越多延时就越大,另外问题排查的难度就越大;
  • 注重维度整合:离线中一般情况下大宽表出现在集市层,但是对于实时来说,在构建DWD层已经完成了维度整合操作,避免下游join操作,也就是通过空间换时间的策略。

实时OLAP

当前使用OLAP主要解决两方面的问题:

  • 运营对于广告数据需求的多变性

运营对数据的需求变化性常常是大于广告商家看数的需求,如果都是使用Flink进行预计算完成的指标,那么其开发、运维成本是非常高的;

  • 对mysql中的数据需要某个时间点的分析结果指标

mysql中的数据是可变的,经常会执行一些update操作,例如广告预算数据,预算是可实时变更的,需要知道每小时整的预算额。使用Flink去处理这类问题成本比较高、并且也不可复用。

基于以上问题,提出了实时OLAP的架构。

将明细数据通过Flink处理写入OLAP中,基于OLAP一方面完成在线数据查询,另外一方面通过离线调度处理OLAP中数据,进行一个简单的分层处理,最终提供给上层查询服务使用。

实时保障

整个实时数据体系保障,可分为稳定性保障、数据质量保障两个方面。

稳定性保障

稳定性保障目前主要从压测、任务等级划分、 监控三方面实施:

提前压测,应对流量高峰期,特别是大促场景下,提前做好资源保障、任务优化等措施。

制定保障等级,从任务影响面大小、数据使用方来划分,一般情况公司层面优先于部门层面,外部使用优先于内部使用, 高优先级任务需要优先/及时响应、必要情况下做双链路保障机制;

指标监控,监控任务failover情况、checkpoint指标、GC情况、作业反压等,出现异常告警。

数据质量保障

质量保障主要是保障数据正确性与时效性。

正确性

实时计算端到端的一致性,对数据正确性的影响,常用手段就是通过输出幂等方式保障,这种方式要求输出使用存储介质支持重写,对于不支持幂等的存储,比较常用的就是DWD层的kafka, 可能会产生重复的数据,那么在下游使用的时候可以使用row_number() 语法进行去重,保证相同的key不会被多次计算;

离线与实时的一致性,需要保证使用数据源一致、加工业务逻辑一致。

时效性

保障实时指标的时效性,常用的手段就是提前压测与监控。

提前压测:提前发现可能会影响任务处理速度的瓶颈,常见的就是数据倾斜、大状态的算子操作(join);

监控:监控任务当前的消费进度,在数据源处通过使用数据时间与当前系统时间对比判断其消费进度。

未来规划

实时DWS层建设

当前虽然做了统一DWD层的建设,但是在应用层商家看板、实时特征等的场景应用中,仍然存在重复建设的工作,例如小时维度的商品曝光指标被多个链路重复计算,这种存在数据一致性的风险,另外也会造成资源浪费,可以将公共的汇总指标抽象出来统一计算,建设DWS层。

实时OLAP 的深度应用

当前OLAP的应用场景主要是运营侧使用,但是对于商家侧看板数据也可以做进一步的应用。目前商家看板数据使用HBASE作为存储,然而实际的看数需求是需要排序、分页等操作,这个功能的实现大多数是通过将数据查询出来,然后基于内存去处理,这种方式开发成本高、不易维护,可通过OLAP天然支持排序、分页去解决这些问题。

基于Hologres的HASP架构简化数仓架构

Hologres 是阿里巴巴自主研发的一款交互式分析产品,其重要的理念就是HASP, 即hybrid serving/analytical processing,服务分析一体化,通过其行存结构提供高频kv查询,列存结构提供多维分析能力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Flink实战剖析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 稳定性保障
  • 数据质量保障
  • 实时DWS层建设
  • 实时OLAP 的深度应用
  • 基于Hologres的HASP架构简化数仓架构
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档