设为首页 | 加入收藏
197_45px;
资讯中心
企业理念
Corporate Philosophy
您当前所在位置:首页>新闻中心>通知公告
爱奇艺广告平台的架构设计与演进之路
来源(广告买卖网)  作者(广告买卖网)  阅读()   时间(2018-11-9 8:43:34)

针对上面的几个情况,我们的架构做了调整,如下图:

爱奇艺广告平台的架构设计与演进之路

对比上线伊始的架构,此阶段架构调整体现在以下几个方面:

投放服务性能优化 – 包括索引分片和增加粗排序模块,主要解决了上述流量增长、广告主数量订单增长等方面带来的性能问题

索引分片是把原来的一份索引拆分成多份,对应的一个请求会被拆分成多个子请求并行处理,这样每个请求的处理时间会减少,从而有效减少长尾请求数量。

粗排序:全量召回的好处是收益最大化,缺点是性能会随着订单量增加而线性下降;粗排序在召回阶段过滤掉没有竞争力的低价值的(ECPM 较低的)广告,低价值广告被投放的概率和产生转化的概率很低,因此粗排序的过滤对整体收入影响很小,同时能有效减少进入后续核心计算逻辑(包括精排序及其他的业务逻辑)的订单数量,使得服务压力不随订单量而线性增长。

计费服务架构优化 - 主要是提升系统的可扩展性和解决超投问题

可扩展性通过服务拆分来解决,把单一模块的计费服务拆分成三个模块,拆分之后日志收集模块对外提供服务,主要职责是接收日志请求并立即返回,保证极低的响应时间;然后对计费日志和非计费日志进行不同的处理;检测过滤模块主要职责是进行定向检查和异常日志识别。计费服务把有效计费数据更新到计费系统。拆分成三个模块之后,每个模块都很简单,符合微服务基本原则之一:单一职责。

关于超投, 先看第一个问题:超投不计费。

主要难点在于:

同一个广告的计费请求是并发的;

计费系统是分布式的,出于性能考虑,请求的处理流程需要是无锁的。

我们在计费系统中解决这个问题的思路如下:

首先,要严格准确地计费,就要对并行的请求进行串行处理,Redis 的单线程模型天然满足串行计费的需求,我们决定基于 Redis 来实现这个架构,把计费的逻辑以脚本的形式在 Redis 线程中执行,避免了先读后写的逻辑,这样两个根本原因都消除了。

接下来的任务就是设计一个基于 Redis 的高可用高性能的架构。我们考虑了两种可选方案。

方案 1:数据分片,架构中有多个主 Redis,每个主 Redis 存储一个分数分片,日志收集服务处理有效计费请求时要更新主 Redis;每个主 Redis 都有对应的只读从 Redis,投放服务根据分片算法到对应的从 Redis 上获取广告的实时消耗数据。

爱奇艺广告平台的架构设计与演进之路

该方案的优点是可扩展性强,可以通过扩容来解决性能问题;缺点是运维复杂,要满足高可用系统架构还要更复杂;

上篇:

下篇:

地址:兰州市城关区中山路一号佳润酒店20F      联系电话:0931-8831301
传真:0931-8831301      网址:www.huobanmedia.com
关注我们:
  • 100_100px;
  • 100_100px;
  • 100_100px;
Copyrights © 2018 版权所有 兰州伙伴广告传媒有限公司 陇ICP备09000722号 设计制作 宏点网络       甘公网安备 62010002000030号