写点什么

从 Chukwa 到 Keystone :Netflix 的数据流水线演进

  • 2016-02-18
  • 本文字数:1504 字

    阅读完需:约 5 分钟

2015 年 12 月,Netflix 新的数据流水线 Keystone 上线。本文将介绍近年来 Netflix 数据流水线的演进。这是介绍新的 Keystone 数据流水线系列文章的第一篇。

Netflix 是一家数据驱动的公司,很多业务和产品决策均基于数据分析作出。数据流水线的作用是在云上收集、聚合、处理和移动数据。Netflix 的几乎每一款应用都会用到该数据流水线。

先来看 Netflix 数据流水线的一些数据:

  • 每天 5000 亿事件, 1.3PB 数据
  • 峰值时间每秒处理 800 万事件,24GB 数据

有数百种事件会通过该流水线,如:

  • 视频观看活动
  • UI 活动
  • 错误日志
  • 性能事件
  • 问题定位和诊断事件

这里需要注意的是,运维相关指标不通过该流水线处理,而是有一个独立的系统—— Atlas ,和 Netflix 的其他很多技术一样,该系统也开源了。

在过去这些年,因为需求的变化和技术的发展,Netflix 的数据流水线有几次大的变化。

V1.0 Chukwa 流水线

原始的数据流水线,唯一目的就是聚合事件,并将其上传到 Hadoop/Hive 进行批处理。从下图中也可以看出,架构相当简单。 Chukwa 收集数据,并以 Hadoop 顺序文件格式将它们写入到 S3 中。大数据平台团队进一步处理 S3 文件,然后以 Parquet 格式写入到 Hive 中。从一端到另一端的延迟高达 10 分钟。不过对于通常以天或小时的频率扫描数据的批处理作业而言,也足够了。

V1.5 带有实时分支的 Chukwa 流水线

随着 Kafka Elasticsearch 的出现,Netflix 对实时分析的需求也不断增长。这里的“实时”指的是延迟小于 1 分钟。

除了将事件上传到 S3/EMR,Chukwa 还能将流量发到 Kafka(实时分支的前端)。在 V1.5 中,大约有 30% 的事件会进入实时流水线。实时分支的核心是 Router。它负责将数据从 Kafka 路由到不同的地方,如 Elasticsearch 或次级 Kafka。

过去两年,Elasticsearch 在 Netflix 的应用增长迅速。现在有 150 个集群,总计 3500 个实例,上面有 1.3PB 数据。绝大部分数据都是通过该数据流水线进来的。

在 Chukwa 将流量发到 Kafka 时,既可以是完整的流,也可以是过滤之后的。有时还需要进一步过滤从 Chukwa 写到 Kafka 的流,这就是引入 Router 的目的所在——可以消耗一个 Kafka 主题,并生成一个不同的 Kafka 主题。

在数据到了 Kafka 之后,用户可以使用 Mantis Spark 或定制的应用来做实时的流处理。“自由与责任”(Freedom and Responsibility)是 Netflix 文化的基因。用户自己选择合适的工具来处理手头的任务。

因为研发团队擅长处理数据的大规模迁移,所以将 Router 设计成了一个托管服务。在运维路由服务的过程中,他们也得到几点教训:

  • Kafka 高层消费者可能会丢失分区(partition)所有权,在稳定运行一段时间后,不再处理某些分区。需要重启消费者进程才能恢复。
  • 当推出新代码时,有时高层的消费者会在重新平衡过程中陷入错误状态。
  • 将路由作业分组,放到一系列集群上,不过管理这些作业和集群的成本持续增长。所以需要更好的平台来管理路由作业。

V2.0 Keystone 流水线 (Kafka fronted)

除了上面提到的与路由相关的问题,还有其他几点考虑促使我们重新架构我们的数据流水线:

  • 简化架构
  • Kafka 实现复制,可以提高系统的可靠性,而 Chukwa 不支持复制。
  • Kafka 有一个非常活跃、生机勃勃的社区。

有 3 个主要组件:

  • 数据获取——有两种方式:使用 Java 库,直接写入 Kafka;或者
    发送给 HTTP 代理,然后由代理写入 Kafka。
  • 数据缓冲——Kafka 作为复制的持久消息队列。
  • 数据路由——路由服务负责将数据从前端的 Kafka 移到 S3 、 Elasticsearch 和次级 Kafka。

过去几个月,Keystone 已经应用于生产中。目前开发团队仍然在改进 Keystone,着重于 QoS、伸缩性、可用性、可运维性和自服务等方面。

查看英文原文: Evolution of the Netflix Data Pipeline

2016-02-18 18:002733
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 151.0 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

图文教程 | 阿里云市场 Serverless GreptimeDB 购买和使用指南

Greptime 格睿科技

数据库 阿里云 使用指南

【JIT/极态云】技术文档--日期字段任务

武汉万云网络科技有限公司

【JIT/极态云】技术文档--Excel模板

武汉万云网络科技有限公司

深入Linux性能与统计命令:优化、监控与管理的首选工具

测试人

软件测试

基于 TiDB Vector 开发的 TiDB AI 小助手上线啦!招募 200 名试用体验官,开启高效问题解决之旅

TiDB 社区干货传送门

百度多模态大模型内容安全解决方案获WitAwards 2024年度大奖

百度安全

SaaS,PaaS,IaaS是什么意思?一文教你弄懂!

积木链小链

IaaS PaaS SaaS 平台

星辰资讯 | TiDB v7.5.4 & v8.4.0 发版

TiDB 社区干货传送门

版本升级

金字塔原理:解决问题的高效思维框架

易成研发中心

项目管理 金字塔原理

测试如何帮助开发同学更愉快的“修BUG”

Hi-CodeCaptain

软件质量 测试覆盖率 精准测试 bug 软件项目管理

利用官方授权API接口item_get_app,深度挖掘淘宝/天猫APP商品详情数据

代码忍者

API 接口 pinduoduo API

万界星空科技装备制造业MES解决方案

万界星空科技

mes 万界星空科技mes 装配行业 装配制造业 装配行业MES

TiDB v8.5 LTS 新版本解密

TiDB 社区干货传送门

数据库前沿趋势 8.x 实践

SQL Server 迁移到 TiDB

TiDB 社区干货传送门

数据规模超 1PB !揭秘网易游戏规模化 TiDB SaaS 服务建设

TiDB 社区干货传送门

集群管理

空壳产品之路:直面自身的缺点

iofomo

产品 设计 工具 摸鱼 微信分身

从 MongoDB 迁移到 TiDB

TiDB 社区干货传送门

从模型到应用,大模型产业落地进入加速期

极客天地

安徽等级保护测评机构名单【2025】

行云管家

等保 等保测评 安徽

【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键

云起无垠

从 DB2 迁移到 TiDB (CDC)

TiDB 社区干货传送门

TiDB数据库的垃圾回收机制

TiDB 社区干货传送门

监控 管理与运维

广告行业需要用到堡垒机的几个原因分析-行云管家

行云管家

广告 等保 等保测评

我手搓了个“自动生成标书”的开源大模型工具

白鲸开源

人工智能 机器学习 GAN 大模型

淘宝商品详情API:如何通过商品ID获取全面信息

代码忍者

API 接口 pinduoduo API

从 Oracle 迁移到 TiDB (OGG)

TiDB 社区干货传送门

SqlServer 到 TiDB(DATAX)

TiDB 社区干货传送门

【GreatSQL优化器-02】索引和Sargable谓词

GreatSQL

我们是如何实现 TiDB Cloud Serverless 的 - 成本篇

TiDB 社区干货传送门

TiDB Cloud

智源六周年 | 矢志星海,奋楫争先

智源研究院

从 Chukwa 到 Keystone :Netflix 的数据流水线演进_语言 & 开发_臧秀涛_InfoQ精选文章