回顾经典,Netflix的推荐系统架构

这里是「王喆的机器学习笔记」的第三十一篇文章。最近因为忙着书出版和DLP-KDD Workshop的事情,没太多时间更新专栏,等过了这段时间再跟大家多聊聊。

这篇文章我们回顾一篇经典博客,Netflix官方博客介绍的推荐系统架构,虽然文章发布已有六年, 但是现在回看起来我自己还是蛮惊讶的,因为Netflix的推荐系统架构居然到现在依然是主流。

当然,框架中的诸多技术在不断的迭代更新,因为近期与Netflix的很多同行有过交流,也可以更新一下框架中一些模块的最新进展。

Netflix推荐系统架构图

Netflix推荐系统架构图

Netflix的推荐系统从上至下依次分为离线(offline)、近线(nearline),在线(online)三部分。

离线(offline)

存储离线数据,利用大数据查询工具进行数据查询和处理,离线模型训练。离线部分对于数据数量和算法复杂度限制很少,以批量方式完成数据处理,但是数据处理的实时性非常差,无法做到数据和模型的即使更新。

可以看到当时还是hive,pig等工具的天下,现在spark 是主流,但也有越来越多的offline job被合并到near line之中,可以说当前的offline和nearline的界限日渐模糊了。

近线(near line)

基于数据消息队列,利用一些流计算平台进行数据的准实时处理。它居于离线和在线之间,既可以以分钟级别甚至秒级的延时来准实时地处理数据,也有一定的数据批量处理能力。

nearline可以说是近几年大数据架构发展的重中之重了。当时Netflix开发了自己的流处理框架Manhattan,但现在已经是Flink一统天下的时候,Netflix内部的Flink平台每天会运行上千个不同的流处理任务。涵盖了特征实时计算数据监控BI模型实时训练等等。越来越多的offline任务被替代,也许Kappa架构彻底替代Lambda架构的日子不太远了。

在线(online)

online部分的主要任务是进行用户请求的实时处理,模型的在线服务。在线部分需要更快地响应最近的事件和用户交互,因此对于延迟的要求比较苛刻,一般都要求在100ms以内完成所有处理,这会限制所用算法的复杂性和可处理的数据量。

正是online部分极高的响应延迟要求和相比离线、近线较弱的数据处理能力,要求online部分采用不同的高效的model serving方法去支持个性化推荐服务。这也是前段时间我们专栏花了几篇文章介绍model serving的原因。

从阿里的User Interest Center看模型线上实时serving方法

如何解决推荐系统工程难题——深度学习推荐模型线上serving?

AWS

大家要注意架构图右上角的AWS的标志,它意味着Netflix的所有服务器和大数据设施都是架构在amazon的云平台上的,而且一直沿用至今。作为AWS的第一大用户,Netflix服务的云化还是非常彻底的。

有的时候我也挺佩服美国这些互联网公司的选择,像Netflix、Pinterest这些公司,已经是不折不扣的互联网巨头,居然非常放心的使用AWS,AWS确实能够提供非常专业安全的云服务。这样开放的精神还是让我挺感慨的。国内的阿里云发展当然也非常好,但是巨头级别的公司完全依赖阿里云的案例还是不多,从这一点上,国内和国外整个互联网的氛围还是有一些微妙的区别。

不同层之间的配合与系统的整体性

可以看到,从离线到在线,数据的实时性从上到下依次增强,而数据规模和处理能力从上到下依次减弱

但作为同一个系统之中的不同功能层,只有整合发挥不同层的优势,才能够让系统整体发挥出最大的作用。所以我们可以在架构图中看到很多跃层的调用。

比如从online 到nearline和offline通过用户消息队列(User Event Queue,现在基本都使用Kafka)来缓存数据流,这是连接online和其他层的接口。

而从nearline和offline中连接online的接口则是algorithm service,online data service,以及model到online层的接口。他们分别存储了算法结果,数据特征和模型文件。

在架构图正中央的存储部分,也有不同的数据库作为数据中心作为不同模块的数据交换接口。比如cassandra更适宜存储大数据量的nosql数据,mysql当然是适合结构化的小数据量数据,而EVcache则作为内存数据库当作数据缓存使用。当然,技术的发展使得现在已经有更合适的技术选型,AWS的dynamoDB,以及redis都可以作为更好的替代方案。

总结

最后的总结就直接用netflix官方博客的总结吧。

We want the ability to use sophisticated machine learning algorithms that can grow to arbitrary complexity and can deal with huge amounts of data. We also want an architecture that allows for flexible and agile innovation where new approaches can be developed and plugged-in easily. Plus, we want our recommendation results to be fresh and respond quickly to new data and user actions. Finding the sweet spot between these desires is not trivial: it requires a thoughtful analysis of requirements, careful selection of technologies, and a strategic decomposition of recommendation algorithms to achieve the best outcomes for our members.

我们需要具备使用复杂机器学习算法的能力,这些算法要可以适应高度复杂性,可以处理大量数据。我们还要能够提供灵活、敏捷创新的架构,新的方法可以很容易在其基础上开发和插入。而且,我们需要我们的推荐结果足够新,能快速响应新的数据和用户行为。找到这些要求之间恰当的平衡并不容易,需要深思熟虑的需求分析,细心的技术选择,战略性的推荐算法分解,最终才能为客户达成最佳的结果。

能让我拍案叫绝的技术经验不多,上面的标黑部分算是一句,写的多好,我几乎可以认为这是一个工程师乃至架构师的最高境界,与大家共勉。

照例跟大家讨论一个问题:

Netflix的架构从大框架上看过时了吗?业界还有其他的推荐系统工程架构方案吗?

参考资料:

https://netflixtechblog.com/system-architectures-for-personalization-and-recommendation-e081aa94b5d8

https://www.infoq.cn/article/2013%2F04%2Fnetflix-ml-architecture

最后欢迎大家关注我的微信公众号:王喆的机器学习笔记wangzhenotes),跟踪计算广告、推荐系统等机器学习领域前沿。

也欢迎大家购买我的新书《深度学习推荐系统》,下面的链接应该还是满100减50,期待与大家交流,也欢迎大家的批评指正。

《深度学习推荐系统(全彩)》(王喆)【摘要 书评 试读】- 京东图书

—END—

每周关注计算广告、推荐系统和其他机器学习前沿文章,欢迎关注王喆的机器学习笔记

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342