幕后揭秘:Netflix 直播广告事件管道的演进——第二部分 笔记

幕后揭秘:Netflix 直播广告事件管道的演进——第二部分

Netflix 重构了其广告事件发布器(Ads Event Publisher),以应对规模扩大和复杂性提升的挑战,尤其是针对直播流广告。原有系统依赖键值存储(Key-Value store)进行广告元数据增强。尽管该方案功能可行,但存在扩展瓶颈和关键路径依赖,不适用于直播场景。直播流会产生大规模且突发的流量,需要更稳健且具备弹性的解决方案。新架构采用 Apache Flink(一种有状态流处理框架)实现准实时增强。广告服务器响应日志不再写入数据库,而是发送至 Kafka。Flink 随后在这些响应与客户端生成的广告事件之间执行实时流式连接(streaming join)。此举消除了关键服务路径上的直接数据库写入,从而避免服务中断并提升可扩展性。Flink 作业负责标准化事件、将其路由至正确的处理区域,并执行有状态连接。该作业将最近的广告服务响应保留在内存中,并在可配置的时间窗口内(通常为 60 分钟)将传入的客户端事件与这些响应进行匹配。此方法允许在两个事件均到达时即时完成增强。若事件先到达,则将其暂存,直至对应的响应出现。为解决跨区域增强问题,系统将客户端事件路由至实际服务广告的区域,而非将所有服务响应在全球范围内复制,这种方式更具成本效益。广告令牌(ad token)现已包含服务区域信息。虽然 60 分钟的时间窗口可覆盖绝大多数事件,但系统还设有独立路径以恢复迟到的事件,从而确保计费与报告所需的数据完整性。这种有状态流处理架构为 Netflix 不断演变的广告需求提供了必要的可扩展性与弹性。
CdXz5zHNQW_vv6mcOQtqA.png