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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

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 分钟。不过对于通常以天或小时的频率扫描数据的批处理作业而言,也足够了。

20160219033410598.png

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

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

20160219033414103.jpg

除了将事件上传到 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 有一个非常活跃、生机勃勃的社区。

20160219033421981.png

  有 3 个主要组件:

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

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



本文转自d1net(转载)

相关文章
|
11月前
|
数据采集 机器学习/深度学习 弹性计算
【SIGMOD 2023】深度学习弹性数据流水线系统GoldMiner,大幅提升任务和集群效率
阿里云机器学习平台PAI和北京大学杨智老师团队合作的论文被SIGMOD 2023录用。
|
存储 SQL 分布式计算
数据流水线架构
数据流水线架构
318 0
数据流水线架构
|
机器学习/深度学习 存储 缓存
快速入门DVC(五):数据流水线(Pipelines)
今天我们来讲述下如何过滤、转换或使用数据来训练 ML 模型? DVC 引入了一种获取 数据流水线(生成最终结果的一系列数据过程) 的机制。 DVC 流水线及其数据也可以很容易地使用 Git 进行版本控制。 这使您可以更好地组织项目,并在以后完全按照最初构建的方式重现您的工作流程和结果。例如,您可以获取一个简单的 ETL 工作流、组织一个数据科学项目或构建一个详细的机器学习流水线。
|
13天前
|
Kubernetes 安全 Devops
【云效流水线 Flow 测评】驾驭云海:五大场景下的云效Flow实战部署评测
云效是一款企业级持续集成和持续交付工具,提供免费、高可用的服务,集成阿里云多种服务,支持蓝绿、分批、金丝雀等发布策略。其亮点包括快速定位问题、节省维护成本、丰富的企业级特性及与团队协作的契合。基础版和高级版分别针对小型企业和大规模团队,提供不同功能和服务。此外,云效对比Jenkins在集成阿里云服务和易用性上有优势。通过实战演示了云效在ECS和K8s上的快速部署流程,以及代码质量检测和AI智能排查功能,展示了其在DevOps流程中的高效和便捷,适合不同规模的企业使用。本文撰写用时5小时,请各位看官帮忙多多支持,如有建议也请一并给出,您的建议能帮助我下一篇更加出色。
136113 16
|
21天前
|
运维 Devops
云效产品使用报错问题之yaml流水线里的 ${CI_COMMIT_REF_NAME} 失效如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
云效产品使用报错问题之yaml流水线里的 ${CI_COMMIT_REF_NAME} 失效如何解决
|
3天前
|
监控 数据可视化 测试技术
云效流水线 Flow 评测:助力企业高效完成 CICD 全流程
云效流水线 Flow 评测显示其在CI/CD领域表现出色,尤其适合新人上手。具备直观的可视化编辑和Yaml化选项,丰富的文档教程,以及全面的功能,如多代码源支持、自动化测试、稳定部署及阿里云服务集成。此外,Flow性能稳定,监控功能强,且高度可扩展,支持插件和API集成。相比其他工具,Flow在成本、功能和性能上有竞争优势,特别适合与阿里云生态结合的团队。作为一款易用且性价比高的工具,Flow值得推荐给各类企业。
140 10
|
4天前
|
弹性计算 安全 Java
基于云效流水线 Flow的测评报告
基于云效流水线 Flow的测评报告
250 4
基于云效流水线 Flow的测评报告
|
4天前
|
弹性计算 Java Maven
云效流水线 Flow 评测
Java开发团队青睐云效流水线Flow作为CI/CD工具,因其对Java/Maven的良好支持,直观界面,与阿里云ECS的集成及实时反馈。Flow功能全面,开放且可定制,尤其适合已使用阿里云服务的团队。尽管在非阿里云服务集成上有改进空间,但Flow的性价比和端到端支持使其成为推荐选择。
19 1
|
12天前
|
数据可视化 开发者
开发者评测|云效流水线 Flow
体验云效流水线Flow,图形化拖拉拽编排适合小团队,界面简洁,管理清晰。流水线编辑布局直观,支持并行步骤,方便查看日志。作为后端开发者,需求包括便捷错误日志查看、构建记录和环境区分。Flow上手简单,配置直观,功能齐全,但资源限制可能影响多任务并发。通知机制的完善将更佳。相比其他CI/CD工具,Flow功能强,性价比高,适合推荐给团队使用。
|
12天前
|
弹性计算 数据可视化
对云效流水线 Flow 的一些体验
Flow是阿里云的CI/CD工具,以其可视化界面和拖拽式构建流程简化了新手上手难度,同时提供代码检查、构建、测试及部署等功能。尽管对CI/CD概念新手仍有学习曲线,Flow的入门教程有助于理解和使用。Flow在性能和开放性上表现出色,支持多种语言和框架,能与阿里云服务集成。成本相对较低,适合与阿里云生态匹配的团队。与其他CI/CD工具比较,Flow在功能和性能上有竞争力,但最佳选择取决于团队具体需求。总体而言,Flow是值得考虑的CI/CD解决方案。
对云效流水线 Flow 的一些体验