【数据架构】Netflix 万亿级实时数据基础架构的四个创新阶段(下)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 【数据架构】Netflix 万亿级实时数据基础架构的四个创新阶段

挑战

 

  • 挑战 1:自定义用例需要不同的开发人员和运营经验。
  • (Figure: A/B test to select the best artwork to personalize to the user,
  • 我先举两个自定义流处理用例的例子。
  • 计算推荐的流式基本事实。为了让 Netflix 推荐算法提供最佳体验,有必要使用最新数据训练模型。训练模型的输入之一是标签数据集。标签是先前的个性化预测是否准确的直接真实指标。如果用户决定观看一部电影以获得推荐,我们就有了一个肯定的标签。你可以猜到,我们越快得到这个标签数据集,整个 ML 反馈循环就越快。要计算标签,我们需要将展示流和用户点击流连接在一起。但是,用户点击活动通常会延迟到达。例如,用户有时会花几分钟来决定,或者干脆让他们的设备开机而不看几个小时。该用例要求流管道在所有相关信息到达后立即发出标签,但仍能容忍迟到的信息。
  • 计算推荐的比例。 Netflix 提供个性化推荐以优化用户体验。其中之一是选择最佳个性化艺术作品(以及展示它们的最佳位置)的算法,以优化用户参与度。在底层,流处理管道通过在某个自定义窗口上将播放数据流与印象流连接起来,以近乎实时的方式计算该提取分数指标。由于 Netflix 数亿用户群的规模,流媒体作业需要不断检查 1-10 TB 之间的内部状态。

  • 参考:通过 A/B 测试为视频选择最佳艺术品 |由 Netflix 提供)
  • 这些用例涉及更高级的流处理功能,例如复杂的事件/处理时间和窗口语义、允许的延迟、大状态检查点管理。他们还需要围绕可观察性、故障排除和恢复提供更多运营支持。全新的开发人员体验是必要的,包括更灵活的编程接口和操作能力,例如自定义可观察性堆栈、回填能力以及管理 10 TB 本地状态的适当基础架构。我们在 Keystone 中没有这些,我们需要建立一个新的产品入口点,但要尽量减少多余的投资。
  • 挑战 2:在灵活性和简单性之间取得平衡。对于所有新的自定义用例,我们必须找出适当的控制暴露水平。我们可以在更具有挑战性的操作的权衡下一路公开最低级别的 API(因为我们永远无法完全预测用户将如何使用引擎)。或者我们可以选择中途(例如,暴露有限的功能),冒着客户不满意的风险。
  • 挑战 3:操作复杂性增加。支持自定义用例需要我们增加平台的自由度。因此,我们需要在许多复杂场景中提高操作可观察性。同时,随着平台与许多其他数据产品的集成,我们系统的接触点增加,需要与其他团队进行运营协调,以更好地为我们的集体客户服务。
  • 挑战 4:中央平台与本地平台。我们团队的职责是提供一个集中的流处理平台。但是由于之前专注于简单性的策略,一些团队已经使用不受支持的技术在本地流处理平台上进行了投资,例如火花流。我们必须说服他们回到铺好的道路上,因为他们可能会失去平台的影响力,并在多余的投资上浪费资源。现在是我们扩展到自定义用例的正确时机。

第 3 阶段的流处理模式总结

+-----------------------------------------------------------------+

| Pattern               | Product  | Example Use Cases            |

|-----------------------|----------|------------------------------|

| Stream-to-stream Joins| Flink    | Take-fraction computation,   |

| (ETL)                 |          | Recsys label computation     |

|-----------------------|----------|------------------------------|

| Stream-to-table joins | Flink    | Side input: join streams with|

| (ETL)                 |          | slow-moving Iceberg table    |

|-----------------------|----------|------------------------------|

| Streaming Sessionizat-| Flink    | Personalization Sessionizat- |

| ion (ETL)             |          | ion, Metrics sessionization  |

|-----------------------|----------|------------------------------|

| RT Observability      | Mantis   | Distributed tracing,         |

|                       |          | Chaos EXPER monitoring,      |

|                       |          | Application monitoring       |

|-----------------------|----------|------------------------------|

| RT Anomaly / Fraud    | Mantis,  | Contextual alert,            |

| Detection             | Flink    | PII detection,               |

|                       |          | Fraudulent login prevention  |

|-----------------------|----------|------------------------------|

| RT DevOps Decision    | Mantis   | Autoscaling,                 |

| Tool                  |          | Streaming ACA & A/B tests,   |

|                       |          | CDN placement optimization   |

|-----------------------|----------|------------------------------|

| Event Sourced         | Flink    | Content Delivery Network     |

| Materialized View     |          | snapshotting                 |

+-----------------------+----------+------------------------------+

策略投注

 

  • 赌注 1:构建新产品入口点但重构现有架构,而不是孤立地构建新产品。 在分析处理方面,我们决定从原始架构中衍生出一个新平台,以利用 Apache Flink 展示流处理的全部功能。我们将从头开始创建一个新的内部客户群,但我们也认为现在是重构架构以最小化冗余投资(在 Keystone 和 Flink 平台之间)的正确时机。在这个新架构中,较低的 Flink 平台同时支持 Keystone 和自定义用例。

  • (Figure: Architecture splitting Flink Platform as a separate product entry point)
  • 赌注 2:从流式 ETL 和可观察性用例开始,而不是一次性处理所有自定义用例。有很多机会,但我们决定专注于分析方面的流式 ETL 用例和操作方面的实时可观察性用例。由于其复杂性和规模,这些用例最具挑战性。为了展示流处理的全部力量,我们首先解决最困难的问题并从中学习是有意义的。
  • 赌注3:最初与客户分担运营责任,随着时间的推移逐渐共同创新以减轻负担。我们很幸运,我们的早期采用者能够自给自足,而且每当客户遇到困难时,我们也会提供白手套支持模式。我们逐渐扩大了运营投资,例如自动扩展、托管部署、智能警报、回填解决方案等。

学习

 

  • 学习 1:支持新的自定义用例的新产品入口点是必要的演进步骤。这也是一个重新架构/重构并融入现有产品生态系统的机会。不要被引诱去孤立地构建一个新系统。避免第二系统效应。
  • 学习 2:简单性吸引了 80% 的用例。灵活性有助于更大的用例。回顾过去,这些是过去几年对实际客户群的观察。我想在这里向读者传达的一点是,在支持大多数用例或影响更大的用例之间进行优先级排序,都取决于具体情况。这个论点可以双向进行,但您应该阐明适合您的业务场景的推理。
  • 简单性和灵活性不是光谱的两个极端。这是一个封闭的创新反馈循环。灵活性的力量将推动与一小部分客户进行新的联合创新。一开始,这些创新可能会更昂贵,但在被证明之后,价值最终可能会变成商品并回到简化的体验。由于这些新价值有助于不断增长的客户,一小部分新用户将再次要求灵活性的力量。
  • 学习 3:善待你的早期采用者。他们是最忠实的客户,会免费为您做营销。感谢我们早期采用者的认可,我们的用例在此阶段激增至数千个。
  • 学习 4:当事情破裂时,不要惊慌。相信你周围的所有人。如果您已经有一个支持该产品的社区,则可以加分。我记得有一次我们经历了整个平台的缓慢退化。每天,我们都会收到大量的页面,而我们在两周内都无法找出根本原因。这太可怕了,团队很痛苦,客户也很痛苦。但是该团队能够跨越团队边界一起工作,让具有正确专业知识的人参与进来,使用数据对症状进行逻辑推理。最终,我们在 Linux 内核中发现了一个错误,该错误导致特定于流式工作负载的缓慢内存泄漏。我们必须信任所有相关人员,有时即使我们并不具备所有专业知识!

第 4 阶段:扩展流处理职责——未来的挑战和机遇(2020 年至今)


(Figure: how stream processing fits in Netflix — 2021)

语境

随着流处理用例扩展到 Netflix 中的所有组织,我们发现了新模式,并享受了早期的成功。但现在不是自满的时候。

作为一家企业,Netflix 继续探索新领域,并在内容制作工作室以及最近在游戏方面进行了大量投资。出现了一系列新挑战,我们开始着手解决这些有趣的问题空间。

挑战

 

  • 挑战一:多样化的数据技术使协调变得困难。由于团队被授权,Netflix 的许多团队都在使用各种数据技术。比如事务端:有Cassandra、MySQL、Postgres、CockroachDB、分布式缓存等;分析端:有Hive、Iceberg、Presto、Spark、Pig、Druid、Elasticsearch等。相同的数据通常存储在 Netflix 数据生态系统内的不同数据存储中。
  • 有很多选择可供选择,将技术放在不同的桶中是人类的天性。批处理与流式处理。事务性存储与分析性存储。在线处理与离线处理。这些都是数据世界中经常争论的话题。重叠的划分边界通常会给最终用户增加更多的困惑。
  • 如今,跨技术边界协调和处理数据极具挑战性。边界难以通过划分边界来推动。
  • 挑战 2:更陡峭的学习曲线。随着可用数据工具数量的不断增加和专业化程度的不断加深,用户学习和决定哪些技术适合特定用例是一项挑战。
  • 挑战 3:ML 实践没有利用数据平台的全部功能。前面提到的所有挑战都会对 ML 实践造成影响。数据科学家的反馈循环很长,数据工程师的生产力受到影响,产品工程师在共享有价值的数据时面临挑战。最终,许多企业失去了适应瞬息万变的市场的机会。
  • 挑战 4:中央平台模型的规模限制。由于中央数据平台以超线性的速度扩展用例,单点联系支持是不可持续的。现在是评估中央平台支持本地中央平台以增加杠杆作用的模型的正确时机(这意味着我们将优先支持构建在我们平台之上的本地平台)。

机会

 

我将在这部分相对简短,并在以后的博客文章中扩展细节。

  • 使用流连接世界。对于流处理而言,除了低延迟处理的优势外,它在现代数据平台中越来越显示出更为关键的优势:连接各种技术并实现流畅的数据交换。变更数据捕获 (CDC)、流式物化视图和数据网格概念等技术越来越受欢迎。最后,Martin Kleppmann 在 2015 年提出的“彻底颠覆数据库”的愿景开始实现其价值。
  • 通过结合最好的简单性和灵活性来提高抽象性。了解各种数据技术的深层内部原理很有价值,但并不是每个人都需要这样做。随着云优先的数据基础设施正在成为商品,这种思路尤其正确。适当提升数据基础设施抽象化成为让更广泛的受众轻松访问所有高级功能的直接机会。流式 SQL 等技术将降低准入门槛,但这仅仅是开始。数据平台还应提高对最终用户不可见的划分边界(例如,流式与批处理)的抽象。


(Figure: the sweet spot between simplicity and flexibility)

  • 机器学习需要来自现代数据平台的更多爱。 在所有开发人员角色中,ML 人员可以说是对业务影响最大和服务最不足的群体。所有 ML 平台都依赖于数据存储和处理。因此,Data Platform 有很多机会向 ML 世界伸出援助之手:例如数据质量、可靠性和可扩展性、开发到产品的反馈循环、实时可观察性、整体效率等。

第 4 阶段的流处理模式总结

+-----------------------------------------------------------------+

| Pattern               | Product  | Example Use Cases            |

|-----------------------|----------|------------------------------|

| Streaming Backfill /  | Flink    | Pipeline Failure mitigation, |

| Restatement           |          | Avoid cold start             |

|-----------------------|----------|------------------------------|

| Data Quality Control  | Keystone,| Schema evolution management, |

|                       | Flink    | Data Quality SLA,            |

|                       |          | Cost reduction via Avro      |

|                       |          | compression                  |

|-----------------------|----------|------------------------------|

| Source/Sink Agnostic  | Keystone,| Delta, Data Mesh,            |

| Data Synchronization  | Flink    | Operational reporting,       |

|                       |          | Notification,                |

|                       |          | Search Indexing Pipeline     |

|-----------------------|----------|------------------------------|

| Near-real-time (NRT)  | Flink    | Customer service recommend-  |

| Inference             |          | ation, Intent-based in-      |

|                       |          | session adaptations          |

|-----------------------|----------|------------------------------|

| Streaming SQL         | Flink    | Dynamic feature Engineering  |

|-----------------------|----------|------------------------------|

| Intelligent Operation | 4        | Auto-diagnosis & remediation |

+-----------------------+----------+------------------------------+

下一个前沿是什么

谢谢你走到这一步。这篇博文描述了在 Netflix 构建流处理基础设施的高级迭代之旅。我很想听听您对有趣之处的反馈,以便我可以跟进未来的博客文章。

根据设计,我在这篇文章中省略了许多技术细节。但如果您有兴趣了解更多信息,请参阅附录部分,了解 Netflix 中所有流处理创新的完整时间线视图。

我对数据基础设施的未来感到非常兴奋,尤其是支持更好的机器学习体验。我相信这是我们要大胆前行的下一个前沿!如果你感兴趣,我强烈推荐我的好朋友兼同事 Chip 的优秀读物“实时机器学习:挑战和解决方案”。

我也很高兴地宣布,我将与 Chip Huyen 一起开始新的旅程,在流媒体优先的机器学习平台上工作。我们还很早,我们正在寻找一位创始基础设施工程师,共同塑造未来!如果您有兴趣,我们很乐意收到您的来信!

如果这篇博文引起您的共鸣,请联系我们。我想连接!


附录

Netflix 中的流处理模式

+-----------------------------------------------------------------+

| Pattern               | Phase    | Example Use Cases            |

|-----------------------|----------|------------------------------|

| Data Routing          | 1        | Logging, Data Movement       |

|-----------------------|----------|------------------------------|

| RT Alerts / Dashboard | 1, 2     | SPS Alert,                   |

|                       |          | Infrastructure Health        |

|                       |          | Monitoring (Cassandra &      |

|                       |          | Elasticsearch),              |

|                       |          | RT QoE monitoring            |

+-----------------------------------------------------------------+

| RT Data Sampling/     | 2        | Cost-effective RT Insights   |

| Discovery             |          |                              |

|-----------------------------------------------------------------|

| Stream-to-stream Joins| 3        | Take-fraction computation,   |

| (ETL)                 |          | Recsys label computation     |

|-----------------------|----------|------------------------------|

| Stream-to-table joins | 3        | Side input: join stream with |

| (ETL)                 |          | slow-moving Iceberg table    |

|-----------------------|----------|------------------------------|

| Streaming Sessionizat-| 3        | Personalization Sessionizat- |

| ion (ETL)             |          | ion, Metrics sessionization  |

|-----------------------|----------|------------------------------|

| RT Observability      | 3        | Distributed tracing,         |

|                       |          | Chaos EXPER monitoring,      |

|                       |          | Application monitoring       |

|-----------------------|----------|------------------------------|

| RT Anomaly / Fraud    | 3        | Contextual alert,            |

| Detection             |          | PII detection,               |

|                       |          | Fraudulent login prevention  |

|-----------------------|----------|------------------------------|

| RT DevOps Decision    | 3        | Autoscaling,                 |

| Tool                  |          | Streaming ACA & A/B tests,   |

|                       |          | CDN placement optimization   |

|-----------------------|----------|------------------------------|

| Event Sourced         | 3        | Content Delivery Network     |

| Materialized View     |          | snapshotting                 |

| Streaming Backfill /  |          | Pipeline Failure mitigation, |

| Restatement           |          | Avoid cold start             |

|-----------------------|----------|------------------------------|

| Data Quality Control  | 4        | Schema evolution management, |

|                       |          | Data Quality SLA,            |

|                       |          | Cost reduction via Avro      |

|                       |          | compression                  |

|-----------------------|----------|------------------------------|

| Source/Sink Agnostic  | 4        | Delta, Data Mesh,            |

| Data Synchronization  |          | Operational reporting,       |

|                       |          | Notification,                |

|                       |          | Search Indexing Pipeline     |

|-----------------------|----------|------------------------------|

| Near-real-time (NRT)  | 4        | Customer service recommend-  |

| Inference             |          | ation, Intent-based in-      |

|                       |          | session adaptations          |

|-----------------------|----------|------------------------------|

| Streaming SQL         | 4        | Dynamic feature Engineering  |

|-----------------------|----------|------------------------------|

| Intelligent Operation | 4        | Auto-diagnosis & remediation |

+-----------------------+----------+------------------------------+

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
7天前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
28 8
|
9天前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
67 7
|
9天前
|
数据采集 搜索推荐 数据管理
数据架构 CDP 是什么?
数据架构 CDP 是什么?
31 2
|
2月前
|
Cloud Native Java 对象存储
面向未来的架构设计:Spring Cloud和Netflix OSS在云原生环境下的发展趋势
展望未来,随着5G、边缘计算等新技术的兴起,微服务架构的设计理念将会更加深入人心,Spring Cloud和Netflix OSS也将继续引领技术潮流,为企业带来更为高效、灵活且强大的解决方案。无论是对于初创公司还是大型企业而言,掌握这些前沿技术都将是在激烈市场竞争中脱颖而出的关键所在。
63 0
|
2月前
|
Java 对象存储 开发者
解析Spring Cloud与Netflix OSS:微服务架构中的左右手如何协同作战
Spring Cloud与Netflix OSS不仅是现代微服务架构中不可或缺的一部分,它们还通过不断的技术创新和社区贡献推动了整个行业的发展。无论是对于初创企业还是大型组织来说,掌握并合理运用这两套工具,都能极大地提升软件系统的灵活性、可扩展性以及整体性能。随着云计算和容器化技术的进一步普及,Spring Cloud与Netflix OSS将继续引领微服务技术的发展潮流。
56 0
|
1月前
|
消息中间件 分布式计算 druid
大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进
40 2
|
1月前
|
Cloud Native Java 对象存储
面向未来的架构设计:Spring Cloud和Netflix OSS在云原生环境下的发展趋势
面向未来的架构设计:Spring Cloud和Netflix OSS在云原生环境下的发展趋势
48 1
|
1月前
|
存储 大数据 数据处理
洞察未来:数据治理中的数据架构新思维
数据治理中的数据架构新思维对于应对未来挑战、提高数据处理效率、加强数据安全与隐私保护以及促进数据驱动的业务创新具有重要意义。企业需要紧跟时代步伐,不断探索和实践新型数据架构,以洞察未来发展趋势,为企业的长远发展奠定坚实基础。
|
2月前
|
存储 搜索推荐 数据库
MarkLogic在微服务架构中的应用:提供服务间通信和数据共享的机制
随着微服务架构的发展,服务间通信和数据共享成为关键挑战。本文介绍MarkLogic数据库在微服务架构中的应用,阐述其多模型支持、索引搜索、事务处理及高可用性等优势,以及如何利用MarkLogic实现数据共享、服务间通信、事件驱动架构和数据分析,提升系统的可伸缩性和可靠性。
46 5
|
2月前
|
Cloud Native Java 对象存储
揭秘微服务架构之争:Spring Cloud与Netflix OSS巅峰对决,谁将称霸弹性云原生时代?
近年来,微服务架构成为企业应用的主流设计模式。本文对比了两大热门框架Spring Cloud和Netflix OSS,探讨其在构建弹性微服务方面的表现。Spring Cloud依托Spring Boot,提供全面的微服务解决方案,包括服务注册、配置管理和负载均衡等。Netflix OSS则由一系列可独立或组合使用的组件构成,如Eureka、Hystrix等。两者相比,Spring Cloud更易集成且功能完善,而Netflix OSS则需自行整合组件,但灵活性更高。实际上,两者也可结合使用以发挥各自优势。通过对两者的对比分析,希望为企业在微服务架构选型上提供参考。
53 0