构建广告平台(概览)

本文是关于在 Google Cloud 上构建广告平台的多篇系列文章的概览篇。由于这些平台由许多不同服务组成并为许多不同用户提供服务,因此本系列文章同时涵盖了通用和特定的基础架构方案。

系列文章的结构

本系列文章涵盖两大块:

术语

本系列文章和整个广告行业使用以下术语:

  • 广告资源:向买方提供的广告位。
  • 广告位:网页或移动页面上显示广告的空间。
  • 广告代码:包含描述广告位的参数的一小段代码。
  • 广告服务器:广告投放平台将广告素材投放到发布商媒体资源上的广告位时使用的技术。广告服务器通常包含广告素材选择、计数和投放等功能。
  • 广告主:希望直接或由其他买方代理通过不同媒体宣传产品的组织。
  • 受众群体:访问或使用发布商媒体资源的(唯一)用户群体。
  • 细分受众群:基于分类子集挑选出的(唯一)用户群体,广告主可以将其作为目标群体投放广告。
  • 买方:购买广告位以放置广告素材。买方可以是网络、代理机构或广告主。
  • 转化:由广告主预定义的、用户可能对广告主的媒体资源采取的操作。
  • CPA:每次转化费用。买方为每次操作支付的费用。操作或转化可以有不同的目标,例如尽可能多地获取用户、保留高价值的关键客户,或使目标用户在其网站上购买商品。操作可能是下载白皮书、注册接收简报,或在广告主的网站上购买商品。
  • CPC:每次点击费用。买方为每次广告点击支付的费用。
  • CPM:每千次展示费用。买方为每千次展示支付的费用。
  • 广告素材:向目标用户展示的广告。
  • CTR:点击率。点击次数除以展示次数所得的值。
  • CVR:转化率。转化次数除以展示次数所得的值。
  • DMP:数据管理平台,可为广告技术 (ad tech) 使用者提供额外用户信息。如果您允许这些平台访问 Cloud Storage 等对象存储空间,则它们可能会提供数据转储权限,有时也会将数据加载到您的平台。
  • 展示:广告从其来源获取,并且可计费。
  • 发布商:在本系列文章的语境中,发布商拥有一组数字媒体资源,例如可提供广告位以托管广告素材的网站或移动应用。
  • (发布商的)媒体资源:发布商将提供广告位的网站、应用或游戏。
  • 供应方:代表多个发布商提供可供购买的广告位。
  • 目标用户:广告的目标受众;打算浏览广告的人。
  • 分类:受众群体属性的分类,通常作为层次结构。
  • (唯一)用户:可以成为目标受众并且已知或被认为是唯一的用户。考虑到诸如多人使用同一设备或同一人使用不同设备等因素,确定唯一性很困难,并且通常是一种尽力而为的猜测。

实时出价术语如下:

  • Ad Exchange:接收来自 SSP 的广告请求的广告市场。在收到请求后,SSP 希望在选择中标之前从所有带有出价的 DSP 接收广告并将其返回给卖方。此交易必须快速完成。例如,Google 等待约 120 毫秒的时间让买方返回出价。
  • DSP:需求方平台,该平台接收广告请求,并且必须按照 SSP 或 Ad Exchange 设置的时间给出回应。允许的时间范围是 100 毫秒(最低)至几秒钟(最高)。DSP 决定是否要出价。如果确定出价,则他们必须选择广告、确定出价并将报价返回到 Ad Exchange。
  • RTB:实时出价。通过在线竞价机制向程序化买方展示广告资源(广告位)的过程。
  • SSP:供应(销售)方平台,该平台有时是广告服务器的一部分,或者作为可接收来自发布商或广告服务器的广告请求的独立工具存在。SSP 通常会向广告交易平台发送广告请求,但有时会将此请求直接发送给 DSP。SSP 可能会通过额外的受众群体上下文(例如受众特征)丰富此请求数据,以提高广告位的价值。SSP 希望收到赢得竞价的广告,然后将其返回给发布商或广告服务器。

本系列文章中特别使用以下额外术语:

  • 后端:前端用于检索数据或分流处理的服务或数据库,例如,机器学习模型训练。
  • 客户:使用您提供的平台的平台用户。
  • 前端:处理外部请求的服务。
  • 功能:在平台上运行的服务提供的特定功能。
  • 离线:描述在实时决策中不起作用的任何流程。
  • 在线:描述必须作为实时流程的一部分运行的任何流程。
  • 平台:一组服务,提供主要功能之一,例如广告投放、提供广告资源以及出价。
  • 平台用户:使用平台界面的发布商、销售方、买方、广告主或其他用户。
  • QPS:每秒查询次数。
  • 服务:作为一组提供的一个或多个功能,通常作为单个应用。
  • 工作器:执行任务的服务实例。通常有多个工作器并行运行。

共享组件

广告服务器、需求方平台、供应方平台和广告交易平台等不同的广告平台具有一些功能相似的功能组件,以便执行以下任务:

  • 让平台用户(供应方、买方)通过前端界面与平台进行交互。
  • 处理请求,例如广告或出价请求。
  • 管理事件和数据生命周期,例如展示次数、点击次数、转化次数,以及可能中标或不中标的出价。

下图展示了基于这些组件的架构。

广告平台共享组件架构

用户前端

大多数广告平台需要客户前端,其通常由一个或多个不同数据库提供支持的界面组成。前端必须满足以下要求:

  • 具备全球可访问性,且延迟时间达到足够提供良好用户体验的水平。
  • 具备高可用性,以便客户随时管理其偏好。
  • 能够按需扩缩,确认客户可以随时随地自行决定使用该平台(针对各时区和全球平台用户)。

这些前端可能会被供应方和/或买方使用,具体取决于平台,它们也可能构成广告服务器、DSP、SSP 或广告交易平台的一部分。每个前端都提供不同的管理功能,并处理不同的广告资源(广告素材、出价、请求、受众特征等)。

如需详细了解这些概念,请参阅用户前端(在第 1 部分中)。

请求和广告选择

平台在收到请求时会完成广告选择。请求可能是在通常的广告投放环境中根据广告代码生成的广告请求。或者,请求也可能是在实时出价环境中来自 SSP 或 Ad Exchange 的出价请求。

选择广告流程必须满足以下条件:

  • 具备高度可扩缩性:广告技术请求通常在数十亿日常请求范围内。
  • 具备高度可用性:由于规模巨大,即使一秒不可用也会导致请求失败,从而对商家产生巨大影响。
  • 提供最短延迟时间:广告必须尽快展示给目标用户,这会影响到广告被选择的速度。在实时出价中,延迟时间是一项关键要求,因为 SSP 或广告交易平台要求在特定时间段内返回出价响应,该时间段可能低至 100 毫秒。

广告选择流程中的组件有:

  • 接收广告请求的前端服务。
  • 前端用于做出决策的一个或多个数据存储空间。
  • 选择广告的选择算法。

处理请求(在第 1 部分中)展示了如何实现前端,而读取密集型存储模式(在第 1 部分中)展示了如何实现存储。如需详细了解广告服务器和实时出价工具,请阅读有关广告服务器出价工具的文章中的相关章节(在第 4 部分中)。

DSP 和广告服务器都使用广告选择逻辑来分析(唯一)用户,过滤掉不相关的广告系列和广告,然后选择广告。此外,出价工具的选择流程还包括决定是否出价、确定出价以及可能进一步优化其出价。您可以在投放广告负载的基础架构方案(在第 1 部分中)中找到相关链接。

事件和数据管理

在广告平台上做出的大多数决策都取决于不同来源的数据,包括:

  • 广告服务器前端收到的广告请求。
  • DSP 前端收到的出价请求。
  • DSP 中标端点收到的中标或未中标数据。
  • 广告投放给目标用户后生成的展示事件。 在大多数情况下,展示是可计费的展示。可计费展示会被呈现并视为可浏览。
  • 目标用户点击广告时生成的点击事件。事件数量可能比展示次数低几个数量级。
  • 目标用户针对广告主的媒体资源执行预期操作时生成的转化事件。事件数量可能低于广告点击次数。
  • 由平台用户管理的半静态数据。
  • 分析历史事件生成的离线数据。
  • 由 DMP 等外部来源提供的第三方数据,如用户细分和相关价格。

机器学习不是基于规则的系统,而是可以使用历史数据离线训练模型和使用实时数据在线训练模型的重要组件。随后,这些模型可以在本地部署,以便各个组件或服务(如广告服务器)进行在线预测。这些模型还可用于填充已提供预测的缓存/键值存储。

该平台必须具备以下功能:

  • 处理要收集、提取、处理和存储的 TB 级每日数据。
  • 收集、提取、处理和存储时,可扩缩至数十亿每日事件。
  • 为实时在线和离线处理提供方案。
  • 在分布式环境中运行处理任务,例如机器学习。
  • 将相关数据自动反馈回智能数据库:通过流式传输实时反馈或稍后批量传输。

如需详细了解如何处理出价请求、出价结果、展示次数和点击次数之间的联接,请参阅处理事件(第 3 部分)。

广告服务器

广告服务器通常由共享组件和广告投放功能组成,如下图所示。

带广告投放功能的广告平台架构

作为广告服务器的核心部分,广告投放功能需要具备以下特性:

  • 低延迟时间:必须快速投放广告,以确保目标用户可以看到广告(如果允许滚动),并且广告浏览体验不会受到影响。
  • 高可用性:选择广告后,由于平台服务中断而未投放广告将会造成浪费且费用高昂。
  • 可扩缩性:每天都有数十亿的广告请求,因此许多平台需要投放数十亿的相应广告。

即使某些 DSP 或 SSP 从其基础架构投放广告,本文也假设它们已将广告服务器作为其平台的一部分。如需详细了解投放广告,请参阅向目标用户投放所选广告(在第 3 部分中)。

出价工具

出价流程详见实时出价工具的基础架构方案(第 4 部分)

DSP 通常由满足以下要求的共享组件组成:

  • 出价响应必须在规定的截止时间内给出,这使得延迟时间变得至关重要。
  • 出价按每个出价请求计算,这使得广告选择逻辑变得复杂。算法中的这种额外逻辑通常由额外的出价工具服务处理。如需了解详情,请参阅出价(在第 4 部分中)。

下图展示了需求方平台的简要概览。

需求方平台简要概览

后续步骤