
1) 【一句话结论】广告投放系统的实时数据处理需通过“数据采集(埋点+日志+时间差校验)- 流处理(Flink Exactly-Once计算CTR/CVR)- 多级存储(Redis实时策略,Hive历史分析)- 策略闭环(动态出价/素材推荐)”流程,核心是保障低延迟(如100ms内)、数据准确,利用实时指标优化投放ROI。
2) 【原理/概念讲解】老师口吻:广告投放的实时数据处理,本质是快速响应用户行为并调整策略。首先,数据采集:前端埋点捕获广告点击事件(字段含广告ID、用户ID、时间戳),后端API日志记录转化事件(字段含广告ID、用户ID、转化时间),通过“点击-转化时间差≤5秒”校验数据一致性,避免指标计算错误。接着,流处理:选Flink(Exactly-Once语义、状态管理),因为能保证数据不丢失、不重复,计算5分钟窗口内的CTR(点击数/曝光数)、CVR(转化数/点击数),实时更新广告出价。然后,存储:实时数据存Redis集群(4GB内存,QPS≥10k,延迟≤5ms,用于策略实时更新);历史数据同步到Hive(按天分区,便于长期分析)。最后,优化:当CTR低于0.5%时降低出价,CVR高于行业均值2%时推荐该素材,形成闭环提升ROI。比如,数据采集像“收集实时行为数据”,处理像“快速计算指标”,存储像“分类存放数据”,优化像“用指标调整策略”。
3) 【对比与适用场景】
| 方案类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 实时数据采集 | 前端埋点(点击事件)+后端API日志,校验时间差 | 低延迟捕获用户行为,确保数据源一致 | 广告点击、转化等实时事件 | 需埋点规范,避免数据遗漏;时间差校验逻辑需明确 |
| 实时数据处理 | Flink(Exactly-Once语义,状态管理)计算窗口指标 | 毫秒级延迟,高吞吐,容错 | 实时CTR/CVR计算,动态出价 | 并行度配置需匹配数据量;状态存储(如Redis)需考虑内存 |
| 数据存储 | Redis(集群,4GB内存)实时存储,Hive(按天分区)历史存储 | 低延迟读写(Redis),高扩展(Hive) | 实时策略更新(Redis),长期分析(Hive) | 存储成本高(Redis),需权衡;Hive分区策略影响查询效率 |
4) 【示例】
# Flink计算CTR并更新Redis(修正:sink到Redis,而非Kafka)
from flink import StreamExecutionEnvironment
env = StreamExecutionEnvironment.get_execution_environment()
# 1. 采集:从Kafka读取点击日志
click_stream = env.socket_text_stream("localhost", 9092)
# 2. 解析:结构化数据
parsed_clicks = click_stream.map(lambda x: parse_click(x)) # 解析为字典,包含ad_id, timestamp, is_click
# 3. 计算:5分钟窗口内CTR
ctr_stream = parsed_clicks.key_by("ad_id").window(TumblingProcessingTimeWindow.of("5min")).reduce(
lambda acc, cur: (acc[0] + 1, acc[1] + 1) if cur["is_click"] else (acc[0], acc[1] + 1)
).map(lambda x: (x[0], x[1] / x[0] if x[0] > 0 else 0))
# 4. 输出:更新Redis集群
ctr_stream.map(lambda x: f"SET ad_ctr:{x[0]} {x[1]} EX 3600").sink_to_redis("redis-cluster", port=6379)
# Redis配置依据:根据业务量估算QPS(如10k点击/秒),分配4GB内存,集群模式提升可用性
5) 【面试口播版答案】
面试官您好,关于广告投放系统中实时数据处理,核心是通过“数据采集-流处理-存储-策略优化”闭环,保障低延迟(如100ms内)和数据准确,利用实时指标动态调整投放。具体来说,数据采集通过前端埋点(捕获点击事件,含ad_id、用户ID、时间戳)和后端API日志(记录转化事件,校验点击与转化时间差≤5秒,确保数据一致);处理环节用Flink(Exactly-Once语义),计算5分钟窗口内的CTR(点击数/曝光数)、CVR(转化数/点击数),实时更新广告出价;存储方面,实时数据存入Redis集群(4GB内存,QPS≥10k,延迟≤5ms,用于策略实时更新),历史数据同步到Hive(按天分区,便于长期分析);最后利用数据优化,比如CTR低于0.5%时降低出价,CVR高于行业均值2%时推荐该素材,形成闭环提升ROI。
6) 【追问清单】
7) 【常见坑/雷区】