【广告行业】基于Flink的广告行业实时数仓建设

2024-06-09 16:58

本文主要是介绍【广告行业】基于Flink的广告行业实时数仓建设,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、建设背景

广告是目前互联网流量变现的一种重要手段,广告投放的优化很大程度上依赖于广告效果数据,依托于广告曝光、点击、消耗、订单等指标调整广告投放策略,以达到最优投放效果。前期主要提供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中数据,进行一个简单的分层处理,最终提供给上层查询服务使用。

五、实时保障

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

5.1 稳定性保障

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

  • 提前压测:应对流量高峰期,特别是大促场景下,提前做好资源保障、任务优化等措施。
  • 制定保障等级:从任务影响面大小、数据使用方来划分,一般情况公司层面优先于部门层面,外部使用优先于内部使用,  高优先级任务需要优先/及时响应、必要情况下做双链路保障机制;
  • 指标监控:监控任务failover情况、checkpoint指标、GC情况、作业反压等,出现异常告警。

5.2 数据质量保障

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

正确性

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

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

时效性

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

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

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

六、未来规划(存在的问题)

6.1 实时DWS层建设

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

6.2 实时OLAP的深度应用

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

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

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

七、总结

该文章讲述了广告行业业务实时数仓建设,可以了解到广告的数据产品的应用场景:实时大屏、实时特征、商家看板、多维分析。同时逻辑非常清晰讲述数据的加工链路、实时数仓的建设过程、实时OLAP的解决方式、如何做到实时保障。这些知识为实时数仓建设提供非常好的参考!

参考资料:

微信公众号《Flink实战剖析》-《AliExpress基于Flink的广告实时数仓建设》

这篇关于【广告行业】基于Flink的广告行业实时数仓建设的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045764

相关文章

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Flink任务重启策略

概述 Flink支持不同的重启策略,以在故障发生时控制作业如何重启集群在启动时会伴随一个默认的重启策略,在没有定义具体重启策略时会使用该默认策略。如果在工作提交时指定了一个重启策略,该策略会覆盖集群的默认策略默认的重启策略可以通过 Flink 的配置文件 flink-conf.yaml 指定。配置参数 restart-strategy 定义了哪个策略被使用。常用的重启策略: 固定间隔 (Fixe

三.海量数据实时分析-FlinkCDC实现Mysql数据同步到Doris

FlinkCDC 同步Mysql到Doris 参考:https://nightlies.apache.org/flink/flink-cdc-docs-release-3.0/zh/docs/get-started/quickstart/mysql-to-doris/ 1.安装Flink 下载 Flink 1.18.0,下载后把压缩包上传到服务器,使用tar -zxvf flink-xxx-

【信创建设】信息系统信创建设整体技方案(word原件完整版)

信创,即“信息技术应用创新”。我国自主信息产业聚焦信息技术应用创新,旨在通过对IT硬件、软件等各个环节的重构,基于我国自有IT底层架构和标准,形成自有开放生态,从根本上解决本质安全问题,实现信息技术可掌控、可研究、可发展、可生产。信创发展是一项国家战略,也是当今形势下国家经济发展的新功能。信创产业发展已经成为各行各业数字化转型、提升产业链发展的关键。 软件全套资料部分文档清单: 工作安排任

模具要不要建设3D打印中心

随着3D打印技术的日益成熟与广泛应用,模具企业迎来了自建3D打印中心的热潮。这一举措不仅为企业带来了前所未有的发展机遇,同时也伴随着一系列需要克服的挑战,如何看待企业引进增材制造,小编为您全面分析。 机遇篇: 加速产品创新:3D打印技术如同一把钥匙,为模具企业解锁了快速迭代产品设计的可能。企业能够迅速将创意转化为实体模型,缩短产品从设计到市场的周期,抢占市场先机。 强化定制化服务:面

《语文建设》

语文建设栏目设置 新理念、新教材(教材研究、新课文、教学设计)、新课程新课堂(案例、教学短讯、综合性学习、创新瞬间)、更新知识(国外语文教育、美文共赏、课文新解、咬文嚼字、语言规范与应用、语言新观察、评价与考试。 语文建设编辑部/杂志社投稿须知 1、文章标题简短,能概括中心思想,一般不超过20个汉字,必要时加副标题 2、题目下面均应写作者姓名,姓名下面写单位名称、所在城市、邮编,不同单位的多位作者

【IPV6从入门到起飞】4-RTMP推流,ffmpeg拉流,纯HTML网页HLS实时直播

【IPV6从入门到起飞】4-RTMP推流,ffmpeg拉流,纯HTML网页HLS实时直播 1 背景2 搭建rtmp服务器2.1 nginx方案搭建2.1.1 windows 配置2.1.2 linux 配置 2.2 Docker方案搭建2.2.1 docker 下载2.2.2 宝塔软件商店下载 3 rtmp推流3.1 EV录屏推流3.2 OBS Studio推流 4 ffmpeg拉流转格式

大数据之Flink(二)

4、部署模式 flink部署模式: 会话模式(Session Mode)单作业模式(Per-Job Mode)应用模式(Application Mode) 区别在于集群的生命周期以及资源的分配方式;以及应用的main方法到底在哪里执行。 4.1、会话模式 先启动一个集群,保持一个会话,在这个会话中通过客户端提交作业。集群启动时资源已经确定,所有提交的作业会晶振集群中的资源。适合规模小、执

Ubuntu 标题栏实时显示网速CPU内存

1.用 wget 下载 indicator-sysmonitor,终端执行命令: $ wget -c https://launchpad.net/indicator-sysmonitor/trunk/4.0/+download/indicator-sysmonitor_0.4.3_all.deb2.安装依赖: sudo apt-get install python python-psu

第一款实时网络游戏的开发历程全解

“我的兴趣是创建世界,而不是生活在别人创建的世界里。我希望游戏世界能让人们能跳出现实世界的局限,去尝试新的身份……不是要脱胎换骨,而是让他们找到自己真正的归属”。所以他创造了第一个网络世界。      特鲁布肖所开发的MUD1(为区别这款游戏与MUD这一游戏类型,后文游戏名统一为MUD1)依然是一个纯文字的世界,没有任何图片,但是不同计算机前的玩家可以在游戏里共同冒险、交流。   与以往具有