RTB实时广告系统毫秒级竞价背后的数据流水线设计
RTB广告系统需在100毫秒内完成竞价决策,其本质是实时数据流处理、机器学习预测与高性能交易的结合。通过Kafka削峰解耦、Flink实时计算用户兴趣、Redis内存加速查询,并实施冷热数据分离,确保系统在高并发下稳定运行。优化关键在于避免数据库直接参与实时计算、减少网络调用及强化链路可观测性。
# stream = env
.fromSource(kafkaSource, WatermarkStrategy.noWatermarks(), "click");
stream
.keyBy(Event::getUserId)
.window(SlidingEventTimeWindows.of(Time.minutes(5), Time.minutes(1)))
.aggregate(new UserInterestAggregator())
.print();
```
这段代码的含义是:按照用户 ID 分组,统计最近 5 分钟行为,实时更新用户兴趣。比如用户画像从原来的 `["手机"]` 实时更新为 `["手机", "新能源汽车", "智能家居"]`。
## 六、RTB真正难点:毫秒级竞价计算
广告竞价不是简单谁价格高谁赢。现在广告系统一般计算的是:
```
广告价值 = 出价 × 点击概率 × 转化概率 × 用户价值
```
举个例子:广告A出价 2 元,点击概率 5%,转化概率 10%,价值 = 2 × 0.05 × 0.1 = 0.01。广告B出价 1 元,点击概率 20%,转化概率 30%,价值 = 0.06。虽然 B 出价低,但系统会选择 B。这就是智能广告的核心逻辑。
## 七、机器学习模型如何进入RTB?
广告平台通常会训练 CTR 模型(Click Through Rate)来预测点击率。输入特征包括:用户年龄、地域、兴趣、历史行为、广告类型、时间、设备等。输出就是点击概率。
一个简单的逻辑回归模型示例:
```python
from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
X = [[25, 1, 3], [40, 0, 2], [30, 1, 5]]
y = [1, 0, 1]
model.fit(X, y)
prob = model.predict_proba([[28, 1, 4]])
print(prob) # 点击概率:0.73
```
广告系统根据预测概率乘以出价来决定排序。
## 八、性能优化:为什么广告系统喜欢内存计算?
RTB 最大的敌人是慢。如果每次查询用户画像、广告信息、模型参数都走 MySQL,加起来十几毫秒、几十毫秒就没了。所以大量数据要放在 Redis 里。
用户画像的存储格式:
```
key: user:10001
value: {
age: 30,
interest: ["AI", "汽车"]
}
```
查询代码:
```python
import redis
r = redis.Redis(host="localhost", port=6379)
profile = r.get("user:10001")
print(profile)
```
Redis 的响应时间在微秒级。
## 九、数据冷热分离,是广告系统的生存技巧
广告数据非常特殊。最近一分钟的点击非常重要,三年前的点击基本没人看。所以必须做冷热分离。
**热数据**存 Redis 和 Flink State,特点是高速访问。**温数据**存 HBase 或 ClickHouse,比如最近 30 天的广告效果。**冷数据**存 HDFS 或对象存储,用于模型训练。
整体架构:
```
实时数据 → Kafka → Flink → Redis → 实时决策
历史数据 → HDFS → Spark → 模型训练
```
## 十、真正的大规模RTB系统,优化重点在哪里?
总结下来有三个关键点。
**第一:不要让数据库承担实时计算。** 数据库负责存储,计算交给 Flink 或 Spark。
**第二:减少网络调用。** 一次 RTB 请求可能调用用户画像、广告库、模型服务、风控服务。如果 10 个服务各耗时 5 毫秒,直接超时。所以需要服务合并、本地缓存、模型预加载。
**第三:数据链路必须可观测。** 广告系统最怕“不知道哪里慢”。需要监控 Kafka lag、Flink checkpoint、接口耗时、模型响应时间、QPS、错误率。用 Prometheus 采集指标,Grafana 展示,比如 P99 响应时间 85ms、Kafka 延迟 2000、模型耗时 15ms。
## 十一、写在最后:RTB其实就是大数据时代的“高速交易系统”
很多人学习大数据只关注 Hadoop、Spark、Hive,但真正工业级应用的核心不是离线分析,而是**实时决策**。广告 RTB 只是其中一个代表。类似架构还应用于推荐系统、风控系统、智能客服、自动驾驶、金融交易。
它们都有共同特点:数据不断产生,系统不断计算,决策必须实时。未来的大数据竞争,不是谁存的数据多,而是谁**能够最快把数据变成行动**。这也是为什么实时计算、流式架构、AI 模型服务,会成为未来数据工程师必须掌握的核心能力。
数据不会自动产生价值,真正产生价值的是:让数据在正确的时间,做出正确的决策。
来源:https://developer.aliyun.com/article/1749693
相关热点
继续查看同栏目近期热点。
延伸阅读
补充最近整理过的热点入口。
