netflix 网飞netflix官网网址


netflix 网飞netflix官网网址

文章插图
2021 年 , Netflix 会将大部分的工作负载从 Reloaded 转移到 Cosmos 平台 。Cosmos 是一个计算平台 , 它将微服务的最佳特性与异步工作流以及 Serverless 结合在一起 。
介绍Cosmos 是一个计算平台 , 它将微服务的最佳特性与异步工作流以及 Serverless(无服务器)结合在一起 。它的最佳应用是用于涉及到资源密集型算法的应用程序中 , 这些算法通过复杂的层次化工作流进行协调 , 可以持续几分钟到几年 。它既支持一次消耗数十万个 CPU 的高吞吐量服务 , 也支持需要等待计算结果对延迟敏感的工作负载 。
netflix 网飞netflix官网网址

文章插图
(一个 Cosmos 服务)
本文将会解释我们建造 Cosmos 的原因以及它的工作原理 , 同时也会分享一些我们在此过程中学到的知识 。
背景Netflix 的媒体云工程和编码技术团队共同运营一个系统 , 处理来自我们的合作伙伴以及工作室的输入媒体文件 , 使它们可以在所有设备上播放 。该系统的第一代于 2007 年推出了流媒体技术 。第二代增加了扩缩容 , 但操作极为困难 。第三代被称为 Reloaded , 也已经上线 7 年了 , 并且已被证明是稳定的且可进行大规模扩缩容的 。
在设计 Reloaded 时 , 我们是一个由开发人员组成的小团队 , 操作一个受限的计算集群 , 并专注于唯一的用例:视频 / 音频处理管道 。随着时间的推移 , 开发人员的数量增加了三倍多 , 我们的用例广度和深度也都扩大了 , 我们的规模增长了十多倍 。单体架构大大降低了新特性的交付速度 。我们不能再期望每个人都拥有构建和部署新特性所必需的专业知识了 。由于基础设施代码和应用程序代码都混在了一起 , 导致处理生产问题成为一项繁重的琐事 , 这给所有开发人员都带来了负担 。当我们还是一个小团队的时候 , 集中式数据模型能很好地服务于我们 , 但现在它成了我们的累赘 。
我们的响应是创建 Cosmos , 这是一个由工作流驱动、以媒体为中心的微服务平台 。我们的首要目标是在保留我们当前能力的同时提供以下功能:
可观察性——通过内置的日志、跟踪、监控、报警以及错误分类来实现 。模块化——用于构造服务并支持编译时和运行时模块化的一个“自以为是”的框架 。生产力——本地开发工具 , 包括专门的测试运行程序、代码生成器和命令行界面 。交付——一个被全面管理的管道、持续集成作业和端到端测试的持续交付系统 。当你合并 pull 请求时 , 它可以在没有人干预的情况下将其投入到生产环境中 。在此期间 , 我们还对可伸缩性、可靠性、安全性和其他系统质量进行了改进 。
概述Cosmos 服务不是微服务 , 但是它们有很多相似之处 。典型的微服务是一个具有无状态业务逻辑的 API , 它可以根据请求负载自动扩缩容 。该 API 提供了与对等方之间的强契约 , 同时将应用数据和二进制依赖关系与其他系统隔离开来 。
netflix 网飞netflix官网网址

文章插图
(一个典型的微服务)
Cosmos 服务保留了微服务的强契约和相隔离的数据 / 依赖关系 , 但添加了多步工作流和计算密集型异步 Serverless 函数 。下图展示了一个典型的 Cosmos 服务 , 在该服务中 , 客户端将请求发送到视频编码器服务的 API 层 。一组规则编排工作流步骤 , 一组 Serverless 函数执行特定领域的算法 。函数被打包为 Docker 镜像 , 并带有它们自己特定于媒体的二进制依赖项(例如 debian 包) 。它们根据队列的大小进行扩缩容 , 可以在成千上万的不同容器上运行 。请求可能需要数小时或数天才能完成 。
netflix 网飞netflix官网网址

文章插图
(一个典型的 Cosmos 服务)
关注点分离Cosmos 有两条分离轴 。一方面 , 逻辑被划分为 API、工作流和 Serverless 函数 。另一方面 , 逻辑在应用程序和平台之间也是分离的 。平台 API 为应用程序开发人员提供了特定于媒体的抽象 , 同时隐藏了分布式计算的细节 。例如 , 视频编码服务是由与扩缩容无关的组件构建的:API、工作流和函数 。他们对自己的扩缩容没有特别的了解 。这些特定于领域的、扩缩容不可知的组件构建在三个 扩缩容可感知的 Cosmos 子系统上 , 这些子系统负责处理分发工作的细节: