原文: https://medium.com/netflix-techblog/re-architecting-the-video-gatekeeper-f7b0ac2f6b00

想法

我们决定部署一个全高密度近场缓存(Hollow)来解决我们的IO瓶颈。对于我们的每个上游系统,我们要建一个能让Gatekeeper执行这次评估的包括所有数据的Hollow数据集。每个上游系统现在都需要保证它的缓存保持最新。

使用这个模型,活跃性评估将数据从上游系统中隔离出来了。相对于对事件进行响应,Gatekeeper会以一个重复的周期从遍布全世界的视频数据中持续的处理活跃性数据。迭代周期从Netflix的每个视频上线开始,计算它们的活跃性信息。在每个周期的结束,它产出一个经过计算的表示全世界所有视频的活跃性明细信息的输出(包括Hollow数据集)。

我们希望这个持续处理模型是可行的,这样我们可以彻底移除我们IO上的瓶颈,可以保证操作顺序更有效。我们也期望通过迁移到这个模型,我们可以对业务产生更正面的影响。

  • 作为对Gatekeeper对上游系统产生的过大的负载的最终解决方案
  • 彻底消除活跃性处理的延迟和错过上线日期的问题。
  • 缓解内容配置工程团队在性能相关问题的时间消耗。
  • 改进活跃性处理的可调试性和可见性

问题

Hollow可以被想象为一个时间机器。作为一个数据一直在变化的数据集,通过将变更分成一系列的时间线的数据状态并将变更发送给消费方。每份数据状态都表示为整个数据集在当时时刻的一份快照。

通常,Hollow数据集的消费者将加载的最新的数据状态并将产生的新状态保存到他们的混存中。当然,它们可能会将状态替换到之前的样子 - 导致将整个数据集指向之前的一个状态。

传统产生数据状态的方式是维护一个运行重复周期的生产者。在一个周期中,生产者从元数据中迭代所有记录。在迭代中,它对Hollow库中增加每条数据。Hollow则在之后计算数据的变化并在最后的周期将数据填加上去,将数据状态发布到一个已知地址的消费者。

这个基于真实数据源的迭代模型的问题是它可能会需要很长时间。在这个场景中一些我们的上游系统,这需要几小时。数据传播延迟是不可接受的 - 我们不能为活跃性处理等待几个小时,比如,标题运营给电影增加了一个评级并需要立即发布上线。

改进

我们需要一个更快的时间机器 - 它可以更频繁的产出状态,让消费方可以更快的识别到变化。

为了达到这个目标,我们建立了一套很强的Hollow基础设施,平衡了之前Hollow library做的工作,与流处理团队在Target生产环境做的先锋性工作(现在是公开的非beta的API)

使用这套基础设施,每次变更都可以在源应用中呗检测到,更新过的记录会被编码并发送给Kafka topic。一个不属于源应用的新组件,Hollow增量生产服务,以一个预定义的节奏执行一个重复周期。 在每个周期,它读取自从上个周期所有增加到topic的消息,并让Hollow状态引擎反映出更新过的记录的最新状态。

如果一个Kafka topic中的消息包含了已经在Hollow数据集中已经反映出来的相同数据,不会有任何变动。

为了缓解丢失事件产生的影响,我们实现了一套周期性从整个数据集清扫的机制。当它执行时,它将每条记录的内容发送给Kafka topic。通过这种方式,任何可能丢失的更新都会反映到Hollow数据集上。并且,这不是更新传播到Hollow数据集上的主要方式,它不需要像传统Hollow使用方式那样很快很频繁的在源上迭代运行。

Hollow增量生产者有从Kafka topic中读取大量消息并快速转变成Hollow状态的能力 - 所以我们可以将这个周期配置的非常短(我们目前的缺省配置是30秒)。

这就是我们如何构建一个更快时间机器的方式。现在,如果标题运营给电影增加了一条评级,在30秒内,数据就可以在Hollow数据集上可用。

本文来自微信公众号「麦芽面包,id「darkjune_think」
转载请注明。微信扫一扫关注公众号。
交流Email: zhukunrong@yeah.net

Re-Architecting the Video Gatekeeper(二)的更多相关文章

  1. Re-Architecting the Video Gatekeeper(一)

    原文 https://medium.com/netflix-techblog/re-architecting-the-video-gatekeeper-f7b0ac2f6b00 本文介绍了了内容配置工 ...

  2. video.js 视频自动全屏播放

    1.头部引用脚本 <link href="css/video-js.min.css" rel="stylesheet"> <link href ...

  3. video视频标签自定义显示隐藏播放控件&Shadow DOM

    方法一:controlslist属性 controlslist="nodownload nofullscreen noremoteplayback" controlslist仅三种 ...

  4. html5应用程序标签

    一.html5应用程序标签 (1)datalist需要数据载体 input list属性指向数据源 <input type="text" list="input_l ...

  5. HTML5对音视频的处理

      前  言 现在网上有许多的框架和插件,能够满足程序猿的各种需求,慢慢的,就有些忽视最基础的东西. 比如,大多数视频是通过插件(比如 Flash)来显示的.然而,并非所有浏览器都拥有同样的插件. H ...

  6. HTML5-2

    1 html5新增表单元素 <form> <!-- 数字 还有箭头,可以加减数字 并且可以设置最大最小值 --> <input type="number&quo ...

  7. HTML语言和CSS开发

    第一张 HTML基础1.HTML:超文本标记语言(它除了文字,还能写图片.视频.音频.交互),他不是编程语言,它是标记语言2. <!DOCTYPE html> HTML5版本申明 < ...

  8. [Laravel] 06 - Project: from Usercase to View

    故事背景 一.项目预览 From: https://www.imooc.com/video/12518 二.知识点 通过项目复习之前的重难点,在此列出并解决. /* implement */ 项目开始 ...

  9. [Laravel] 11 - WEB API : cache & timer

    前言 一.资源 Ref: https://www.imooc.com/video/2870 二.缓存 缓存:静态缓存.Memcache.redis缓存 Ref: [Laravel] 09 - Func ...

随机推荐

  1. Mac上Ultra Edit的激活

    2016-11-20 增加16.10.0.22破解 去官网下载原载,先运行一次,再在终端里执行下面代码就可以破解完成!printf '\x31\xC0\xFF\xC0\xC3\x90' | dd se ...

  2. 个人永久性免费-Excel催化剂功能第102波-批量上传本地图片至网络图床(外网可访问)

    自我突破,在100+功能后,再做有质量的功能,非常不易,相对录制视频这些轻松活,还是按捺不住去写代码,此功能虽小,但功课也做了不少,希望对真正有需要的群体带来一些惊喜. 背景介绍 图床的使用,一般是写 ...

  3. Excel催化剂开源第25波-Excel调用百度AI,返回AI结果

    现成的这些轮子,无需调用网页,直接本地离线即可生成). 当然在AI时代,少不了各种AI接口的使用场景,普通开发者只需聚焦在自己的业务场景上,这些AI底层技术,只需类似水煤电一般去BAT这些大厂那里去消 ...

  4. phpStudy集成环境apche+openssl配置本地https

    OpenSSl windows环境搭建 网上各种文章都说需要下载多个工具,实际上只要一个程序就好,下载地址http://slproweb.com/products/Win32OpenSSL.html ...

  5. nodejs 获取客户端 ip 地址

    应用场景: php:我们需要拿到用户客户端的ip信息,以识别用户位置,但现在我们拿到的地址永远是杭州 前端:我查一下,稍等 .... 明白了,我们加了一层 node 服务器,服务器在杭州,你们拿到的是 ...

  6. windos10专业版激活(可用)

    电脑提示Windows许可证即将到期,于是自己就在网上找了一些教程,但是并没有激活成功,反而由即将到期变为了通知状态,尝试了各种密钥都不行,也下载了激活工具如暴风激活工具,KMS都不管用,尝试了好多方 ...

  7. AbstractList

    概述 此类提供 List 接口的骨干实现,以最大限度地减少实现“随机访问”数据存储(如数组)支持的该接口所需的工作.对于连续的访问数据(如链表),应优先使用 AbstractSequentialLis ...

  8. 19个心得,明明白白说Linux下的负载均衡

    一.目前网站架构一般分成负载均衡层.web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为现在随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefs.DRDB+Heart ...

  9. spring @Required注解

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/annotation-based-configuration/spring-required-ann ...

  10. 【NOI 2015】程序自动分析 并查集与离散化处理

    题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,-代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量 ...