索引页页头图

新闻中心

您当前的位置:首页 > 新闻中心 > 行业资讯

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

来源:广告买卖网 作者:广告买卖网 时间:2018-11-5 阅读:

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

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

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

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

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

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

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

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

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

主要难点在于:

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

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

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

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

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

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

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

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

上篇:

下篇:

: 0931-610 2222 0931-611 2222

新聚焦 新闻中心 新聚焦团队 业务领域 优质客户 人力资源 联系我们

  • 微信
  • QQ
  • 微博

Copyrights©2017-2024 新聚焦传媒 All Rights Reserved 版权所有 陇ICP备15003109号 设计制作 宏点网络 甘公网安备 62010202003518号 甘公网安备 62010202003518号

温馨提醒
尊敬的用户,为了获得更好的用户体验,建议您使用高版本浏览器来对网站进行查看。
一键下载放心安装
×