Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >干货 | 广告系统架构解密

干货 | 广告系统架构解密

作者头像
Java识堂
发布于 2020-08-28 07:37:07
发布于 2020-08-28 07:37:07
5.1K0
举报
文章被收录于专栏:Java识堂Java识堂

广告、增值服务、佣金,是互联网企业最常见的三种盈利手段。在这3大经典中,又以广告所占的市场份额最大,几乎是绝大部分互联网平台最主要的营收途径,业务的重要性不言而喻。

从技术角度来说,广告业务涉及到 AI算法、大数据处理、检索引擎、高性能和高可用的工程架构 等多个方向,同样有着不错的技术吸引力。

我从去年开始接触广告业务,到现在差不多一年时间了。这篇文章将结合我的个人经验,同时参考业界的优秀案例,阐述下广告系统的架构实践方案,希望让大家有所收获。内容包括以下3部分:

  • 广告业务简介
  • 面临的技术挑战
  • 广告系统架构详解

01 广告业务简介

广告,可以说无处不在。微信、抖音、B站、百度、淘宝等等,这些占据用户时间最长的 APP, 到处都能看到广告的影子。

我们每天随处可见的广告,它背后的业务逻辑到底是什么样的呢?在分享广告系统的架构之前,先给大家快速普及下业务知识。

1. 广告业务的核心点是平衡

为什么说广告业务的核心点是「平衡」?可以从广告的标准定义来理解。

广告被定义为:广告主以付费方式通过互联网平台向用户传播商品或者服务信息的手段。这个定义中涉及到 广告主、平台、用户 3个主体,但是这3个主体的利益关注点各不相同。

图1:广告业务的三角平衡

  • 广告主:关注ROI,花了钱是否能带来预期收益
  • 平台:拥有流量,关注收益能否最大化
  • 用户:关注体验,广告是否足够精准?是否影响到了正常功能的使用?

有时候这三者的利益是冲突的,比如平台增加了广告位数量,收益肯定增加,但用户体验可能变差,因此广告业务最终要寻找的是三方的平衡。

站在平台的角度来看广告业务,它在保证用户体验的同时,要兼顾绝大部分广告主的ROI(确保他们是可以赚到钱的),在此基础上再考虑将平台的收入最大化,这样才是一个健康的广告生态。

2. 从收入的分解公式认清广告的本质

广告业务发展了几十年,广告费用的结算方式也诞生了很多种,我们最常见的有以下几种:

  • CPT:按时间计费,独占性包时段包位置
  • CPM:按照每千次曝光计费
  • CPC:按照点击计费
  • CPA:按照行为计费(比如下载、注册等)

图2:广告费用的结算方式演进

之所以有不同的结算方式,其实也是随着广告市场的发展逐渐衍生出来的,最开始流量稀缺,平台占优势,再到今天逐渐成了买方市场,广告主作为需求方的谈判权变大。

上面这个图可以看出,由于CPA代表了广告主最终想要的转化效果,因此按CPA结算时对广告主最有利,但是对平台最不利。结算方式演进到今天,其实也是一种平衡,所以处于平衡点附近的CPM和CPC是最常见的结算方式。

以CPC为例,收入可分解成下面这个公式:

其中,PV表示系统的访问量,PVR和ASN表示广告的填充率,CTR表示广告的点击率,ACP表示广告的平均点击价格。

上述各个指标都可以通过一系列的广告策略来提升。比如填充率可通过开发更多的广告主来实现,CTR可通过AI算法做到精准投放来提升,ACP可通过精准流量溢价或者提升广告主ROI来完成。

掌握上面这个收入分解公式,对于理解广告业务至关重要,任何业务上的动作几乎都能关联到这个公式的某个指标上。

3. 广告的核心业务流程

广告业务发展到今天,随着广告主对投放效果的诉求不断加强,精准定向以及实时竞价是目前最主流的业务形态。

对互联网平台来说,初期一般都是采用「自营的竞价广告网络」来实现商业变现,简单理解:就是利用平台自有的流量以及自主开发的广告主来实现业务闭环。本文所分享的广告架构主要针对这种业务形态,它的核心业务流程如下图所示。

图3:广告的核心业务流程

  • 广告主先通过投放平台发布广告,可设置一系列的定向条件,比如投放城市、投放时间段、人群标签、出价等。
  • 投放动作完成后,广告会被存放到广告库、同时进入索引库,以便能被广告检索引擎召回。
  • C端请求过来后,广告引擎会完成召回、算法策略、竞价排序等一系列的逻辑,最终筛选出Top N个广告,实现广告的千人千面。
  • 用户点击广告后,会触发广告扣费流程,这时候平台才算真正获得收益。

上面是广告业务的核心流程,随着平台流量以及广告主规模进一步增大,往往会从「自营型竞价网络」逐渐向「联盟广告以及RTB实时竞价」方向发展,类似于阿里妈妈、腾讯广点通、头条巨量引擎,此时业务复杂度和技术架构会再上一个台阶,本文不作展开,后续再跟大家详细分享。

02 面临的技术挑战

对广告业务有了初步了解后,再来看下广告系统面临的技术挑战:

1、高并发:广告引擎和C端流量对接,请求量大(平峰往往有上万QPS),要求实时响应,必须在几十毫秒内返回结果。

2、业务逻辑复杂:一次广告请求,涉及到多路召回、算法模型打分、竞价排序等复杂的业务流程,策略多,执行链路长。

3、稳定性要求高:广告系统直接跟收入挂钩,广告引擎以及计费平台等核心系统的稳定性要求很高,可用性至少要做到3个9。

4、大数据存储和计算:随业务发展,推广数量以及扣费订单数量很容易达到千万甚至上亿规模,另外收入报表的聚合维度多,单报表可能达到百亿级别的记录数。

5、账务的准确性:广告扣费属于金融性质的操作,需要做到不丢失、不重复,否则会损害某一方的利益。另外,如果收入数据不准确,还可能影响到业务决策。

03 广告系统架构详解

了解了广告业务的目标和技术挑战后,接下来详细介绍下广告系统的整体架构和技术方案。

图4:广告系统的整体架构

上面是我们公司目前的广告系统架构图,这个架构适用于广告业务初期,针对的是「自营型的竞价网络和站内流量」,不涉及联盟广告。

下面针对各个子系统做下说明:

  • 广告投放系统:供广告主使用,核心功能包括会员续费、广告库管理、设定推广条件、设置广告出价、查看投放效果等。
  • 广告运营后台:供平台的产品运营使用,核心功能包括广告位管理、广告策略管理、以及各种运营工具。
  • 广告检索平台:承接C端的高并发请求,负责从海量广告库中筛选出几个或者几十个广告,实时性要求高,这个平台通常由多个微服务组成。
  • AB实验平台:广告业务的稳定器,任何广告策略上的调整均可以通过此平台进行灰度实验,观察收入指标的变化。
  • 广告计费平台:面向C端,负责实时扣费,和收入直接挂钩,可用性要求高。
  • 账务管理中心:广告业务中的财务系统,统管金额相关的业务,包括充值、冻结、扣费等。
  • 大数据平台:整个广告系统的底盘,需要聚合各种异构数据源,完成离线和实时数据分析和统计,产出业务报表,生产模型特征等。

下面再针对架构中的技术难点展开做下介绍。

1. 广告数据的存储

广告系统要存储的数据多种多样,特点各不相同,采用的是多模的数据存储方式。

图5:广告数据的多模存储

  • OLTP场景,包括广告库、创意库、会员库、广告产品库、广告策略库等,这些都存储在MySQL中,数据规模较大的广告库和创意库,按照广告主ID Hash做分库分表。
  • OLAP场景,涉及到非常多的报表,聚合维度多,单表的记录数可能达到百亿级别,底层采用HDFSHBase存储。
  • 面向广告检索场景的索引数据,包括正排索引和倒排索引,采用Redis和ES来存储。

存储上还需要解决的一个问题是:广告的同步问题。广告投放完成后,首先会存储在MySQL数据库中,接下来需要把广告实时传输到检索系统中,完成正排索引以及倒排索引的更新。

图6:广告索引的更新流程

索引更新服务,有几个要点说明下:

  • 各个业务系统在推广、余额等信息变更时,发MQ消息,索引更新服务订阅MQ来感知变化,完成增量同步。
  • 变更的消息体中,不传递实际变更的字段,仅通知有变化的广告ID,索引更新服务实时读取最新数据完成更新,这样可以有效的解决消息乱序引起的数据不一致问题。
  • 当更新索引的并发达到一定量级后,可通过合并相同广告的变更、或者将倒排和正排更新分离的方式来提升整体的更新速度。

2. 广告检索平台的整体流程

广告检索平台负责承接C端的流量请求,从海量广告库中筛选出最合适的前N个广告,并在几十毫秒内返回结果,它是一个多级筛选和排序的过程。

图7:广告检索平台的整体流程

Recall层侧重算法模型,Search层侧重业务。从下到上,计算复杂度逐层增加,候选集逐层减少。(说明:搜索广告场景和推荐广告场景在某些子模块上存在差异,但整体流程基本一致,这里不作展开)

性能设计是检索平台的重点,通常有以下手段:

  • 做好服务分层,各层均可水平扩展。
  • 采用Redis缓存,避免高并发请求直接打到数据库,缓存可按业务规划多套,进行分流。
  • 采用多线程并行化某些子流程,比如多路召回逻辑、多模型打分逻辑。
  • 热点数据进行本地缓存,比如广告位的配置信息以及策略配置信息,在服务启动时就可以预加载到本地,然后定时进行同步。
  • 非核心流程设置超时熔断走降级逻辑,比如溢价策略(不溢价只是少赚了,不影响广告召回)。
  • 和主流程无关的逻辑异步执行,比如扣费信息缓存、召回结果缓存等。
  • 精简RPC返回结果或者Redis缓存对象的结构,去掉不必要的字段,减少IO数据包大小。
  • GC优化,包括JVM堆内存的设置、垃圾收集器的选择、GC频次优化和GC耗时优化。

3. 计费平台的技术方案

计费平台也是一个核心系统,主要完成实时扣费功能。比如CPC结算方式下,广告主设置的预算是50元,每次点击扣1元,当扣费金额达到预算时,需要将广告及时下线。

除此之外,计费平台还需要支持CPM、CPT等多种结算方式,以及支持反作弊、余额撞线处理、扣费订单的摊销和对账等功能。

计费平台的特点是:并发高、数据量大、同时可用性要求高,需要做到不少扣,不重复扣。下面以CPC实时点击扣费为例,详细说下技术方案。

图8:CPC实时扣费流程

首先,整个扣费流程做了异步化处理,当收到实时扣费请求后,系统先将扣费时用到的信息缓存到Redis,然后发送MQ消息,这两步完成后扣费动作就算结束了。

这样做的好处是:能确保扣费接口的性能,同时利用MQ的可靠性投递和重试机制确保整个扣费流程的最终一致性。

为了提高可用性,针对Redis和MQ不可用的情况均采用了降级方案。Redis不可用时,切换到TiKV进行持久化;MQ投递失败时,改成线程池异步处理。

另外,每次有效点击都需要生成1条扣费订单,面临大数据量的存储问题。目前我们采用的是MySQL分库分表,后期会考虑使用HBase等分布式存储。另外,订单和账务系统之间的数据一致性,采用大数据平台做天级别的增量抽取,通过Hive任务完成对账和监控。

4. OLAP海量数据报表的技术方案

数据报表是也是广告平台的核心业务,它是广告主、平台运营人员进行投放优化、业务决策的依据。先来看下广告数据仓库的分层结构:

图9:广告数据仓库的分层结构

  • 源数据层:对应各种源数据,包括HDFS中实时采集的前后端日志,增量或者全量同步的MySQL业务数据表。
  • 数据仓库层:包含维度表和事实表,通常是对源数据进行清洗后的数据宽表,比如行为日志表、推广宽表、用户宽表等。
  • 数据集市:对数据进行轻粒度的汇总表,比如广告效果表、用户行为的全链路表、用户群分析表等。
  • 数据应用层:上层应用场景直接使用的数据表,包括多维分析生成的各种收入报表、Spark任务产出的算法模型特征和画像数据等。

采用这样的分层结构,和软件分层思想类似,提高了数据的维护性和复用性。

再来看应用层报表部分面临的挑战:聚合维度多,需要分时、分广告位、分推广等几十个维度;单表最大达到百亿级别;支持时间范围的实时查询。

这部分由公司的大数据部门维护,采用了开源的技术方案,离线部分使用Kylin,数据存储在HBase中;实时部分使用Flink和Spark Streaming,数据存储在Druid中。

写在最后

本文详细介绍了广告系统的初期架构和核心技术方案。随着业务演进,架构也会随之变得更加复杂,但是大数据存储、高并发、高可用,始终是广告业务的技术难点。

关于广告系统的稳定性保障、广告策略的可扩展性设计、RTB实时竞价的系统架构等有价值的内容,后续再分享给大家,欢迎关注我的公号。针对本篇文章,如果有任何疑问或者建议,可以留言讨论。

<END>

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

本文分享自 Java识堂 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
互联网智能广告系统架构(业务+系统)
互联网智能广告系统架构 (争取用最简单的图,最简洁的语言描述清楚) 一、业务简述 从业务上看整个智能广告系统,主要分为: 1)业务端:广告主的广告后台 2)展现端:用户实际访问的页面 业务端,广告主
架构师之路
2018/02/28
3.7K0
互联网智能广告系统架构(业务+系统)
广告系统,一览无余
想全面了解广告的概念和前世今生的小伙伴,可以看看前一篇文章:《广告到底是个啥?》 。
Coder的技术之路
2022/09/19
8880
广告系统,一览无余
一条互联网广告从开始到结束的旅程
广告变现作为互联网公司一种最便捷和直接的变现途径。国际国内各大互联网公司如:Facebook、Google、阿里、腾讯、字节跳动、各大视频等,广告收入占其总收入的比例都非常高。大媒体通常自己建立广告投放平台,对自有流量进行变现。本文简单介绍一条互联网从开始到结束的旅程是什么样的。
产品言语
2022/11/14
9360
一条互联网广告从开始到结束的旅程
都是推荐系统,广告算法和推荐算法有啥区别?
首先我们将问题再明确一下,我们是将 广告算法里面的推荐广告和 自然推荐结果里的推荐系统进行对比,因为广告算法里面还有“搜索广告”,搜索广告和推荐系统差异性就太大了,这里不做讨论。
Datawhale
2022/03/01
2K0
都是推荐系统,广告算法和推荐算法有啥区别?
一文简单了解商业化广告系统
互联网广告是流量进行商业化变现的重要途径,广告系统涉及多个功能包含广告投放平台、大数据平台、商业化智能运营平台、算法策略平台、工具平台等多个平台互相协作。
产品言语
2022/06/02
8190
一文简单了解商业化广告系统
简述广告系统整体架构
“ 在广告实时投放过程中,DSP(Demand-Side Platform)作为需求方平台,通过广告交易平台(AdExchange)对每次曝光进行竞价尝试,对于ADX的每一次竞价请求,DSP将ADX给到的用户唯一标识信息(设备信息等)转化为DSP能够识别的用户,根据用户的用户画像等行为数据进行流量的筛选、广告的召回、筛选、排序、点击率/转化率预估等,使ROI最大化。”
产品言语
2022/06/02
2.2K0
简述广告系统整体架构
爱奇艺信息流广告的排序算法演进
爱奇艺中国视频行业领先者,伴随着移动搜索市场的日渐强大,爱奇艺推出移动端信息流广告,视频关联位广告,贴片广告,浮层广告,角标广告等等
Python编程爱好者
2020/11/11
1.3K0
爱奇艺信息流广告的排序算法演进
王喆:"深度"学习计算广告
导读:大家好,我是《深度学习推荐系统》的作者王喆,很多同行可能读过这本系统性介绍推荐系统的书,但大多数人可能不知道我职业生涯的头四年都在做广告系统,之后才在推荐系统方向工作了四年,这两年又回到了广告方向。既然是重操旧业,就不免想对计算广告这个方向做一次全面的再思考。
NewBeeNLP
2023/01/11
1.4K0
互联网智能广告系统简易流程与架构 | 架构师之路
很多朋友估计没有做过这一块,争取最简洁的语言描述清楚。 一、业务简述 从业务上看 整个智能广告系统,主要分为: 1)业务端:广告主的广告后台 2)展现端:用户实际访问的页面 业务端,广告主主要有
架构师之路
2018/03/01
1.7K0
互联网智能广告系统简易流程与架构 | 架构师之路
下一代的全能广告系统架构
引言:6.14日“腾讯创新日:科技年技术盛宴”代表腾讯各个事业群技术实力的四级专家、腾讯微创新2016年度创意获奖团队欢聚一堂,一起畅谈AI、系统安全、架构设计、社交传播、推荐模式、游戏引擎等前沿科技和腾讯应用创新的台前幕后。来自CDG社交与效果广告部 系统研发中心总监、专家工程师唐溪柳,就下一代的全能广告系统架构,给大家进行了分享。 游戏、广告、电商是互联网3大现金流业务,2016年腾讯广告收入增长54%达到270亿。本次分享和大家一起探讨了在数据量急剧增长的情况下腾讯大统一广告系统的广告业务有什么特
腾讯大讲堂
2018/03/01
2.8K0
下一代的全能广告系统架构
美团O2O广告营销中的机器学习技术
AI(人工智能)技术已经广泛应用于美团的众多业务,从美团App到大众点评App,从外卖到打车出行,从旅游到婚庆亲子,美团数百名最优秀的算法工程师正致力于将AI技术应用于搜索、推荐、广告、风控、智能调度、语音识别、机器人、无人配送等多个领域,帮助美团数亿消费者和数百万商户改善服务和体验,帮大家吃得更好,生活更好。
美团技术团队
2019/04/04
1.5K0
美团O2O广告营销中的机器学习技术
ADX广告交易平台广告的交易模式
“ ADX广告交易平台(AdExchange)整合广告资源和网络,通过不同的交易方式对广告资源进行售卖,支持程序化直采、优选购买和公开竞价等多种交易方式,DSP可以对接ADX以不同的交易方式更加透明地购买媒体的广告曝光,精准定位目标人群,从而进一步提高广告投放ROI。”
产品言语
2022/06/02
4.1K0
ADX广告交易平台广告的交易模式
《计算广告》笔记
我的博客: https://www.luozhiyun.com/archives/223
luozhiyun
2020/02/23
1.2K0
广告,你到底是个什么东西!
近年,特别是近两年,广告真的是无处不在。甚至,连我最喜欢的欢乐斗地主,都开始看广告得欢乐豆了。
Coder的技术之路
2022/09/19
9020
广告,你到底是个什么东西!
计算广告笔记-计算广告技术概览
计算广告是根据个体用户信息投送个性化内容的典型系统之一。在介绍计算广告系统的架构之前,先看看一般的个性化系统是如何构成的。
公众号-不为谁写的歌
2020/07/23
2.9K0
计算广告笔记-计算广告技术概览
【计算广告】不懂这些专业术语别说你懂广告
不知不觉,广告已经渗透在我们生活中的方方面面。你说你讨厌广告,但其实你又离不开广告,举个简单的例子,大家在求职的时候,投递简历,这也是一种广告,在求职中简历的重要性不需要过多强调。广告以前最重要的是广而高知,还记得黄金时段必播的最洗脑的"脑白金"广告,不仅广泛的触达了各个群体,也改变了人们的行为认知。关于广告,可以写很多内容,本篇主要介绍在广告行业中的专业术语,及时大家可能不从事广告行业,但是了解业务知识帮助还是很大的,比如有利于对腾讯广告算法大赛理解更加深入。
黄博的机器学习圈子
2021/04/29
1.5K0
史上最详细的新浪广告系统技术架构优化历程
内容来源:2017 年 08 月 10 日,新浪广告开发技术专家徐挺在“第二届APMCon中国应用性能管理大会【大规模网络架构优化专场】”上进行的《新浪广告系统的服务化优化历程》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
IT大咖说
2018/12/06
1.8K0
20分钟吃掉广告算法业务知识
而品牌广告则是为了通过提升品牌知名度美誉度从而间接带来该品牌产品用户和销售收入的增长。
lyhue1991
2023/02/23
1.9K0
20分钟吃掉广告算法业务知识
计算广告系列(二)-常见广告形式介绍!
今天这一篇我们来介绍几种常见的广告形式,分为合约广告、搜索广告、广告网络、广告交易市场和原生广告。
石晓文
2019/05/14
1.9K0
计算广告系列(二)-常见广告形式介绍!
京东广告研发——效率为王:广告统一检索平台实践
在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。Juint除了Suite执行器还有哪些执行器呢?由此我的Runner探索之旅开始了!
京东技术
2024/05/20
3300
京东广告研发——效率为王:广告统一检索平台实践
推荐阅读
相关推荐
互联网智能广告系统架构(业务+系统)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档