互联网DSP广告系统及关键技术分析

在互联网广告产业中,DSP是一个系统,也是一种在线广告平台。它服务于广告主,帮助广告主在互联网或者移动互联网上进行广告投放,DSP可以使广告主更简单便捷地遵循统一的竞价和反馈方式,对位于多家广告交易平台的在线广告,以合理的价格实时购买高质量的广告库存。

DSP让广告主可以通过一个统一的接口来管理一个或者多个Ad Exchange账号,甚至DSP可以帮助广告主来管理Ad Exchange的账号,提供全方位的服务。
微博粉丝通

程序化购买

首先先介绍下程序化购买广告系统的相关概念:

  • Ad Network(广告网络)。聚合多种展示类广告媒体资源,旨在提升广告主媒体购买的效率。
  • ADX(Ad Exchange, 广告交易平台)。集合不同网络以及网站整合出的技术平台,旨在促成广告主以及网站主以竞价方式进行的媒体购买。
  • DSP(Demand Side Platform,广告需求方平台)。DSP为广告主提供跨媒体、跨平台的广告投放平台,通过数据整合分析实现基于用户的精准投放,并不断优化投放效果。
  • SSP(Supply Side Platform,供应方平台)。SSP主要是针对广告主的服务提供商,协助网站拥有者将其广告位资源加入广告交易平台,并通过数据化方式管理其广告资源,旨在提升网站拥有者从广告交易平台中获取的收入。
  • RTB(Real Time Bidding,实时竞价)。实时竞价是DSP、广告交易平台在网络广告投放中才用的主要售卖方式,会在极短的时间内通过对目标受众竞价对方式获得该次广告的展现。
  • DMP(Data Management Platform,数据管理平台)。将分散的多方数据纳入统一的技术平台,并对数据进行标准化和细分、便签化管理,为DSP等提供数据支持,获得更好的投放效果。

微博粉丝通

DSP的特点

下图是DSP平台的广告投放流程,投放过程中涉及到广告受众,媒体网站,adx和dsp,分别标注了广告投放各阶段伴随发生的事件。从1~7步之间只允许100ms之内的延时,否则广告受众就会觉得网页加载速度太慢而选择离开。

微博粉丝通
一般市面上比较优秀的dsp存在以下几个特点

全方面的投放优化手段

基于人群浏览轨迹综合分析,把握住用户的短期购买倾向、长期偏好等,在此基础上可动态调整定向人群等,能够实现多种全方位的定向,目前常见的dsp广告样式如下
微博粉丝通

媒体资源丰富

DSP可以投放到各家媒体的各个广告位,涵盖到目前网络上的各个站点,包括各种新闻传媒和社交工具端均可以看到dsp广告的身影,如此多的广告资源接入对于广告主而言具有很好的广告投放资源。
微博粉丝通

精准投放

先进的用户定向技术(Audience Targeting)技术。服务于广告主或者广告主代理的DSP,则需要对Ad Exchange每一次传过来的曝光机会,根据关于这次曝光的相关数据来决定竞价策略。这些数据包括本次曝光所在网站、页面的信息,以及更为关键本次曝光的受众人群属性,人群定向的分析直接决定DSP的竞价策略。DSP在整个过程中,通过运用自己人群定向技术来分析,所得出的分析结果将直接影响广告主的广告投放效果

DSP系统架构

dsp系统架构

DSP整个流程中的角色包括广告主网站,媒体网站,广告网络和DSP,以及DSP内部的相关模块,如:RTB引擎,业务平台,日志收集系统,DMP,CM和反作弊系统。

投放前DSP会要求在广告主网站布码,同时在DSP的业务平台中录入广告投放的需求,如投放金额,投放排期,投放定向(如地域,兴趣,年龄等),最高限价。

当访客(即潜在的消费者)从左上角访问广告主网站开始,访客在广告主网站上的行为会被收集,同时DSP会与ADX和SSP进行Cookie Mapping,形成日志进行处理,形成回头客相关的行为数据标签。

当访客完成对广告主网站的访问,去其他媒体网站进行访问时,相应的媒体广告位根据事先嵌入的广告代码向广告网络发起广告请求,广告网络会将广告请求封装成http头 pb体的格式向多个DSP发起竞价请求。

当DSP接到竞价请求时会根据与广告网络约定的pb格式进行解包,拆解出相关的字段进行匹配,根据之前相关媒体积累的点击率结合点击率预测模型对出价进行预测,找出平台内在此次竞价请求能让平台利益最大化的广告主的创意进行投放,返回给广告网络出价与广告代码

广告网络会在特定时间内(通常是50~100毫秒)根据多个DSP的出价高低,以第二名价格多一分的价格让出价最高的dsp胜出,并将广告代码中的展现宏和点击宏进行替换(替换过程中会根据事先与dsp约定好的公钥对价格进行加密,以防止第三方篡改和窃听)

广告网络将广告代码返回给媒体,媒体会将广告代码放置在js对应的位置进行展现,展现和点击的过程中会先后触发广告网络和胜出DSP的展现代码,广告网络和DSP分别接收到展现请求会对相应的展现进行计费操作(月底会相互进行对账)

DSP内部会根据收集到的展现和点击进行计费操作,形成相应的报表;而浏览、展现、点击的记录会分别进行收集形成日志,经过ETL由DMP进行抽取和分析,形成媒体数据,用户标签,CookieMatch数据以及回头客用户标签数据,这些数据会在投放过程中作为RTB竞价的参考依据。

整个投放过程中其实还有一些其他的模块出现如CookieMapping、反作弊,动态创意、网站分析系统。只不过这些系统不是在主干流程上,后续单独进行描述和分析。

为了保证投放,DSP系统实现了多机房部署的结构,南北方机房分别在杭州和北京部署RTB引擎、点击率预测与相关的展现点击收集节点。投放活动相关数据通过Redis进行缓存,多机房进行准实时同步,媒体展现点击数据通过kafka队列进行推送,通过Consumer进行消费统计,最后通过媒体数据分发集群分发到多个机房进行使用。

RTB投放引擎架构

RTB引擎是DSP系统的核心,是实现高并发实时反馈的关键,RTB对外以HTTP服务形式暴露接口,当媒体上的js被触发,adx/ssp收到js请求后会将请求封装成http头+pb体(protocol buffer,谷歌定义的序列化数据交换格式)的方式作为客户端连接RTB,RTB对http消息按照事先约定解包在内部依靠相关数据进行计算,最终返回pb或json格式的出价和广告代码给广告交易平台。RTB 需要支持高并发(每天百亿级别请求)和低延时(50ms之内需要反馈)。

当时我们的RTB采用Linux C++开发,通过Adapter适配器层解耦适应不同的SSP/adx,算法池内部拆分成五层,五层之间相互正交,算法模块允许热插拔,编译完成的动态链接库可根据配置文件的变化实时进行加载和卸载,允许多算法链并行拆分流量进行A/B测试,流量处理过程中会对流经不同算法链的流量打上不同的算法标签,并在后续展现,点击过程中持续带上此标签用于后续效果的跟踪和分析。**

DMP数据处理架构

todo

用户画像

todo

广告行业的反作弊

todo

参考资料

1.《高可用架构》2.7章