요약:

우리는 Netflix Studio Search Architecture에서 Elasticsearch 및 Apache Flink의 사용에 대해 논의 할 것입니다. 이 기사는 Apache Mesos와의 분산 자원 스케줄링 개념과 다양한 워크로드를 실행하는 데있어서의 중요성을 다룰 것입니다. 또한 Apache Mesos와 작업에 리소스 할당에 리소스 관리자의 필요성을 사용하여 Cloud-Native Scheduling을 탐색 할 것입니다. 또한 Fenzo Scheduling Library의 사용과 자원 예약에 대한 기여를 효율적으로 강조 할 것입니다. 마지막으로, 우리는 현재 반응식 스트림 처리 플랫폼 인 Mantis를 포함하여 Netflix에서 Apache Mesos 클러스터를 실행하는 3 개의 프로젝트를 선보일 예정입니다.

키 포인트:

1. Apache Mesos를 사용한 분산 리소스 스케줄링 : Netflix는 Apache Mesos를 사용하여 배치, 스트림 처리 및 세분화 된 리소스 할당으로 서비스 스타일 워크로드를 실행합니다.

2. 메소스 기반 자원 스케줄링에서 컨테이너 채택 증가 : 컨테이너는 스트림 처리, 배치 작업 및 서비스 스타일의 워크로드를위한 메소의 사용을 주도했습니다.

삼. Apache Mesos를 사용한 클라우드 네이티 스케줄링 : 리소스 할당은 메소스를 사용하여 작업 예약과 분리되어 다양한 스케줄러가 다양한 사용 사례를 제공 할 수 있습니다.

4. 클라우드 네이티브 환경에서 Netflix의 메소 사용 : Netflix는 스케줄러가 수요를 기준으로 Mesos Agent 클러스터의 에이전트 및 오토 스케일의 증가를 처리 할 수 ​​있도록합니다.

5. 펜조 스케줄링 라이브러리 소개 : Netflix는 메소스 클러스터에서 고급 리소스 스케줄링 및 자동화를 가능하게하는 스케줄링 라이브러리 인 Fenzo를 기고했습니다.

6. Mantis : 반응 스트림 처리 플랫폼 : Mantis는 실시간 스트림 처리를위한 클라우드 네이티브 서비스로 초당 수백만의 이벤트를 처리하고 다양한 스트림 처리 작업을 실행할 수 있습니다.

7. Mantis 플랫폼 아키텍처 : Mantis 플랫폼은 마스터 및 에이전트 클러스터로 구성되며, 여기서 사용자는 스트림 처리 응용 프로그램을 작업으로 제출합니다.

독특한 질문 :

  1. Netflix의 워크로드 관리에서 Apache Mesos의 역할은 무엇입니까??
    Apache Mesos는 Netflix에서 배치, 스트림 처리 및 서비스 스타일 워크로드의 혼합에 대한 세밀한 리소스 할당 및 스케줄링을 허용합니다.
  2. Netflix는 Mesos 기반 자원 스케줄링에서 컨테이너 채택을 어떻게 처리합니까??
    Netflix는 스트림 처리, 배치 작업 및 서비스 스타일 워크로드 용 컨테이너를 활용하여 메소스 클러스터 사용.
  3. 클라우드 네이티브 환경은 메소스 스케줄러에게 어떤 과제를 제기합니까??
    클라우드 기본 환경에서 MESOS 클러스터를 작동하려면 수요에 따라 에이전트의 임시 계급 성을 처리하고 MESOS 에이전트 클러스터를 자동으로 처리해야합니다.
  4. Netflix가 Fenzo Scheduling Library를 개발 한 이유는 무엇입니까??
    Netflix는 기존 스케줄러 간의 기능 차이를 해결하기 위해 Fenzo Scheduling Library를 도입하여 Mesos 클러스터의 고급 리소스 스케줄링 및 자동화를 가능하게합니다.
  5. Mantis는 무엇이며 사용 사례는 무엇입니까??
    Mantis는 Netflix의 반응식 스트림 처리 플랫폼으로 실시간 대시 보드, 이상 감지, 메트릭 생성 및 스트리밍 데이터의 임시 탐색에 사용됩니다.
  6. Mantis 플랫폼이 초당 수백만 개의 이벤트를 처리하는 방법?
    Mantis 플랫폼은 마스터 및 에이전트 클러스터로 구성되며 스트림 처리 응용 프로그램은 작업자로 실행됩니다. 이를 통해 초당 수백만 개의 이벤트를 효율적으로 처리 할 수 ​​있습니다.
  7. Mantis가 수행하는 특정 작업의 예를 제공 할 수 있습니까??
    Mantis는 브라질의 iPads에서 House of Cards, Season 4, Episode 1과 같은 특정 타이틀로 재생 문제를 감지하기 위해 세밀한 통찰력을 처리합니다.
  8. Mantis 플랫폼에서 Fenzo Scheduling Library의 목적은 무엇입니까??
    Fenzo Scheduling Library는 Mantis 플랫폼에서 여러 스케줄링 목표를 기반으로 작업에 리소스를 할당하고 에이전트 클러스터의 자동화를 처리하는 데 사용됩니다.
  9. Apache Mesos는 리소스 할당 및 작업 일정을 분리하는 방법?
    Apache Mesos는 리소스 할당을 프레임 워크로 분리하여 자원 예약에서 작업에 이르기까지 다양한 스케줄러가 다양한 사용 사례를 수용 할 수 있습니다.
  10. Netflix의 프로젝트는 현재 Apache Mesos 클러스터를 운영하고 있습니다?
    Netflix에서 Apache Mesos 클러스터를 실행하는 3 개의 프로젝트는 Mantis, Titus 및 Spinnaker입니다.
  11. 클라우드 네이티브 환경에서 메소스 스케줄러를 구별하는 것?
    클라우드 네이티브 환경의 메소스 스케줄러는 수요에 따라 에이전트 클러스터의 에이전트의 임시 성을 처리해야합니다.
  12. Fenzo는 메소스의 자원 예약에 어떻게 기여합니까??
    fenzo. 또한 유휴 에이전트의 효율적인 스케일링 및 종료를 가능하게합니다.
  13. Netflix 엔지니어링의 메소스의 일부 사용 사례는 무엇입니까??
    메소는 실시간 이상 탐지, 교육 및 모델 구축 배치 작업, 기계 학습 오케스트레이션 및 노드에 사용됩니다.Netflix에서 JS 기반 마이크로 서비스.

답변:

  1. Apache Mesos는 배치, 스트림 처리 및 서비스 스타일 워크로드의 혼합에 대한 세밀한 리소스 할당 및 스케줄링을 허용하여 Netflix의 워크로드 관리에서 중요한 역할을합니다. 빈 포장 작업을 통해 자원을 효율적으로 활용하여 단일 EC2 인스턴스에 차선책 및 불필요한 인스턴스를 피할 수 있습니다. 또한 MESO는 Netflix의 마이크로 서비스 및 AWS 생태계와 완벽하게 통합되어 서비스 발견,로드 밸런싱, 모니터링 및 CI/CD 파이프 라인 인 Spinnaker와의 통합을 제공합니다.
  2. Netflix는 Docker 기반 컨테이너의 이점을 활용하여 Mesos 기반 자원 스케줄링에서 컨테이너의 채택을 처리합니다. Netflix에서 스트림 처리, 배치 작업 및 서비스 스타일 워크로드에 컨테이너가 점점 더 많이 사용되고 있습니다. 컨테이너로 작업하는 것이 용이성으로 인해 다양한 사용 사례에 대한 메소스 클러스터가 채택되었습니다. 컨테이너를 사용하여 Netflix는 워크로드, 더 빠른 배포 및 효율적인 리소스 활용 간의 분리를 더 잘 달성합니다.
  3. 클라우드 네이티브 환경에서 메소스 스케줄러는 에이전트의 급성 성 및 수요에 따라 MESOS 에이전트 클러스터를 자동으로 제정 해야하는 문제와 관련된 문제에 직면 해 있습니다. AWS EC2에서 Netflix의 탄성 클라우드 환경은 스케줄러가 클라우드의 동적 특성을 처리해야하며 인스턴스가 종료되거나 자주 추가 될 수 있습니다. 스케줄러는 이러한 변경 사항에 빠르게 반응하고 그에 따라 자원을 할당해야합니다. 넷플릭스.
  4. Netflix는 클라우드 네이티브 환경의 특정 요구 사항과 과제를 해결하기 위해 Fenzo Scheduling Library를 개발했습니다. 기존 스케줄러에는 빈 포장 및 EC2 가용성 영역의 스프레드 작업과 같은 고급 리소스 스케줄링 기능이 부족했습니다. Fenzo는 여러 스케줄링 목표 및 제약 조건을 정의하여 작업에 효율적으로 리소스 할당을 할 수 있고, 단편화 최소화 및 리소스 활용 최적화를 가능하게합니다. 라이브러리는 플러그인을 통해 확장 가능하며 공통 스케줄링 목표를위한 내장 구현. Netflix의 이러한 기여는 Apache Mesos 클러스터에서 자원 관리 및 일정을 향상 시켰습니다.
  5. Mantis는 운영 데이터 스트림을 처리하도록 설계된 Netflix의 반응 스트림 처리 플랫폼입니다. 실시간 대시 보드, 경고, 이상 감지, 메트릭 생성 및 스트리밍 데이터의 임시 대화식 탐색을 포함한 다양한 사용 사례를 제공합니다. 이 플랫폼을 통해 팀은 실시간 이벤트에 쉽게 액세스하고 그 위에 응용 프로그램을 구축 할 수 있습니다. Mantis는 초당 최대 8 백만 이벤트를 처리하고 수많은 스트림 처리 작업을 동시에 실행할 수 있습니다. 이 플랫폼은 수백만 개의 고유 한 데이터 조합을 지속적으로 추적하여 세밀한 통찰력을 제공합니다.
  6. Mantis 플랫폼은 마스터 및 에이전트 클러스터로 구성됩니다. 사용자는 스트림 처리 애플리케이션을 작업으로 제출할 수 있으며, 에이전트 클러스터의 한 명 이상의 작업자가 실행하는 작업으로. 마스터 구성 요소는 효율적인 리소스 할당 및 작업 할당을 위해 Fenzo Scheduling Library를 사용합니다. 이 아키텍처는 Mantis가 별도의 에이전트에서 실행되는 여러 작업자에게 작업량을 배포하여 초당 수백만 개의 이벤트 처리를 처리 할 수 ​​있습니다. 이 플랫폼은 고 가용성, 결함 공차 및 확장 성을 보장하여 스트림 처리 작업의 원활한 실행을 가능하게합니다.
  7. Mantis가 수행 한 특정 작업의 예는 House of Cards, Season 4, 에피소드 1과 같은 특정 제목으로 재생 문제를 추적하는 것입니다. Mantis는 수백만 개의 고유 한 데이터 조합에 대한 재생 문제가 있는지 감지하기 위해 세밀한 통찰력을 처리합니다. 이 작업에는 재생 이벤트의 실시간 모니터링, 재생 품질, 사용자 위치 및 장치 유형과 관련된 데이터 분석이 포함됩니다. 재생 문제를 식별하고 해결함으로써 Mantis는 Netflix 사용자에게 완벽한 시청 경험을 제공합니다.
  8. Fenzo Scheduling Library는 고급 리소스 스케줄링 기능을 제공하고 에이전트 클러스터의 자동화를 가능하게하여 Mantis 플랫폼에서 중요한 역할을합니다. Fenzo. 또한 EC2 가용성 영역에 걸쳐 작업의 확산 작업을 지원하여 고 가용성을 보장합니다. Fenzo의 Extensible Architecture는 사용자가 사용자 정의 피트니스 기준 및 제약 조건을 정의하여 리소스 할당에 대한 세밀한 제어를 가능하게합니다. 전반적으로 Fenzo는 Mantis 플랫폼의 효율성, 확장 성 및 결함 허용을 향상시킵니다.
  9. Apache Mesos는 유연성을 가능하게하고 다양한 사용 사례를 수용하기 위해 자원 할당 및 작업 일정을 분리합니다. 자원 할당은 Mesos Frameworks에서 처리하며 Mesos의 리소스를 요청합니다. 프레임 워크의 스케줄러는 자체 스케줄링 로직을 기반으로 어떤 작업과시기에 어떤 작업을 할당 할 리소스를 결정합니다. MESOS는 스케줄러가 기본 자원 관리 시스템과 상호 작용할 수있는 비교적 간단한 API를 제공합니다. 이 분리는 다른 프레임 워크가 자체 스케줄러를 구현하여 메소스가 단일 모 놀리 식 스케줄러가 될 필요없이 특정 사용 사례에 대한 리소스 할당을 최적화 할 수 있도록합니다.
  10. 현재 Netflix : Mantis, Titus 및 Spinnaker에서 Apache Mesos 클러스터를 사용하는 3 개의 프로젝트. Mantis는 실시간 데이터 스트림을위한 반응식 스트림 처리 플랫폼이며 Titus는 Netflix의 마이크로 서비스 및 AWS 생태계와 밀접한 통합을 제공합니다. Spinnaker는 응용 프로그램을 배포하고 관리하기위한 지속적인 전달 플랫폼입니다. 각 프로젝트에는 고유 한 요구 사항 및 사용 사례가있어 효율적인 리소스 관리, 워크로드 스케줄링 및 확장 가능성을 위해 Apache Mesos의 기능을 활용합니다.
  11. 클라우드 네이티브 환경의 메소스 스케줄러는 클라우드 인스턴스 및 수요 변동의 동적 특성과 관련된 문제에 직면합니다. 클라우드 네이티브 스케줄러. 또한 이러한 스케줄러는 최적의 리소스 활용을 보장하기 위해 주문에 따라 에이전트 클러스터를 효율적으로 확장해야합니다. 자원의 할당 및 거래를 효율적으로 관리하는 능력과 수요 변경에 적응하는 것과 함께 클라우드 네이티브 환경에서 메소스 스케줄러를 구별합니다.
  12. Fenzo Scheduling Library는 고급 기능과 확장 성을 제공하여 메소스의 리소스 스케줄링에 기여합니다. Fenzo는 효율적인 빈 작업 작업을 수행하여 단편화를 최소화하고 리소스 활용을 최적화 할 수 있습니다. 또한 사용자가 사용자 정의 피트니스 기준 및 제약 조건을 정의하여 고도로 사용자 정의 가능한 리소스 할당 로직을 가능하게합니다. Fenzo를 통합하여 Mesos 클러스터는 작업에 자원을 효율적으로 할당하고, 수요에 따라 자동 규모로, 가용성 영역에 대한 작업을 확산시켜 고 가용성을 보장 할 수 있습니다.
  13. Apache Mesos.JS 마이크로 서비스. Mesos는 Netflix가 다양한 워크로드를 효율적으로 처리 할 수있는 유연하고 확장 가능한 플랫폼을 제공합니다. Mesos의 세밀한 자원 할당 및 스케줄링 기능을 활용하여 Netflix 엔지니어는 분산 인프라에서 복잡한 워크로드를 실행할 수 있습니다.

Netflix Studio Search : Elasticsearch 및 Apache Flink 사용을 사용하여 Federated GraphQL 데이터를 색인

Titus의 위의 아키텍처 다이어그램은 Fenzo를 사용하여 Mesos 에이전트로부터 리소스를 할당하는 마스터를 보여줍니다. Titus는 서비스 발견, 소프트웨어 기반로드 밸런싱, 모니터링 및 CI/CD 파이프 라인 인 Spinnaker를 포함하여 Netflix 마이크로 서비스 및 AWS 생태계에 엄격한 통합을 제공합니다. 메소스에 맞춤형 집행자를 작성하는 기능을 통해 컨테이너 런타임을 쉽게 조정하여 나머지 생태계에 맞도록합니다.

Apache Mesos를 사용한 분산 리소스 스케줄링

Netflix는 Apache Mesos를 사용하여 배치, 스트림 처리 및 서비스 스타일 워크로드의 혼합을 실행합니다. 2 년 이상, 우리는 실시간 이상 탐지, 교육 및 모델 구축 배치 작업, 기계 학습 오케스트레이션 및 노드 등 다양한 사용 사례에 대한 사용이 증가했습니다.JS 기반 마이크로 서비스. Apache Mesos 1의 최근 출시.0은 기술을 처음 실험하기 시작한 이후 크게 발전한 기술의 성숙도를 나타냅니다.

Apache Mesos의 초기 사용은 단일 EC2 인스턴스에 빈 채로 포장 할 수있는 다양한 크기의 작업에 미세한 자원 할당에 의해 동기 부여되었습니다. 메소 또는 유사한 리소스 관리자가 없으면 차선책이있는 인스턴스의 증가를 위해 미세한 입자 할당을 포기하거나 Mesos와 유사한 기술을 개발하거나 최소한의 서브 세트를 개발해야했을 것입니다.

스트림 처리 및 배치 작업을위한 컨테이너의 채택이 증가함에 따라 메소스 기반 리소스 스케줄링에서 계속 사용됩니다. 보다 최근에 개발자는 Mesos 클러스터에 서비스 스타일 워크로드를 가져온 Docker 기반 컨테이너 작업을 통해 이점이 있습니다. 우리는 여기에서 Netflix Engineering의 Apache Mesos를 사용하여 일부 프로젝트에 대한 개요를 제시합니다. 우리는 그들이 다루는 다양한 사용 사례와 각각 기술을 효과적으로 사용하는 방법을 보여줍니다. 각 프로젝트에 대한 자세한 내용은 아래 섹션의 다른 게시물에 대한 링크를 제공합니다.

Apache Mesos를 사용한 클라우드 네이티 스케줄링

다양한 EC2 인스턴스에서 작업에 리소스를 할당하려면 자원 관리자가 필요하고 자원을 예약 할 수 있도록하고 분산 된 EC2 인스턴스 세트를 통해 작업을 시작하고 모니터링하는 물류를 수행하는 리소스 관리자가 필요합니다. Apache Mesos는 자원 할당을 분리합니다 “프레임 워크” 자원 예약에서 프레임 워크의 작업에 이르기까지 클러스터를 사용하고자합니다. 메소스는 프레임 워크에 얼마나 많은 리소스가 할당되었는지를 결정하지만 프레임 워크’s 스케줄러는 어떤 작업에 할당 할 리소스를 결정하고. 스케줄러는 비교적 간단한 API가 제공되므로 스케줄링 로직에 집중하고 분산 시스템에서 불가피한 실패에 대응할 수 있습니다. 이를 통해 사용자는 모든 사용 사례에 대한 단일 모 놀리 식 스케줄러가 아닌 메소가 다양한 사용 사례를 수용하는 다양한 스케줄러를 작성할 수 있습니다. MESOS 문서화의 아래 다이어그램은 표시됩니다 “프레임 워크 1” 로부터 제안을받습니다 “에이전트 1” 그리고 두 가지 작업을 시작합니다.

Mesos 커뮤니티는 특정 사용 사례를 수용하고 특정 API를 사용자에게 제시하는 여러 스케줄러가 시간이 지남에 따라 개발되었습니다.

Netflix는 탄성 구름에서 다양한 마이크로 서비스를 실행합니다. 클라우드 기본 환경에서 Mesos 클러스터를 작동시키는 데있어 스케줄러는 데이터 센터 환경에서 작동하는 스케줄러가 작업을 실행하는 에이전트의 임시 성을 증가시키는 것 외에도 두 가지 측면을 처리 할 수 ​​있도록해야했습니다. 또한, 우리가 염두에 둔 사용 사례는 최초의 적합한 종류의 과제보다 자원의 고급 스케줄링을 요구했습니다. 예를 들어, 자원의 조각화를 최소화하기 위해 CPU, 메모리 및 네트워크 대역폭을 사용하여 에이전트에게 작업을 포장합니다. 빈 패킹은 또한 실행 작업을 종료하지 않고 유휴 에이전트를 종료하여 에이전트 클러스터의 스케일링을 완화하기 위해 가능한 한 많은 에이전트를 확보 할 수 있도록 도와줍니다.

기존 스케줄러들 사이에서 이러한 기능의 차이를 식별하면서 작년에 우리는 Fenzo라는 스케줄링 라이브러리를 기부했습니다. Fenzo는 수요에 따라 에이전트 클러스터를 자동화하고 피트니스 기준 및 제약 조건을 통해 구성된 여러 스케줄링 목표를 기반으로 작업에 리소스를 할당합니다. 피트니스 기준 및 제약 조건은 플러그인을 통해 확장 가능하며, 빈 포장 및 고 가용성을위한 EC2 가용성 영역에 걸친 작업의 스프레드 작업과 같은 몇 가지 일반적인 구현이 내장되어 있습니다. JVM에서 실행되는 MESOS 프레임 워크는 Fenzo Java 라이브러리를 사용할 수 있습니다.

Netflix의 메소스

다음은 현재 Apache Mesos 클러스터를 실행하는 세 가지 프로젝트입니다.

사마귀

Mantis는 운영 데이터 스트림에 중점을 둔 클라우드 기본 서비스로 작동하는 반응식 스트림 처리 플랫폼입니다. Mantis는 실시간 대시 보드, 경고, 이상 탐지, 메트릭 생성 및 스트리밍 데이터의 임시 대화식 탐색을 포함하여 다양한 사용 사례를 커버합니다. 우리는 팀이 실시간 이벤트에 쉽게 액세스하고 그 위에 응용 프로그램을 구축 할 수 있도록 Mantis를 만들었습니다. 현재 Mantis는 초당 최대 8 백만 이벤트의 이벤트 스트림을 처리하고 있으며 24 시간 내내 수백 개의 스트림 처리 작업을 실행하고 있습니다. 그러한 직업 중 하나는 개별 타이틀에 중점을 두어 브라질의 iPad에 대한 House of Cards, 시즌 4, 에피소드 1에 재생 문제가 있는지 알아 내기 위해 세밀한 통찰력을 처리합니다. 이것은 항상 수백만 개의 고유 한 데이터 조합을 추적하는 것입니다.

Mantis 플랫폼은 마스터와 에이전트 클러스터로 구성됩니다. 사용자는 스트림 처리 응용 프로그램을 에이전트 클러스터에서 하나 이상의 작업자로 실행되는 작업으로 제출합니다. 마스터는 Apache Mesos와 함께 Fenzo Scheduling Library를 사용하여 작업에 리소스를 최적으로 할당합니다’S 노동자. 그러한 할당 목표 중 하나는 일시적 대화 형 작업을 실행하는 에이전트의 영구 스트림 처리 작업. 이것은 과도 작업이 완료되면 에이전트 클러스터의 스케일 다운에 도움이됩니다. 아래 다이어그램은 Mantis Architecture를 보여줍니다. 다양한 작업의 근로자는 CGroups 기반 자원 격리를 사용하여 동일한 에이전트에서 운영 될 수 있습니다.

티투스

Titus는 Docker 컨테이너 작업 관리 및 실행 플랫폼입니다. 처음에 Titus는 알고리즘 교육 (권장 사항 유사한 타이틀, A/B 테스트 셀 분석 등)을 포함하는 배치 작업을 제공했습니다.)뿐만 아니라 시간당 임시보고 및 분석 작업. 최근에 Titus는 일관된 지역 개발 경험과보다 미세한 자원 관리가 필요한 서비스 스타일 작업 (Netflix MicroServices)을 지원하기 시작했습니다. 티투스’ 초기 서비스 스타일 사용은 서버 측 Nodejs를 사용한 API 재고용입니다.

Titus의 위의 아키텍처 다이어그램은 Fenzo를 사용하여 Mesos 에이전트로부터 리소스를 할당하는 마스터를 보여줍니다. Titus는 서비스 발견, 소프트웨어 기반로드 밸런싱, 모니터링 및 CI/CD 파이프 라인 인 Spinnaker를 포함하여 Netflix 마이크로 서비스 및 AWS 생태계에 엄격한 통합을 제공합니다. 메소스에 맞춤형 집행자를 작성하는 기능을 통해 컨테이너 런타임을 쉽게 조정하여 나머지 생태계에 맞도록합니다.

중간자

Meson은 기계 학습 파이프 라인을 관리하기 위해 구축 된 범용 워크 플로 오케스트레이션 및 스케줄링 프레임 워크입니다.

메손. 공유 클러스터에서 다른 배치 작업과 함께 스파크 작업의 실행을 지원합니다. 작업은 CGroups 기반 격리를 사용하여 에이전트에서 분리 된 리소스입니다. Meson Scheduler는 그래프를 기반으로 작업의 준비 상태를 평가하고 Mesos의 리소스 제안을 사용하여 준비된 작업을 시작합니다. 실패 처리에 실패한 작업을 다시 시작하고 타락한 것으로 결정된 작업을 종료하는 것이 포함됩니다.

위의 다이어그램은 meson을 보여줍니다’S 아키텍처. Meson Team은 현재 Fenzo Scheduling Library를 사용하여 스케줄링 기능을 향상시키기 위해 노력하고 있습니다.

Apache Mesos와의 지속적인 작업

Netflix Studio Search : Elasticsearch 및 Apache Flink 사용을 사용하여 Federated GraphQL 데이터를 색인

Netflix Engineers는 최근 Apache Kafka Streams, Apache Flink 기반 Data Mesh 프로세스 및 Elasticsearch 싱크대를 사용하여 Studio Search를 구축 한 방법을 최근에 게시했습니다. 그들은 Netflix의 Federated GraphQL 그래프의 일부를 취하고 검색 가능하게하도록 플랫폼을 설계했습니다. 오늘날 Studio Search는 조직 내의 많은 응용 프로그램에 대해 사용자 경험의 상당 부분을 차지합니다.

Netflix의 컨텐츠 엔지니어링에서 각 팀은 독립적으로 도메인 그래프 서비스 (DGS)를 구축하고 운영하며 동시에 페더레이션 게이트웨이에 의해 노출 된 통합 된 그래프QL 스키마에 도메인을 다른 도메인과 연결합니다. 이 구조를 감안할 때 Netflix 엔지니어 Alex Hutter, Falguni Jhaveri 및 Senthil Sayeeebaba는 스튜디오 검색의 동기를 설명합니다

일단 엔티티 [. ] 그래프에서 사용할 수 있으며 사람들이 관련 엔티티의 속성을 기반으로 특정 엔터티를 쿼리하고자하는 것이 매우 일반적입니다.g. 라이언 레이놀즈 (Ryan Reynolds)와 배우로 현재 사진을 찍고있는 모든 영화 줘.

사용자가 검색하고자하는 그래프의 링크 된 엔티티의 예
출처 : https : // netflixtechblog.com/how-netflix-content-engineering-makes-a-federated-graph-searchable-5c0c1c7d7 afe

저자에 따르면, 연합 그래프 아키텍처에서, 각 서비스는 “서비스가 소유하지 않는 데이터에 적용 할 수있는 쿼리와 필터를 수용하는 엔드 포인트를 제공해야합니다 그리고 그것들을 사용하여 반환 해야하는 적절한 엔티티를 식별하십시오. 더 나쁜 것은 “모든 단체 소유의 서비스는이 작업을 수행해야 할 수 있습니다.”Federated Graph를 검색 할 수있는이 일반적인 문제는 스튜디오 검색을 만들었습니다.

스튜디오 검색 인덱싱 아키텍처
출처 : https : // netflixtechblog.com/how-netflix-content-engineering-makes-a-federated-graph-searchable-5c0c1c7d7 afe

위의 다이어그램은 Studio Search의 아키텍처와 연합 그래프의 일부에 대한 색인을 유지하는 방법을 보여줍니다. 응용 프로그램 이벤트 및 변경 데이터 캡처 (CDC) 이벤트는 스키미 화 된 Kafka 스트림으로 스트리밍됩니다. Apache Flink의 데이터 메쉬 프로세스는 이러한 이벤트를 소비하고 Federated Gateway에 대한 사용자 제공 GraphQL 쿼리를 사용하여 데이터를 풍부하게합니다. 가져 오는 문서는 데이터 메쉬의 Elasticsearch Sink에서 처리하기 전에 다른 스키미 화 된 Kafka 주제에 넣습니다.

팀은 조기에 수작업으로 통합을했지만 스튜디오 검색과 통합 요청으로 인해 침수되어 확장되지 않았습니다. “우리는 가능한 한 파이프 라인의 프로비저닝을 자동화 할 수 있도록 도구를 구축해야했습니다.”

자동화를 허용하기 위해 팀은 사용자가 파이프 라인에 대한 높은 수준의 설명을 제공 할 수있는 단일 YAML 구성 파일을 정의했습니다. 그들은이 구성을 사용하여 데이터 메시에서 인덱싱 파이프 라인을 프로그래밍 방식으로 생성합니다.

견본 .YAML 구성
출처 : https : // netflixtechblog.com/how-netflix-content-engineering-makes-a-federated-graph-searchable-5c0c1c7d7 afe

구성 파일의 GraphQL 쿼리 템플릿에서 팀은 스키미 화 된 Kafka 스트림 및 Elasticsearch에 필요한 인덱스 템플릿에 필요한 Apache Avro 스키마를 생성합니다. 마지막으로, 셀프 서비스 배포는 Python 기반 명령 줄 인터페이스 (CLI) 도구를 통해 가능합니다.

팀이 현재 직면하는 과제는 시스템에 과부하가 걸리지 않고 새로운 인덱스를 부트 스트랩하는 방법, 리버스 조회 사용 개선, 그리고 오래된 또는 누락 된 데이터에 대한 인덱스 일관성 및 공차가 향상되는 방법입니다.

Netflix는 Apache를 사용합니까??

об йтоэ странице

м е р р регистрировали подо 착취 ay rzа ф징퍼, исход 넘추 타 ay сети. с пом거나 ю это인지 страницы м주는 сможем определить, что з просы отправляете именно, а не робот. почему это могло произойти?

эта страница отобр은 Âется в тех Â сл 나아가 · 추, ∈огда автомати인지 скими системи Google регтрирр곽막우 ся 테 추 법구추 추 님. котор ое нарушают условия использования. странира перестанет отобр은 жаться после того, как эти запросы прекратся. до отого момента для использования слу 갑기 Google необ 영향.

источником запросов может служить вредоносное по, подключаемые модули браузера или скрипт, насое 밑 밑 밑보관 сзлку ыапросов. если вл используете общий доступ в интернет, проблема 갑새 갑새 딘 악 с сомпером с с с с с саким 테 IP-адесом → Â 궤. обратитесь к своему системному администратору. подроб 변태.

проверка по слову может татак뿐 아니라 자기 появляться, если вы В 갑 갑격적 В Â водите слож ные запросы, об협 ораспронон혁 ™ rапротототототототото술도 있습니다. емами, или вводите запросы очень часто.

Netflix는 Apache를 사용합니까??

об йтоэ странице

м е р р регистрировали подо 착취 ay rzа ф징퍼, исход 넘추 타 ay сети. с пом거나 ю это인지 страницы м주는 сможем определить, что з просы отправляете именно, а не робот. почему это могло произойти?

эта страница отобр은 Âется в тех Â сл 나아가 · 추, ∈огда автомати인지 скими системи Google регтрирр곽막우 ся 테 추 법구추 추 님. котор ое нарушают условия использования. странира перестанет отобр은 жаться после того, как эти запросы прекратся. до отого момента для использования слу 갑기 Google необ 영향.

источником запросов может служить вредоносное по, подключаемые модули браузера или скрипт, насое 밑 밑 밑보관 сзлку ыапросов. если вл используете общий доступ в интернет, проблема 갑새 갑새 딘 악 с сомпером с с с с с саким 테 IP-адесом → Â 궤. обратитесь к своему системному администратору. подроб 변태.

проверка по слову может татак뿐 아니라 자기 появляться, если вы В 갑 갑격적 В Â водите слож ные запросы, об협 ораспронон혁 ™ rапротототототототото술도 있습니다. емами, или вводите запросы очень часто.