前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Netflix数据管道的变化历程

Netflix数据管道的变化历程

作者头像
大数据文摘
发布于 2018-05-24 02:24:07
发布于 2018-05-24 02:24:07
5920
举报
文章被收录于专栏:大数据文摘大数据文摘

CSDN授权转载 作者:Real-Time Data Infrastructure Team 译者:刘旭坤

去年12月我们的Keystone数据管道正式投入使用,本文我们就来讲讲这些年Netflix数据管道的变化历程。

数据是Netflix的中心,很多的商业决策和产品设计都是依据数据分析而做出的决定。在Netflix,数据管道的目的是对数据进行收集归纳和处理,几乎我们所有的应用都会用到数据管道。下面我们先来看看有关Netflix数据管道的一些统计数据:

  • 每天约5000亿个事件,1.3PB的数据
  • 高峰时段约每秒800万个事件,24GB数据

我们用另外的Atlas系统来管理运营相关的数据所以它并没有出现在上面的列表中。

由于需求的变化和技术的进步,过去几年我们的数据管道发生了很大的改变。下面我们就来介绍一下。

V1.0 Chukwa数据管道

最初数据管道唯一的目的就是把事件信息上传到Hadoop/Hive。如下图中所示,整个架构是比较简单的。Chukwa收集事件信息并将sequencefile写入亚马逊S3,之后大数据平台部门会进一步处理并写入Hive。从事件发生到以Parquet格式写入Hive整个过程不超过十分钟,对于每小时甚至每天才运行一次的batch job来说已经足够了。

V1.5 能够进行实时处理的Chukwa数据管道

随着Kafka和Elasticsearch等技术的发展,公司内部对于实时分析的需求愈加强烈,我们必须保证处理所需时间在一分钟之内。

除了将数据写入S3,Chukwa还可以将数据发送到Kafka,新的实时分支(虚线框住的部分)处理的事件大约占到总事件的30%。处于实时处理分支中心位置的是事件路由模块,它负责将数据从Kafka传递到Elasticsearch和下一级Kafka(进行数据的筛选)。终端用户可以自由选择趁手的工具进行分析,比如Mantis、Spark或其他定制工具。

Elasticsearch在Netflix的应用过去两年经历了爆炸式的发展,现在共有约150个集群和约3500个节点,总数据量约1.3PB,而这其中大部分数据都是通过我们的数据管道采集处理的。

数据路由的部分是由我所在的小组管理的,下面是一些我们碰到过的问题:

  • Kafka high level consumer会丧失消息分区的所有权并停止读取一些分区,唯一的解决办法是重启。
  • 有时部署代码之后high level consumer在rebalance时会出错。
  • 我们有几十个集群用于事件路由,运营上的开销正持续增长,所以对于路由job的管理还要想个更好的办法。

V2.0 Keystone数据管道

我们决心对V1.5的数据管道进行调整是基于下面三个方面的考量。

  • 简化架构。
  • 提升系统可靠性(Chukwa不支持冗余)。
  • Kafka社区较活跃后劲足。

架构中一共有三部分主要的模块:

  • 数据收集-有两种方式。
    1. 直接写入Kafka。
    2. 通过HTTP代理写入Kafka。
  • 数据缓存-使用Kafka来实现持久化消息队列
  • 数据路由-与V1.5中作用相同。

Keystone数据管道已经在生产环境中平稳运行了几个月,不过我们还在进行质量、扩展性、可用性和自动化方面的提升。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
逻辑运算和字符串索引
单词and是“并且”的意思。 需要同时满足多个条件时,可以使用逻辑运算符and连接。
楚客追梦
2022/11/11
1.1K0
逻辑运算和字符串索引
Java 基础教学:流程控制-选择结构
Java中的选择结构允许程序根据条件的不同选择执行不同的代码路径。这些结构是编程中实现决策逻辑的基础。下面是Java中两种主要选择结构的详细描述和使用示例:if语句和switch语句。
世间万物皆对象
2024/10/27
1850
Go——基础(1)
最近因为又报了那边的青训,后端方向的,应该是全程使用Go语言的,所以把暑假整理的笔记拿来复习一下。然后这次应该不会全程参与,主要是探索一下自己适不适合后端的工作,就先这样吧,然后下面是笔记。
mumumu
2023/01/11
4520
Go 语言中的条件判断和for 循环
这篇文章已经放到腾讯智能工作台的知识库啦,链接在这里:ima.copilot-Go 入门到入土。要是你有啥不懂的地方,就去知识库找 AI 聊一聊吧。
叫我阿杰好了
2025/06/16
1330
Go 语言中的条件判断和for 循环
Go语言中的控制结构:条件语句和循环
在编程中,控制结构是指引导程序如何执行的一系列指令。Go语言提供了多种控制结构来处理条件判断和循环操作。本文将详细介绍Go语言中的条件语句和循环结构,通过实例和代码解释,帮助读者全面理解和应用这些基本构造。
数字扫地僧
2024/06/12
1870
C语言新手小白详细教程(3)选择语句
从这三张图我们可以清晰看出,在C语言中,程序的执行结构主要分为三种:顺序结构、分支结构和循环结构。这三种结构是编程语言设计的基础,它们共同构成了程序的基本执行流程。
意疏
2024/11/25
1490
C语言新手小白详细教程(3)选择语句
前端day09-JS学习笔记
.注意点 : if-else if -else结构中必须以if开头,中间的else if可以是多个,末尾的esle可以省略(一般都不会省略)
帅的一麻皮
2020/04/06
9300
前端day09-JS学习笔记
TypeScript 中常用的条件语句:`if`语句、`if-else`语句、`switch`语句和`三元运算符`
在编程中,条件语句是一种基本的控制结构,用于根据特定的条件执行不同的代码分支。条件语句允许我们根据条件的真假决定程序的执行路径,从而实现根据不同情况做出不同的响应。TypeScript 是一种静态类型的编程语言,它提供了多种条件语句来帮助我们处理复杂的程序逻辑。本文将详细介绍 TypeScript 中常用的条件语句,包括if语句、if-else语句、switch语句和三元运算符等。
网络技术联盟站
2023/07/06
8280
Python入门教程笔记(二)控制语句
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断,通过条件判断,选择做什么样的逻辑(当然,逻辑是需要我们提前写好的),我们称之为条件分支判断。
Lemon黄
2020/10/10
4580
Java 程序控制结构(1)
        当条件表达式为 true 时,就会执行{ }中的代码块。如果为 false ,就不执行代码块。
周小末天天开心
2022/10/26
3180
从软件测试看芯片验证-白盒测试
白盒测试是关注测试用例覆盖程序逻辑(源代码)的程度。最终的白盒测试是执行程序中的每个路径。但对于大多数的程序(例如带有循环的程序),完全意义上的全路径覆盖是不现实的。
AsicWonder
2023/09/01
3170
从软件测试看芯片验证-白盒测试
带你走进从零认识JavaScript到精髓(五)JavaScript 分支语句
表达式在javascript中是短语,换行的短语或分号结束的短语就是一行语句。JavaScript 语句向浏览器发出的命令。语句的作用是告诉浏览器该做什么。语句通常使用一个或者多个关键字来完成指定的任务,浏览器会按照编写顺序来执行每条语句。语句大小写敏感。
玖柒的小窝
2021/11/06
4870
6-条件,循环语句
​ is运算符是用于判断同一性而不是相等性, x,y因为指向同一个列表所以结果为True, 但是变量z指向的是另一个 列表,即使列表中的值相等,确不是同一个对象,所以结果为False.
用户3106371
2018/09/12
1.3K0
6-条件,循环语句
Go 系列教程——8.if-else 语句
这是我们 Golang 系列教程的第 8 篇。 if 是条件语句。if 语句的语法是 如果 为真,则执行 和 之间的代码。 不同于其他语言,例如 C 语言,Go 语言里的 是必要的,即使在 之间只有一条语句。 if 语句还有可选的 和 部分。 if-else 语句之间可以有任意数量的 。条件判断顺序是从上到下。如果 或 条件判断的结果为真,则执行相应的代码块。 如果没有条件为真,则 代码块被执行。 让我们编写一个简单的程序来检测一个数字是奇数还是偶数。 在线运行程序 语句检测 num
企鹅号小编
2018/02/08
7780
Go 系列教程——8.if-else 语句
第三章 流程控制语句
​说明:​ 一旦条件表达式为 true,则进入执行相应的语句块。执行完对应的语句块之后,就跳出当前结构。
捞月亮的小北
2023/12/01
2290
第三章 流程控制语句
JavaScript 控制流语句详解
这些控制流语句提供了灵活的方式来控制程序的执行流程。根据不同的需求,您可以选择合适的语句来实现逻辑判断和循环操作。每种语句都有其特定的使用场景,掌握它们可以大大提高编写高效、清晰代码的能力。在实际开发中,合理使用这些语句可以优化代码结构,提高代码的可读性和可维护性。
jack.yang
2025/04/05
560
前端性能优化之 JavaScript
本文为 《JavaScript》 读书笔记,是利用中午休息时间、下班时间以及周末整理出来的,此书虽有点老旧,但谈论的性能优化话题是每位同学必须理解和掌握的,业务响应速度直接影响用户体验。
Jack Chen
2019/06/18
1.9K0
React 条件渲染最佳实践(7 种方法)
在 React 中,条件渲染可以通过多种方式,不同的使用方式场景取决于不同的上下文。在本文中,我们将讨论所有可用于为 React 中的条件渲染编写更好的代码的方法。
秋风的笔记
2020/10/27
6.1K0
【JavaSE专栏10】Java的顺序结构、选择结构和循环结构
编程语言中最基本的结构就是顺序结构,除非程序使用了指定关键字,否则就是按照从上到下的规则,逐句执行代码。
Designer 小郑
2023/08/01
2260
Excel VBA编程教程(基础一)
说简单点,VBA 是运行在 Microsoft Office 软件之上,可以用来编写非软件自带的功能的编程语言。Office 软件提供丰富的功能接口,VBA 可以调用它们,实现自定义的需求。基本上,能用鼠标和键盘能做的事情,VBA 也能做。
全栈程序员站长
2022/08/11
17.1K0
Excel VBA编程教程(基础一)
推荐阅读
相关推荐
逻辑运算和字符串索引
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档