我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何理解Netflix的信息处理架构

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何理解Netflix的信息处理架构

本篇内容介绍了“如何理解Netflix的信息处理架构”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Netflix是一家在线影片租赁提供商,该公司连续五次被评为顾客最满意的网站,在过去的7年中,Netflix流媒体服务从偶尔有数千用户在线观看发展到了数百万用户平均每月观看超过20亿个小时的规模。Netflix之所以能够如此成功,离不开对用户行为数据的收集与分析,那么Netflix会收集哪些数据,这些数据会用来做什么,其处理架构又是什么呢?

事实上,当用户开始在Netflix的网站上观看电影或者电视节目的时候,Netflix的数据系统会创建一个“观看会话(view)”,描述该会话的所有事件信息都会被收集起来。该观看会话数据架构能够应对从用户体验到数据分析的诸多场景,其中最主要的场景有三个:

用户看了哪些视频?系统需要知道每一个用户的所有观看历史,以便于为用户推荐相关的视频内容,同时在页面上的“最近观看”一栏中显示观看历史。用户所看的内容对于用户兴趣的衡量,产品和内容的决定非常重要。
用户从哪里离开了视频?对于每一个电影或者电视节目,Netflix会记录每一个用户都看到了哪里,从哪个时间点离开的。这使得Netflix的用户能够在同一个或者另一个设备上继续观看视频。
当前帐户现在还在观看哪些视频?家庭成员间的帐户共享使得任何人可以在任何时候观看自己喜欢的视频,但是这也意味着当帐户同时在线数超限的时候,必须要有人放弃观看。针对这种场景,Netflix的观看会话数据系统会收集每一个会话的周期性信号以便于决定某个成员是否还在观看相关视频。
这些场景的实现离不开强大而稳定的数据处理系统,Netflix目前的系统架构由早期的单数据库应用程序演变而来,当时的主要需求是能够低延迟地为用户提供视频服务,同时还能够处理来自于数百万Netflix流设备的快速增长的数据集。在过去3年多的时间里,Netflix一直在不断地改进该架构,现在这套系统每天能够处理千亿左右的事件。

当前的架构图如下:
如何理解Netflix的信息处理架构

整个架构最主要的接口是观看会话服务,它分为有状态层和无状态层两部分。有状态层在内存中存有所有活动视图的最新数据。通过对用户帐户ID进行mod N的模运算,数据被简单地划分为N个有状态的节点。当有状态的节点上线的时候,系统会通过一个位置选择流程决定哪部分数据属于它们。所有的持久化数据都存储在Cassandra中,在Cassandra之上有一个Memcached用来保证低延迟的读取路径,但是采用这种方式会话数据有可能会过时,同时如果一个有状态的节点出现了错误,那么1/n的浏览数据将不能读写。无状态层的引入正是为了解决这一问题,它提升了系统的可用性,当有状态的节点无法访问的时候,该层会将过时的数据反馈给用户。

但是即使是做了诸多改进,以上架构依然存在一些缺陷:

虽然有状态层使用一个简单的、服从热点分布的分片技术,但是Cassandra层并不服从这些热点;同时,如果将其从一个AWS Region移动到多个AWS Region上运行,那么必须定制一种机制来实现分布在不同Region上的状态层之间的状态通信,极大地增加了系统的复杂性。
对于观看会话服务,它封装了会话数据的收集、处理和提供功能,随着系统的演变,功能的增多,该服务的责任也越来越多,增加了运维的难度。
虽然Memcached提供了非常好的吞吐量和延迟特性,但是使用一种能够为一等数据类型和操作(例如append)提供原生支持的技术能够更好地满足相关需求。
为了扩展系统满足下一个数量级的需要,Netflix正在重新思考自己的基础架构,新系统在设计时考虑的主要设计原则包括:

可用性比一致性更重要。
微服务。对于有状态架构中柔和在一起的组件,根据它们的主要目的分离成单独的服务——或收集、处理或提供数据。将状态管理功能托管到持久化层,让应用程序层无状态,同时组件之间通过事件队列解耦。
混合持久化。使用多种持久化技术,利用每一种方案的优势。使用Cassandra实现高容量、低延迟的写。使用Redis实现高容量、低延迟的读。
遵循以上原则的新架构实现如下:
如何理解Netflix的信息处理架构

当然,这个架构图也仅仅是Netflix目前的设计图,至于实现到何种程度了,我们还未可知。Netflix表示对关键系统进行重新架构以使其能够扩展到下一个数量级是一项非常困难的工作,需要长时间的开发、测试和验证,同时迁移也不是那么容易。但是以这些架构原则为指导,Netflix相信他们正在构建的下一代系统能够满足自己大规模、快速增长的需要。

“如何理解Netflix的信息处理架构”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何理解Netflix的信息处理架构

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何理解Netflix的信息处理架构

本篇内容介绍了“如何理解Netflix的信息处理架构”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Netflix是一家在线影片租赁提供商,该
2023-06-10

如何理解计算机信息处理

这篇文章主要介绍“如何理解计算机信息处理”,在日常操作中,相信很多人在如何理解计算机信息处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解计算机信息处理”的疑惑有所帮助!接下来,请跟着小编一起来学习吧
2023-06-09

Kafka是如何处理Netflix每天2万亿条消息的

Kafka是如何处理Netflix每天2万亿条消息的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。从产生伊始,各类微服务就需要以不同的方式进行彼此通信。有些人喜欢使用 HTTP
2023-06-02

如何理解java架构

首先说一下java开发架构的形式: 一般我们在学习或者实际开发中,所了解的开发架构都是基于两种形式:C/S架构(客户端/服务器)和B/S架构(浏览器/服务器)。而在JavaEE的开发中,几乎全部都是基于B/S架构开发的。而在B/S架构中,系统和标准的三层架构包
如何理解java架构
2014-05-30

如何理解SAP Kyma的架构

如何理解SAP Kyma的架构,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。SAP kyma主要分三大块组成:(1) 应用程序连接器简化并安全地将外部系统连接到
2023-06-04

如何理解FACEBOOK的系统架构

本篇文章为大家展示了FACEBOOK 的系统架构,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Web 前端是由 PHP 写的。Facebook 的 HipHop 会把PHP转成 C++ 并用 g++
2023-06-05

如何理解微服务架构

因为Martin Fowler和Chris Richardson两位大神的布道,及NetFlix和Amazon公司的实践,国内对于微服务的一些基础问题理解基本一致,但受限于自身单体应用的限制,过度到微服务架构,又要各想办法,具体问题具体看了
2023-06-05

如何理解Serverless架构模式

这篇文章将为大家详细讲解有关如何理解Serverless架构模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是 Serverless 架构?按照 CNCF 对 Serverless 计
2023-06-04

网站的信息架构怎样设计更合理

一个合理的网站信息架构应该基于用户的需求和行为习惯,遵循简洁、清晰、易用的原则。以下是一些设计更合理的网站信息架构的建议:确定网站的核心目标和主题:在设计信息架构之前,首先要明确网站的核心目标是什么,以便为用户提供最相关和有用的信息。采用扁
网站的信息架构怎样设计更合理
2024-04-17

如何实现facebook的信息架构评析

这期内容当中小编将会给大家带来有关如何实现facebook的信息架构评析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。facebook的信息架构设计,是目前为止互联网上我见过的最合理的信息架构。每次培训,
2023-06-08

如何利用 Java SaaS 高效处理多租户架构?(Java SaaS如何处理多租户架构)

在当今的软件开发领域,多租户架构已成为一种常见且重要的设计模式,尤其在JavaSaaS(软件即服务)应用中。多租户架构允许单个实例的软件服务为多个租户(客户)提供服务,每个租户都有自己独立的数据集和配置,但共享底层的基础设施和代码。本文将详细介绍JavaSaaS如何处理多租户架构,帮
如何利用 Java SaaS 高效处理多租户架构?(Java SaaS如何处理多租户架构)
Java2024-12-14

信息处理技术员如何报名?信息处理技术员报名方法

  可能有些考生还不清楚信息处理技术员如何报名?今天编程学习网小编来为大家解答软考初级信息处理技术员的报名方法。  软考初级信息处理技术员通常每年安排两次考试,上半年和下半年报名时间也有所不同。  根据往年各地软考报名时间来看,2020上半年信息处理技术员报名一般在3月份开始,下半年报名一般在7月底开始。具体请考生关注20
信息处理技术员如何报名?信息处理技术员报名方法
2024-04-18

如何理解HTTP头部信息

本篇内容介绍了“如何理解HTTP头部信息”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!HTTP 头部解释 1. Accept:告诉WEB服务
2023-06-08

Python如何处理中国地区信息

本篇文章为大家展示了Python如何处理中国地区信息,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1数据的爬取代码:import pandas as pddata=pd.read_csv("ex
2023-06-22

linux如何显示机器的处理器架构

本指南详细介绍了如何获取Linux机器处理器的架构,以及该信息的用途。使用uname-a命令可轻松查看架构(例如x86_64),这对于选择兼容软件、优化应用程序、诊断问题和确定升级需求至关重要。文章还提供了其他获取架构的方法,包括/proc/cpuinfo文件、sysctl命令和dmidecode命令。最后强调了处理器架构随时间变化,并在虚拟化环境中的相关性。
linux如何显示机器的处理器架构
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录