![640?wxfrom=5&wx_lazy=1](https://i-blog.csdnimg.cn/blog_migrate/05388532e8e1b15d3d4fae952b072cd6.png)
广告,即广而告之。广告的本质是传播,广告的灵魂是创意。广告一词,据考证是一外来语。它首先源于拉丁文advertere,其意为注意,诱导,传播。中古英语时代(约公元1300—1475年),演变为Advertise,其含义衍化为“使某人注意到某件事”,或“通知别人某件事,以引起他人的注意”。直到17世纪末,英国开始进行大规模的商业活动。这时,广告一词便广泛地流行并被使用。此时的“广告”,已不单指一则广告,而指一系列的广告活动。静止的物的概念的名词Advertise,被赋予现代意义,转化成为“Advertising”。汉字的广告一词源于日本。
1890年以前,西方社会对广告较普遍认同的一种定义是:广告是有关商品或服务的新闻(News about product or service)。
1894年,Albert Lasher(美国现代广告之父)认为:广告是印刷形态的推销手段(Salesmanship in print,driven by a reason why)。这个定义含有在推销中劝服的意思。
广告背后的技术实现,也在日新月异的更新,广告技术专家唐端荣女士,做了很多深入的研究,从本文可略见一斑当代广告背后技术的实现
唐端荣女士在做分享
背景概述
众所周知广告是目前大部分互联网公司流量变现的主要手段,广告根据其目的可分为合约广告和效果广告两种形式;合约广告通常是指品牌广告,其目的是让更多的人知晓品牌、以创造良好的品牌形象为目的,以期用户记住品牌并在未来的时间产生线下转化。合约广告一般会提前做好排期,按CPM+频次控制的方式进行投放,触达用户数和投放到量即完成投放任务,在投放期间价格始终是固定的。效果广告的主要目的是在短时间内有明显的在线用户转化行为诉求,比如电商后续产生的购买行为,游戏后续产生的下载激活等行为,所以大多按CPC、CPA方式投放(也有按CPM投放但对点击率有硬性要求的投放方式);效果广告的特点是实时参与投放和实时竞价,并要求对投放效果实时反馈,以观察当前投放是否符合ROI要求,在投放期间价格会根据流量竞争的激烈程度产生波动,但价格上限可由广告主自行定义。
广告投放技术的更新由静态页面纯手工的替换,到系统自动按排期投放,再到现在的RTB实时交易等经历了三个阶段。这次我们要介绍的DSP(Demand Side Platform需求方平台)投放引擎,它处于RTB实时交易链中代表广告主利益的节点,是一种直接面向广告主的效果广告投放技术,它是以竞价或定价的方式,实现广告的受众购买和程序化购买,支持实时竞价和人群定向(DMP),同时具备对投放效果的实时监测、分析和优化能力。本文主要介绍DSP系统的架构设计和核心功能的实现的一些要点。DSP系统是程序化广告生态链中的一员,不可能脱离上下游系统独自存在,所以在进入正文之前,让我们先来了解一下程序化生态链中几个主要系统的角色和职能。程序化广告生态图
- 高并发支持:广告请求量大,还要考虑效果数据收回产生的请求量,技术选型和架构设计时需要优先考虑性能问题;
- 低延迟:Ad Exchage交易市场对广告返回有明确时长限制,一般为100ms,还要考虑网络耗时,所以程序运行时间加上GC时间,不允许高于50ms;
- 满足各种定制化投放需求:支持广告主提出的各种定向支持,支持的定向条件越多,对检索速度和索引文件大小影响越式,设计时要考虑使用的算法同时兼顾需求和计算效率;
- 支持灵活的AB实验:为持续优化CTR值,必须支持小流量实验,所以在不能影响正常业务运行的同时,要求支持动态、插拔式的算法实验;
- 满足数据时效要求:数据时效考虑2点,1是指要实时响应广告主操作指令,比如暂停、调价、修改投放定向等;要实时呈现;2是投放效果报表实时呈现,满足广告主的投放效果实时反馈的需求。
- 7*24小时服务:稳定性保证,服务单元在设计时,要避免单点问题;要求有多维度的监控手段,除了常规负载监控,增加业务级别的异常和预警机制,及设计可用的容灾和自动降级策略;
- AdExchanges的应答率标准:应答率会影响流量市场的派量算法,过低会被下调广告容量;与AdExchanges之间的通迅协议压缩,长连接支持。
- 灾备和故障恢复:在线容灾,服务健康检查、自动功能降级、灰度发布、负载均衡;
- 多维监控方案:软硬件监控、业务异常报警、投放线索追踪;
DSP平台按功能可划分为四大服务单元:
1. Manager是广告管理平台,负责管理广告创意和投放设置、呈现投放效果报表,给广告主提供简单直观的操作界面。;
2. Adcenter投放中控机,负责创建索引,服务器心跳监测,同步投放数据和派帐、收帐等功能;
3. Adserver投放服务机,负责响应Ad Exchanges的广告请求和效果数据回收,对响应时间有严格要求,DMP为流量提供人群数据服务;
4. Algorithm算法服务集群,负责计算ctr和比价功能;Report负责提供实时和离线数据报表。
DSP投放引分层图
业务分割原则:
1. 在线计算与离线计算分离,使用cache隔离。根据业务特点,区分在线与离线计算拆分到不同的服务单元。比如流量相关特征(地域、渠道、所属人群等)是通过在线计算得到的;广告的投放要求是已知的,那么根据广告投放要求生成正排和倒排索引就可通过离线计算得到;离线计算完成后的结果数据推送到cache中提供给在线计算使用。这种设计方式的优点是在高并发且数据量大的场景中,两者不会互相干扰,离线计算与在线计算不会互相抢占资源,提高实时计算的吞吐量;
2. 内网访问与外网访问分离。DSP业务中有扣费功能,会实时扣减消费金额,所以数据的安全性非常重要。出于保护数据安全性的目的,如上区分了在线计算与离线计算后,离线计算就不需要暴露在外网中,扣费操作可以转成离线计算走内网结算;而在线计算时仅与cache交互,不会透传到数据库。
3. 灵活的plugin机制。流量切分配置化,使用配置文件调度流量,将切分小流量用于AB实验;基于接口编程动态装配具体实现
4. 使用缓存隔离计算,将数据与计算分离,提升效率的同时保护数据安全; 根据数据时效要求和重要程度分为3级缓存,Heap:用于存储广告数据和在线反作弊数据;Redis-MS:用于存储广告数据和消费数据;Redis-Clustor:支持高并发,存储频控和DMP数据。
5. 节点去中心化:网络层使用VIP+LVS实现负载均衡,保证各服务器节点无状态;服务器增加业务级别的心跳监控和预警;单点服务增加Slave运行时互备,运行时互备使用分布式的租约锁,比如利用Redis SET key value EX seconds NX 特性(即只有键key不存在的时候才会设置key的值);当其中一台服务器失去续约能力时,备机将在很短的时间内拿到锁,继续提供服务。
重点功能实现 广告投放:我们先来看一下广告主新建一支广告后,用户在终端如何见到这支广告。如下图所示,从右往左看,广告主在DSP平台上创建广告后,API将通过内网实时同步给引擎;引擎得到数据后钝化到本地数据库,接着开始创建索引,索引完成写入cache并通知adserver更新广告数据。Adserver收到通知后去cahce取数据回来更新本地数据。从左往右看,用户终端发起广告请求先到AdExchange,AdExchage将请求下发给DSP的adserver,adserver从本地数据中计算得到本次要投放的广告,返回到AdExchage中参与竞价,胜出方返回给用户终端。- 1. 根据其投放方式和出价设置最小投放余额;
- 2. 设置默认流控阈值;
- 3. 当有历史数据时,参考上1分钟消耗设置流控阈值。
- 1. 硬件监控:监控服务器cpu、内存使用率、连接数、网卡流量,服务器负载等。
- 2. 软件监控:监控qps 、rt、jvm、队列大小、线程等。
- 3. 业务异常预警、内存数据可视化。
- 4. 业务数据监控
- 5. 线上问题快速响应,跟踪每支广告的投放情况。
![640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1](https://i-blog.csdnimg.cn/blog_migrate/677bb57fe075e4604a730a54be4ca5cc.jpeg)
研发总结
来源:中生代技术