Netflix Studio Search:利用 Elasticsearch 和 Apache link 对联邦GraphQL数据进行索引
Netflix工程师最近公开了他们是怎样构建Studio Search的,包括使用Apache Kafka流处理平台、基于Apache Flink的数据网格(Data Mesh)进程以及Elasticsearch sink来管理索引。这些工程师构建Studio Search的目的是从Netflix的联邦GraphQL数据中获取一部分数据并让它们可被检索,这让很多应用程序的用户体验得到改善。
在Netflix 的内容工程部门,每个团队都独立的建立和运维他们的 Domain Graph Services (DGS) ,同时也使用联邦数字网关公开的统一 GraphQL schema将该域与其他域连接。
根据作者的说法,在图联邦架构中,每个服务都需要提供一个端点,该端点接收可能应用于服务不拥有的数据的查询和过滤器,并使用它们来识别它应当返回的实体。可能需要每一个拥有服务的实体来完成这项工作,因此让联邦图可搜索加速了Studio Search 的出现。
上图是 Studio Search 的架构,以及它如何为部分联邦图保持索引。
Application事件和Change Data Capture (CDC)事件传输到模式化的 Kafka 流,Apache Flink 中的 Data Mesh 进程使用这些事件,并使用用户提供的针对联邦数字网关的 GraphQL 查询来获取更多数据。获取的文档在被 Elasticsearch 的Data Mesh索引到 Elasticsearch 之前,会被放到另一个 Kafka 的主题中。
该团队在之前手动进行了集成,不过效果不太好,为了实现自动化,该团队编写了一个 YAML 配置文件,他们使用此配置以编程方式在数据网格中创建索引管道。
该团队目前面临的挑战是如何在不使系统超载的情况下进行新索引、改进反向查找的使用以及使索引拥有更好的一致性和对过期或丢失数据的处理。