除了批次流程以外,另一个Netflix资料工程架构中的重要流程是即时资料的处理流程,包括了串流资料和资料服务产生的资料处理。
这个即时资料平台的核心是Apache Flink,这是Netflix用了多年的串流主要技术,在这个即时资料平台上,提供了大规模执行Flink任务和打造Flink应用的工具,也可以与底层基础架构系统沟通,来部署需要的容器丛集资源,例如透过Spinnaker派送平台,将串流任务派送到不同公云上的运算丛集来部署。另外也内建了可观察性、警报机制、配置机制和效能矩阵等工具。透过一个网页介面的控制平台(Control Plane),资料工程师可以很容易管理在这个即时资料平台上的Flink应用。
除了自己开发Flink的应用来处理串流服务之外,这个即时资料平台也提供一个串流处理即服务(Streaming Platform as a Service),称为Keystone,提供了一个现成、能自行客制和管理的串流服务平台,可以用来组合出一只大规模串流处理的应用服务,而不用从头开始打造所有的串流服务元件,让资料使用者专心处理串流资料处理的业务逻辑,其他非功能性的串流服务需求,则直接使用这个平台提供的元件服务来组合。
换句话说,多数串流处理任务都可以直接用Keystone上的串流处理服务提供的元件来组合出一只专用的串流处理应用,Netflix也会利用Keystone可以设计一个专门回补资料(Backfilling)的串流处理程序,例如有时会因为网路延迟而晚到,来不及写入原本串流处理程序的资料,可改用这个回补处理程序,来将缺漏的资料,写回到原本的串流处理应用中。
在即时资料处理流程的可观察性上,主要透过另一套串流应用监控服务Mantis,来观察不同资料处理阶段的状态,可以追踪这些串流处理任务的部署和管理,像是这些任务的资源调度或是彼此之间的沟通,也提供了可视化介面来呈现透过Mantis蒐集到的可观察性数据。
Netflix会将常用或成熟的即时资料处理程序,透过Spring boot框架和gRPC,打包成一个套装的即时资料服务(Real-time Data Services),对外提供给其他资料消费者。例如他们有一个抽取使用者互动资料特徵的处理作业,称为 PLUID,会打包成一只PLUID即时资料服务,能够提供行为特徵资料,来给模型训练,或其他服务之用。这是他们现在越来越常用的模式,将即时资料处理程序,打包成云端的资料服务,来串接其他应用。
串流处理是Netflix资料工程技术架构中最典型的两大资料流程之一。这个即时资料平台提供了大规模执行Flink任务和打造Flink应用的工具,也可透过Spinnaker与底层基础架构系统沟通,来部署需要的容器丛集资源。还内建了可观察性、警报机制、配置机制和效能矩阵等工具。更提供了网页介面的控制平台(Control Plane),资料工程师可以很容易管理在这个即时资料平台上的Flink应用。图片来源/Netfllix
最新一代资料处理平台是资料网格平台
Netflix的串流处理方式,除了用低阶的Flink API来打造出一只客制化的Flink,也可以用刚提到的Keystone来组合出一只串流处理应用,但是,Keystone擅长ETL类的资料处理,遇到更复杂的资料处理逻辑,还要扩大规模,Keystone就显得不够用。
这几年,Netflix发展出了一套新的资料处理平台,称为Data Mesh(资料网格平台),可以从更抽象化的层次来设计、执行和管理资料处理流程。
资料网格平台是一个通用型的资料移动和处理平台。一开始,在2021年时,Netflix制片工作室为了将庞大的影片资料,在不同的电影制作阶段中,需要一有影片内容异动,就得将异动段落内容,更新派送到不同的制作公司的资料工作流程管理平台,当时的资料网格平台还不是通用型的平台,主要用来处理以异动资料更新模式为主的资料移动作业需求。
後来,资料网格平台所支援的资料来源和资料类型越来越多,也可以支援更多形式的资料处理作业,甚至是一般资料移动的模式,或是更复杂的资料处理模式,例如过滤、联集处理、JOIN连结等。
资料网格平台主要功能区分为控制平台(控制器)和资料平台(工作流程),工作流程是实际的资料处理作业过程,而控制器则是用来接收使用者的需求,对定义好的工作流程,来进行部署和调度。控制器也会负责配置每一个工作流程需要的各种资源。一个工作流程,则包括了从不同资料源读取资料,进行各种转换处理,再存入资料储存空间。
在资料网格平台上,资料使用者,可以从更抽象层的角度,来操作不同资料处理作业的功能区块,组合成一个完整的资料处理流程,这些区块包括了资料源区块(存取内部资料源)、资料源连结器区块(连结外部资料源)、处理器区块(负责资料处理逻辑的Flink任务)、用Kafka打造的资料搬运层区块。
Netflix近3年又发展出了一套新的资料处理平台,称为Data Mesh(资料网格平台),可以从更抽象化的层次来设计、执行和管理资料处理流程。资料使用者可以从更抽象层的角度,来操作不同资料处理作业的功能区块。资料工程师只需控制滑鼠,拖拉UI介面上不同功能区块元件,建立区块间的连结关系,就可以完成这个工作流程,完全不用处理底层不同元件、服务、API之间的串接程式码撰写和配置细节。图中为一个汇整不同公云上不同资料来源,进行联集处理、GraphQL处理、栏位更名再存入Iceberg资料表的工作流程。图片来源/Netfllix
所有工作流程都要定义资料结构,以便清楚追踪资料血统
另外Netflix还规定,所有工作流程都要定义出资料Schema(资料结构),采用源自Hadoop专案的Avro资料格式,用JSON来订定各自需要的资料架构格式。有了共同的资料架构格式,不只可以控管资料品质,能清楚追踪资料血统(Data Lineage),也让资料使用者更容易进行各种资料的探索。
每当建立一个工作流程时,都须要同步定义出这个流程所用资料的资料结构,资料网格平台会自动依据资料结构,对这个工作流程中所有资料进行验证和相容检查。也会有自动化机制处理资料结构的变化,如果资料源的资料结构改变了,资料网格平台会自动更新哪些用到这个资料源的所有工作流程,不用人工比对和更新这些资料架构的异动,大大减少资料维护的例行工作。
用滑鼠拖拉功能区块元件,就能快速设计出一条工作流程
不只如此,资料工程师可以透过宣告式API,或是容易操作的UI介面,快速设计出一项资料处理程序的完整工作流程。资料工程师只需控制滑鼠,拖拉UI介面上的区块元件,建立区块间的连结关系,就可以完成这个工作流程,完全不用处理底层不同元件、服务、API之间的串接程式码撰写和配置细节。有了预先订定的各种资料处理工作流程,当资料使用者提出请求,资料网格平台会自动依据流程上的每一个步骤、区块的功能,自动执行一连串的作业。
还有一群处理器区块的工程师,专门开发和改善更多不同用途的Flink任务,来提供更多用途的处理器区块。
Netflix也提供了不少常见资料处理作业的最佳工作流程范本,称为最佳上路范本(The Paved Path),让资料工程师快速套用,不用从头开始构思,只要从范本开始修改客制即可,来缩短资料处理流程的设计时间。资料网格平台正是Netflix资料工程架构中,最新一代的资料工作流程解决方案,可以提供非常高层次的抽像化,让资料使用者更直觉,也更能聚焦在业务逻辑上,来设计他所需要的资料处理流程。
从零到2亿名会员的过程中,为了支援各种资料工程的实践,Netflix自己打造了各式各样的工具和技术。Chris Stephens指出,资料工程技术架构最大的目的,就是要让资料工程团队最常做的事情,变得更简单。
有了预先订定的各种资料处理工作流程,当资料使用者提出请求,资料网格平台会自动依据流程上的每一个步骤、区块的功能,自动执行一连串的作业。还有一群处理器区块的工程师,专门开发和改善更多不同用途的Flink任务,来提供更多用途的处理器区块。Netflix也提供了常见资料处理作业的最佳工作流程范本(The Paved Path),让资料工程师快速套用,不用从头开始构思,只要从范本开始修改客制即可,来缩短资料处理流程的设计时间。图片来源/Netfllix
相关报导