Day38-18|19.6.2 Lambda 架构在某网广告平台的应用与演进:从实时投放到数据闭环
Day38-18|19.6.2 Lambda 架构在某网广告平台的应用与演进:从实时投放到数据闭环
对应教材目录:第 19 章 大数据架构设计理论与实践 → 19.6 大数据架构设计案例分析 → 19.6.2 Lambda 架构在某网广告平台的应用与演进
学习目标:理解广告平台中曝光、点击、转化、预算和计费数据的处理特点;掌握 Lambda 架构如何支撑实时投放、频次控制、效果分析和历史核算;能够分析广告平台从单体统计、批处理到实时大数据平台的演进过程及其架构权衡。
一、广告平台的业务特点
广告系统同时服务广告主、媒体、用户、运营和财务,数据链路长、事件量大、实时性要求高且直接涉及费用结算。一次广告展示可能经历请求、竞价、曝光、点击、落地页访问、注册、下单和支付等多个事件。
广告请求 -> 竞价 -> 曝光 -> 点击 -> 到达 -> 转化 -> 计费/归因
| | | | | | |
实时投放 实时预算 频控 风控 推荐 归因分析 财务核算
广告平台需要同时解决:实时竞价和投放、预算控制、频次控制、反作弊、实时看板、效果归因、模型训练和准确计费。实时结果用于决策,批量结果用于修正、分析和结算,Lambda 架构因此具有典型应用价值。
二、核心数据和主体
1. 广告主和活动
包括广告账户、活动、计划、创意、预算、出价、定向和投放时间。配置变化应版本化并审计,不能让实时系统读取到部分更新的活动配置。
2. 用户与设备
包括用户标识、设备标识、地域、兴趣、行为和隐私授权。数据必须分级、脱敏和最小化,设备标识不能被无限期或跨用途使用。
3. 广告事件
曝光、点击、转化、取消、无效流量和计费事件应有唯一 ID、事件时间、接入时间、广告、媒体、用户或设备、来源和版本。
4. 预算与财务
预算消耗、出价、扣费、退款和结算属于高价值数据,要求幂等、可审计、可对账和最终确认。实时预算可以是近似值,但不能直接绕过确认流程生成最终账单。
三、广告平台的主要挑战
1. 极高吞吐和低延迟
广告请求需要在很短时间内完成候选过滤、竞价、频控和返回,事件吞吐却可能远高于普通交易系统。实时链路必须靠内存状态、缓存、分区、并行和预计算支撑。
2. 事件重复、丢失和作弊
网络重试会导致重复曝光或点击,客户端可能伪造事件,机器人会制造大量无效流量。系统需要事件去重、设备和行为特征、来源校验、风控模型和批量反作弊。
3. 归因复杂
一次转化可能对应多个触点、设备和渠道,归因窗口、模型和迟到事件会影响效果报告和结算。实时归因与最终归因可能不同,必须保留版本和修正记录。
4. 多方指标不一致
媒体、广告主、投放平台和财务可能使用不同过滤、时区、去重和归因口径。平台需要定义指标契约和数据版本,不能让每个报表自行解释事件。
四、广告 Lambda 架构
广告请求/媒体/客户端/转化系统
|
接入、鉴权、反作弊预检
|
事件日志/消息队列
/ \
/ \
速度层:投放、频控、预算、告警 原始事件归档
| |
实时特征/实时指标 批处理层:去重、归因、反作弊、核算
\ /
\ /
服务层:投放 API、看板、报表、账单
速度层的目标是快速作出投放和预算决策,批处理层的目标是完整、准确和可重算,服务层根据使用者提供实时估算或最终确认结果。
五、速度层:实时投放和预算控制
1. 实时特征
速度层计算用户和设备的近期行为、广告频次、预算消耗、媒体质量、实时转化率和风险分数。特征服务要提供低延迟读取,状态更新必须幂等并带版本。
2. 频次控制
系统要限制同一用户、设备或家庭在时间窗口内看到同一广告的次数。分布式计数需要处理并发、过期、跨节点一致性和设备标识变化。短时间内可以允许近似,但对高价值活动应设置更严格的校验。
3. 预算控制
实时预算消耗可以按媒体、活动和地域分区聚合,设置安全余量和限额。预算扣减不能只依赖异步估算,关键扣费需要通过幂等交易和最终对账确认。
4. 实时竞价
竞价服务使用缓存的活动配置、出价、定向和风险特征。配置发布采用版本化和原子切换,避免部分节点读取旧配置、部分节点读取新配置导致竞价不一致。
六、批处理层:去重、归因、反作弊和核算
1. 事件清洗和去重
批处理读取完整事件,根据曝光 ID、点击 ID、转化 ID、设备和时间窗口去重,并识别迟到和异常事件。去重规则要版本化,因为业务和反作弊策略会变化。
2. 归因计算
批处理根据归因窗口、触点序列、渠道和模型计算最终转化归属。归因结果应保存模型版本、输入事件范围和计算时间,支持广告主复核。
3. 反作弊
离线分析可以识别设备群、异常 IP、点击时间模式、转化异常、批量注册和流量来源变化。被判定为无效的事件应标记状态或生成修正事件,不能直接删除原始证据。
4. 计费与结算
最终账单以确认事件、无效流量规则、合同和计费模型为依据。账单生成前要进行金额、事件量、广告主、媒体和渠道对账;账单版本和人工调整必须可审计。
七、服务层和不同结果口径
广告平台至少需要提供三类结果:
- 实时结果:用于投放、预算和运营监控,追求新鲜度。
- 预估结果:用于广告主实时看板,可能包含暂未完成归因的数据。
- 最终结果:用于结算、合同和正式报表,强调确认和可追溯。
服务接口应明确结果类型、统计时间、时区、口径、版本和是否可能修正。不能把实时估算直接命名为“最终点击数”或“最终费用”。
八、数据质量和对账体系
广告事件链路可以用漏斗校验:
请求数 >= 返回数 >= 曝光数 >= 点击数 >= 转化数
| | | |
接入校验 展示校验 去重校验 归因/支付校验
实际业务中并非所有数量都严格单调,但可以通过比例、时间、媒体和活动维度发现异常。对账包括:
- 采集系统与事件平台对账。
- 媒体曝光与平台曝光对账。
- 点击与落地页访问对账。
- 转化与订单/支付对账。
- 预算消耗与财务账对账。
差异应进入分类、补偿和人工复核流程。
九、架构演进过程
阶段一:单体统计和离线报表
早期系统可能把事件写入关系数据库,每天批量生成报表。优点是简单,缺点是无法支撑实时投放和高吞吐事件。
阶段二:读写分离和数据仓库
通过日志、ETL 和数仓降低在线库压力,增加历史分析能力,但实时特征和预算仍然存在延迟。
阶段三:消息平台和流处理
引入事件队列、实时计算、缓存和特征服务,支持频控、预算、实时看板和风控。批处理继续承担去重、归因、反作弊和核算。
阶段四:平台化和智能化
统一数据契约、数据湖/湖仓、模型平台、特征平台、实时服务、数据治理和多租户能力,形成广告数据闭环。实时和批量结果通过版本、水位和对账连接。
十、峰值和资源治理
广告流量在热点事件、节假日和大促期间突增。应采用:
- 请求层限流、熔断和多级缓存。
- 活动配置预热和读副本。
- 消息分区扩展和优先级队列。
- 实时计算资源预留和弹性扩容。
- 非核心报表、模型训练和历史重算错峰。
- 预算和风控链路高于普通统计的优先级。
如果实时链路不能及时更新预算,应采用安全余量或临时收紧投放,而不能继续无限消耗。
十一、安全和隐私设计
广告平台处理用户行为和设备信息,应遵循最小化、目的限制和授权。用户标识、设备标识和转化数据分级保护,访问按广告主、媒体、团队和用途授权。
广告主不能读取其他广告主数据,媒体不能读取全平台用户画像,算法人员访问训练数据应脱敏。模型、规则、出价和计费配置要版本化、审批和审计。日志、备份和消息副本也要保护敏感信息。
十二、案例分析:从离线广告系统演进到实时平台
某广告平台原来每天生成一次曝光和点击报表,后来要求实时预算控制、频次限制和异常流量拦截。
演进方案:
- 先建立统一事件模型和可靠接入,保留原有批报表作为基准。
- 引入消息日志和速度层,实时计算频控、预算和风险特征。
- 批处理继续做去重、归因、反作弊和最终账单。
- 服务层区分实时看板、确认报表和账单结果。
- 进行双跑,对比实时和离线指标、预算误差、延迟和成本。
- 逐步将投放、看板和风控迁移到实时服务,保留批处理作为校正和结算路径。
- 建立数据目录、指标契约、权限、审计和生命周期管理。
十三、案例题答题模板
广告平台案例可以按以下方式作答:
- 识别曝光、点击、转化、预算、出价和计费等核心事件。
- 设计统一事件、消息、原始归档和数据版本。
- 速度层实现投放、竞价、频控、预算、风控和实时指标。
- 批处理层实现去重、归因、反作弊、历史报表和账单核算。
- 服务层区分实时、预估和最终确认结果。
- 设计峰值弹性、缓存、限流、优先级和故障降级。
- 说明数据质量、漏斗校验、对账、安全、隐私和审计。
- 说明从离线到实时平台的分阶段演进和双跑验证。
十四、课后练习
练习 1
为什么广告平台不能只使用实时结果进行计费?
参考答案:实时事件可能重复、迟到、作弊或未完成归因,实时结果适合投放和监控;计费需要去重、反作弊、归因、合同规则和对账后的最终确认结果。
练习 2
广告平台 Lambda 的速度层主要承担哪些任务?
参考答案:实时竞价、频次控制、预算消耗、实时特征、风险判断、热点指标和投放决策。
练习 3
从离线广告系统迁移到实时平台为什么要双跑?
参考答案:双跑可以对比新旧口径、事件完整性、预算误差、延迟、资源和账单差异,确认实时链路不会破坏原有最终结果。
练习 4
论文题:论“广告平台大数据架构的设计与演进”。
参考答案要点:事件模型、消息、实时投放、预算频控、批量去重、归因、反作弊、计费、数据质量、对账、峰值弹性、隐私安全和分阶段迁移。
十五、今日复盘
- 我能否说明广告曝光、点击、转化和计费的关系?
- 我是否能区分实时投放结果、预估报表和最终账单?
- 我能否设计批处理和速度层的职责?
- 我是否考虑反作弊、对账、预算、峰值和隐私?
- 我能否写出从离线系统向 Lambda 平台的演进路径?
广告平台案例的核心结论是:速度层负责及时投放、频控、预算和风控,批处理层负责去重、归因、反作弊和最终核算,服务层区分临时与确认结果;系统演进必须以统一事件、双跑对账、数据治理和分阶段迁移保证实时能力不会牺牲计费准确性。