Streszczenie:

Będziemy omawiać użycie elasticearch i apache flink do indeksowania danych Federated GraphQL w architekturze wyszukiwania Netflix Studio. W tym artykule obejmie koncepcję rozproszonego planowania zasobów z Apache Mesos i jego znaczenie w prowadzeniu różnych obciążeń. Będziemy również zbadać planowanie w chmurze za pomocą Apache Mesos i potrzebę menedżera zasobów w przydzielaniu zasobów na zadania. Ponadto podkreślmy wykorzystanie biblioteki planowania Fenzo i jej wkładu w efektywne planowanie zasobów. Na koniec zaprezentujemy trzy projekty obecnie działające klastry Apache Mesos w Netflix, w tym Mantis, reaktywna platforma przetwarzania strumieniowego.

Kluczowe punkty:

1. Rozproszone planowanie zasobów z Mesos Apache: Netflix wykorzystuje Mesos Apache do uruchamiania prac partii, przetwarzania strumienia i obciążeń w stylu serwisowym z drobnoziarnistym alokacją zasobów.

2. Zwiększenie przyjęcia kontenerów w planowaniu zasobów opartych na MESO: Kontenery napędzały użycie mesos do przetwarzania strumienia, zadań wsadowych i obciążeń w stylu usługowym.

3. Native Cloud Planowanie za pomocą Apache Mesos: Przydział zasobów jest oddzielony od planowania zadań za pomocą MESO, co pozwala dla różnych harmonogramów zaspokajania różnych przypadków użycia.

4. Zastosowanie Mesos Netflix w chmurowym środowisku natywnym: Netflix zapewnia, że ​​harmonogramy mogą obsłużyć zwiększoną efemeralność agentów i automatyczną klaster agenta MESOS na podstawie popytu.

5. Wprowadzenie biblioteki planowania Fenzo: Netflix wniósł Fenzo, bibliotekę planowania, która umożliwia zaawansowane planowanie zasobów i automatyczne automatyczne.

6. Mantis: reaktywna platforma przetwarzania strumienia: Mantis to usługa narodowa w chmurze do przetwarzania strumieniowego w czasie rzeczywistym, umożliwiającą przetwarzanie milionów zdarzeń na sekundę i uruchamianie różnych zadań przetwarzania strumienia.

7. Architektura platformy Mantis: Platforma Mantis obejmuje klaster główny i agenta, w którym użytkownicy przesyłają aplikacje przetwarzające strumień jako zadania.

Unikalne pytania:

  1. Jaka jest rola Mesos Apache w zarządzaniu obciążeniem Netflix?
    Apache Mesos umożliwia drobnoziarniste alokacja i planowanie zasobów dla mieszanki partii, przetwarzania strumienia i obciążeń w stylu serwisowym w Netflix.
  2. W jaki sposób Netflix obsługuje przyjęcie kontenerów w planowaniu zasobów opartych na MESOS?
    Netflix wykorzystuje kontenery do przetwarzania strumienia, zadań wsadniczych i obciążeń w stylu usług, napędzającym wykorzystanie klastrów MESOS.
  3. Jakie wyzwania stwarza dla harmonogramów natywnych w chmurze?
    Obsługa klastrów mesos w chmurowym środowisku wymaga obsługi zwiększonej efemeralności agentów i automatycznego sprawdzania klastra agenta Mesos na podstawie popytu.
  4. Dlaczego Netflix opracował bibliotekę planowania Fenzo?
    Netflix wprowadził bibliotekę harmonogramu Fenzo, aby zająć się luką w zakresie możliwości między istniejącymi harmonogramami, umożliwiając zaawansowane planowanie zasobów i autoscaling w klastrach MESOS.
  5. Czym jest Mantis i jakie są jej przypadki użycia?
    Mantis to reaktywna platforma przetwarzania strumieniowego w Netflix, używana do pulpitu nawigacyjnego w czasie rzeczywistym, wykrywanie anomalii, generowanie metryczne i eksploracja danych strumieniowych ad hoc.
  6. Jak platforma Mantis obsługuje przetwarzanie milionów zdarzeń na sekundę?
    Platforma Mantis obejmuje klaster główny i agenta, w którym aplikacje przetwarzające strumień działają jako pracownicy. Pozwala to na wydajne przetwarzanie milionów zdarzeń na sekundę.
  7. Czy możesz podać przykład konkretnego zadania wykonania Mantis?
    Mantis przetwarza drobnoziarniste spostrzeżenia w celu wykrycia problemów z odtwarzaniem z określonymi tytułami, takimi jak House of Cards, sezon 4, odcinek 1 na iPadach w Brazylii.
  8. Jaki jest cel biblioteki planowania Fenzo na platformie Mantis?
    Biblioteka planowania fenzo jest używana na platformie Mantis do przypisywania zasobów do zadań na podstawie wielu celów planowania i obsługi autoskulowania klastra agenta.
  9. W jaki sposób Apache Mesos oddziela alokacja zasobów i planowanie zadań?
    Apache Mesos oddziela alokacja zasobów na ramy od planowania zasobów na zadania, umożliwiając różnym harmonogramom zaspokojenie różnych przypadków użycia.
  10. Które projekty w Netflix obecnie prowadzą klastry Apache Mesos?
    Trzy projekty obecnie prowadzące klastry Apache Mesos w Netflix to Mantis, Tytus i Spinaker.
  11. Co wyróżnia harmonogramy Mesos w środowisku narodowym w chmurze?
    Harmonogramy mesos w środowisku rodowym w chmurze muszą obsługiwać zwiększoną efemeralność agentów i autoScale Klaster agenta w oparciu o popyt.
  12. Jak Fenzo przyczynia się do planowania zasobów w Mesos?
    Fenzo zapewnia zaawansowane możliwości planowania zasobów, takie jak pakowanie kosza i rozprzestrzenianie się zadań w strefach dostępności. Umożliwia również wydajne skalowanie i zakończenie bezczynnych agentów.
  13. Jakie są przypadki użycia dla MESO w Netflix Engineering?
    Mesos jest wykorzystywany do wykrywania anomalii w czasie rzeczywistym, szkolenia i budynków modelowych, orkiestracji uczenia maszynowego i węzłów.Mikrooserwoi oparte na JS w Netflix.

Odpowiedzi:

  1. Apache Mesos odgrywa istotną rolę w zarządzaniu obciążeniem Netflix, umożliwiając przydział i planowanie zasobów w celu mieszanki partii, przetwarzania strumienia i obciążeń w stylu serwisowym. Umożliwia efektywne wykorzystanie zasobów przez zadania pakowania BIN do jednej instancji EC2, unikając nieoptymalnego użycia i niepotrzebnych instancji. Ponadto Mesos bezproblemowo integruje się z mikrousługami Netflix i ekosystemem AWS, zapewniając odkrycie usług, równoważenie obciążenia, monitorowanie i integracja z ich potokiem CI/CD, Spinnaker.
  2. Netflix obsługuje przyjęcie kontenerów w planowaniu zasobów opartych na MESO, wykorzystując korzyści płynące z kontenerów opartych na dokach. Kontenery były coraz częściej używane do przetwarzania strumienia, zadań wsadowych i obciążeń w stylu serwisowym w Netflix. Łatwość pracy z kontenerami doprowadziła do przyjęcia klastrów MESOS dla różnych przypadków użycia. Korzystając z kontenerów, Netflix osiąga lepszą izolację między obciążeniami, szybszym wdrażaniem i efektywnym wykorzystaniem zasobów.
  3. W środowisku natywnym w chmurze harmonogramy Mesos stoją przed wyzwaniami związanymi ze zwiększoną efemeralnością agentów i potrzebą automatyzowania klastra agenta Mesos na podstawie popytu. Elastyczne środowisko chmury Netflix na AWS EC2 wymaga harmonogramu obsługi dynamicznego charakteru chmury, w której instancje mogą być często zakończone lub dodawane. Harmonogramów muszą szybko zareagować na te zmiany i odpowiednio przydzielić zasoby. Netflix zajął się tymi wyzwaniami, opracowując bibliotekę harmonogramu Fenzo, która obsługuje automatyczne i wydajne alokacja zasobów w oparciu o różne cele i ograniczenia planowania.
  4. Netflix opracował bibliotekę planowania Fenzo, aby zająć się konkretnymi wymaganiami i wyzwaniami w ich środowisku natywnym w chmurze. W istniejących harmonogramach brakowało zaawansowanych możliwości planowania zasobów, takich jak pakowanie kosza i rozprzestrzenianie się zadań w strefach dostępności EC2. Fenzo umożliwia użytkownikom zdefiniowanie wielu celów i ograniczeń planowania, umożliwiając wydajne alokacja zasobów na zadania, minimalizowanie fragmentacji i optymalizację wykorzystania zasobów. Biblioteka jest rozszerzona przez wtyczki, z wbudowanymi implementacjami dla wspólnych celów planowania. Ten wkład Netflix poprawił zarządzanie zasobami i planowanie w klastrach Apache Mesos.
  5. Mantis to reaktywna platforma przetwarzania strumieni w Netflix zaprojektowana do obsługi operacyjnych strumieni danych. Zapewnia różne przypadki użycia, w tym pulpit nawigacyjny w czasie rzeczywistym, ostrzeganie, wykrywanie anomalii, generowanie metryczne i interaktywne badanie danych strumieniowych. Platforma umożliwia zespołom łatwy dostęp do wydarzeń w czasie rzeczywistym i budowanie aplikacji na nich. Mantis jest w stanie przetworzyć do 8 milionów zdarzeń na sekundę i jednocześnie uruchamiać wiele zadań przetwarzających strumień. Platforma nieustannie śledzi miliony unikalnych kombinacji danych, zapewniając drobnoziarniste spostrzeżenia.
  6. Platforma Mantis składa się z mistrza i klastra agenta. Użytkownicy mogą przesyłać aplikacje przetwarzające strumień jako zadania, które są wykonywane przez jednego lub więcej pracowników w klastrze agenta. Komponent główny wykorzystuje bibliotekę planowania fenzo do wydajnego alokacji zasobów i przypisania zadań. Ta architektura pozwala Mantis obsłużyć przetwarzanie milionów zdarzeń na sekundę poprzez rozkład obciążenia między wieloma pracownikami działającymi na osobnych agentach. Platforma zapewnia wysoką dostępność, tolerancję błędów i skalowalność, umożliwiając sprawne wykonywanie zadań przetwarzania strumienia.
  7. Przykładem konkretnego zadania wykonanego przez Mantis jest śledzenie problemów z odtwarzaniem z konkretnym tytułem, takie jak House of Cards, sezon 4, odcinek 1 na iPadach w Brazylii. Mantis przetwarza drobnoziarniste spostrzeżenia w celu wykrycia, czy występują jakieś problemy z odtwarzaniem dla milionów unikalnych kombinacji danych. To zadanie obejmuje monitorowanie zdarzeń odtwarzania w czasie rzeczywistym, analizę danych związanych z jakością odtwarzania, lokalizacjami użytkowników i typami urządzeń. Identyfikując i rozwiązywając problemy z odtwarzaniem, Mantis pomaga dostarczyć bezproblemowe wrażenia z oglądania użytkownikom Netflix.
  8. Biblioteka harmonogramu Fenzo odgrywa kluczową rolę w platformie Mantis, zapewniając zaawansowane możliwości planowania zasobów i umożliwiając automatyczne automatyczne. Fenzo przypisuje zasoby do zadań na podstawie wielu celów planowania, takich jak pakowanie kosza, które minimalizuje fragmentację zasobów. Wspiera także rozpowszechnianie zadań pracy w strefach dostępności EC2, zapewniając wysoką dostępność. Rozszerzalna architektura Fenzo pozwala użytkownikom definiować niestandardowe kryteria i ograniczenia fitness, umożliwiając drobnoziarnistą kontrolę nad alokacją zasobów. Ogólnie rzecz biorąc, Fenzo zwiększa wydajność, skalowalność i tolerancję błędów platformy Mantis.
  9. Apache Mesos oddziela alokacja zasobów i planowanie zadań, aby umożliwić elastyczność i zaspokoić różne przypadki użycia. Przydział zasobów jest obsługiwany przez MESOS Frameworks, które żądają zasobów z Mesos. Harmonogramy frameworków określają, które zasoby należy przypisać, które zadania i kiedy, na podstawie własnej logiki planowania. Mesos zapewnia stosunkowo prosty interfejs API dla harmonogramów do interakcji z podstawowym systemem zarządzania zasobami. Ta separacja pozwala różnym ramom na wdrożenie własnych harmonogramów, optymalizując alokacja zasobów dla ich konkretnych przypadków użycia, bez potrzeby MESO, aby być pojedynczym monolitycznym harmonogramem.
  10. Trzy projekty obecnie wykorzystują klastry Apache Mesos w Netflix: Mantis, Tytus i Spinaker. Mantis to reaktywna platforma przetwarzania strumieni dla strumieni danych w czasie rzeczywistym, podczas gdy Tytus zapewnia ścisłą integrację z mikrousługami Netflix i ekosystemem AWS. Spinaker to ciągła platforma dostarczania do wdrażania i zarządzania aplikacjami. Każdy projekt ma unikalne wymagania i przypadki użycia, wykorzystując możliwości Mesos Apache do wydajnego zarządzania zasobami, planowaniem obciążenia i skalowalności.
  11. Mesos Schedulers w środowisku rodowym w chmurze stoją przed wyzwaniami związanymi z dynamiczną naturą instancji w chmurze i wahaniami popytu. Harmonogramy narodowe w chmurze muszą obsłużyć efemeralność instancji, które mogą być często zakończone lub uruchamiane. Ponadto harmonogramy te muszą skutecznie skalować klaster agenta na podstawie popytu, aby zapewnić optymalne wykorzystanie zasobów. Zdolność do skutecznego zarządzania alokacją i rozważaniem zasobów, a także dostosowywanie się do zmian popytu, rozróżnia harmonogramy mesos w środowisku natywnym w chmurze.
  12. Biblioteka planowania Fenzo przyczynia się do planowania zasobów w MESO, zapewniając zaawansowane możliwości i rozszerzalność. Fenzo umożliwia wydajne pakowanie zadań w celu zminimalizowania fragmentacji i optymalizacji wykorzystania zasobów. Umożliwia także użytkownikom definiowanie niestandardowych kryteriów i ograniczeń fitness, umożliwiając wysoce konfigurowalną logikę alokacji zasobów. Uwzględniając Fenzo, klastry MESOS mogą skutecznie przypisywać zasoby do zadań, autoScale na podstawie popytu i zapewnić wysoką dostępność poprzez rozprzestrzenianie zadań w strefach dostępności.
  13. Apache Mesos jest wykorzystywany w Netflix Engineering do różnych przypadków użycia, w tym wykrywanie anomalii w czasie rzeczywistym, szkolenia i modelki budynków, orkiestracja uczenia maszynowego i działanie węzła.JS MicroServices. Mesos zapewnia elastyczną i skalowalną platformę, która umożliwia Netflix efektywne obsługę różnorodnych obciążeń. Wykorzystując funkcje przydziału i planowania zasobów MESOS, inżynierowie Netflix są w stanie uruchamiać złożone obciążenia w infrastrukturze rozproszonej.

Wyszukiwanie Netflix Studio: Korzystanie z ElasticSearch i Apache Flink do indeksowania danych Federated GraphQL

Powyższy schemat architektury dla Tytusa pokazuje swojego głównego za pomocą Fenzo do przypisywania zasobów od agentów Mesos. Tytus zapewnia ścisłą integrację z Netflix MicroServices i Ecosystem AWS, w tym integracje do wykrywania usług, bilansowanie obciążenia oparte na oprogramowaniu, monitorowanie oraz nasz rurociąg CI/CD, Spinaker. Możliwość pisania niestandardowych wykonawców w MESO pozwala nam łatwo dostroić czas wykonawczy pojemnika, aby dopasować się do reszty ekosystemu.

Planowanie zasobów rozproszonych z Mesos Apache

Netflix używa Mesos Apache do uruchamiania mieszanki prac partii, przetwarzania strumienia i obciążeń w stylu serwisowym. Od ponad dwóch lat obserwowaliśmy zwiększone wykorzystanie różnych przypadków użycia, w tym wykrywanie anomalii w czasie rzeczywistym, szkolenia i modelki budowlanej, orkiestracji uczenia maszynowego i węzłów.Mikroosłuje oparte na JS. Niedawna wersja Apache Mesos 1.0 reprezentuje dojrzałość technologii, która znacznie ewoluowała, odkąd zaczęliśmy z nią eksperymentować.

Nasze początkowe użycie Mesos Apache było motywowane przez drobnoziarniste alokację zasobów do zadań o różnych rozmiarach, które można pakować do pojedynczej instancji EC2. W przypadku braku mesos lub podobnego menedżera zasobów musielibyśmy zrezygnować z drobnoziarnistej alokacji dla zwiększonej liczby instancji z nieoptymalnym użyciem lub opracować technologię podobną do MESO, a przynajmniej pod wrażenie.

Rosnące przyjęcie kontenerów do przetwarzania strumienia i zadań wsadowych nadal napędza wykorzystanie w planowaniu zasobów opartych na MESOS. Niedawno programista korzysta z pracy z kontenerami opartymi na Docker, przyniosło zestaw obciążeń w stylu usług na klastrach Mesos. Prezentujemy tutaj przegląd niektórych projektów z wykorzystaniem Mesos Apache w Netflix Engineering. Pokazujemy różne przypadki użycia, które rozwiązują, i sposób, w jaki każdy z nich skutecznie używa technologii. Aby uzyskać więcej informacji na temat każdego z projektów, podajemy linki do innych postów w sekcjach poniżej.

Natywne harmonogram chmury za pomocą Apache Mesos

Aby przydzielić zasoby z różnych instancji EC2 na zadania, potrzebujemy menedżera zasobów, który udostępnia zasoby do planowania i przeprowadza logistykę uruchamiania i monitorowania zadań w rozproszonym zestawie instancji EC2. Apache Mesos oddziela przydział zasobów na “ramy” które chcą korzystać z klastra, od planowania zasobów po zadania przez ramy. Podczas gdy Mesos określa, ile zasobów jest przydzielanych do ram, ramy’Snorduler S określa, które zasoby należy przypisać, które zadania i kiedy. Harmonogramy przedstawiają stosunkowo prosty interfejs API, dzięki czemu mogą skupić się na logice planowania i reagować na awarie, które są nieuniknione w systemie rozproszonym. Umożliwia to użytkownikom pisanie różnych harmonogramów, które zaspokajają różne przypadki użycia, zamiast MESO, które muszą być pojedynczym monolitycznym harmonogramem dla wszystkich przypadków użycia. Poniższy schemat z dokumentacji MESOS pokazuje “Framework 1” otrzymanie oferty od “Agent 1” i uruchomienie dwóch zadań.

Społeczność Mesos widziała, jak wiele harmonogramów opracowało z czasem, które zaspokajają określone przypadki użycia i przedstawiają konkretne interfejsy API swoim użytkownikom.

Netflix obsługuje różne mikrousług w elastycznej chmurze, AWS EC2. Działające klastry MESO w środowisku natywnym w chmurze wymagało od nas upewnienia się, że harmonogramy mogą obsłużyć dwa aspekty oprócz tego, co robią harmonogramy działające w środowisku centralnym danych – zwiększona efemeralność agentów z zadaniami oraz możliwość automatycznego sprawdzania klastra agentów Mesos na podstawie popytu. Ponadto przypadki użycia, które mieliśmy na myśli, wymagały bardziej zaawansowanego planowania zasobów niż pierwszego przypisania. Na przykład pakowanie bin zadań do agentów za pomocą procesorów, pamięci i przepustowości sieci w celu zminimalizowania fragmentacji zasobów. Pakowanie kosza pomaga nam również zwolnić jak najwięcej agentów, aby zmniejszyć skalowanie klastra agentów, kończąc bezczynne agenty bez zakończenia zadań dotyczących uruchamiania.

Identyfikując lukę w takich możliwościach wśród istniejących harmonogramów, w ubiegłym roku wnieśliśmy bibliotekę planowania o nazwie Fenzo. Fenzo autoScales Klaster agenta w oparciu o popyt i przypisuje zasoby do zadań opartych na wielu celach planowania złożonych za pomocą kryteriów i ograniczeń fitness. Kryteria fitness i ograniczenia są rozszerzalne za pomocą wtyczek, z wbudowanymi kilkoma popularnymi implementacjami, takimi jak pakowanie pojemników i rozprzestrzenianie się zadań w strefach dostępności EC2 w celu uzyskania wysokiej dostępności. Wszelkie frameworka Mesos, które działają na JVM, może użyć biblioteki Fenzo Java.

Mesos w Netflix

Oto trzy projekty obecnie prowadzące klastry Apache Mesos.

Modliszka

Mantis to reaktywna platforma przetwarzania strumieni, która działa jako natywna usługa w chmurze, koncentrując się na operacyjnych strumieniach danych. Mantis obejmuje różnorodne przypadki użycia, w tym deski rozdzielcze w czasie rzeczywistym, ostrzeganie, wykrywanie anomalii, generowanie metryczne i interaktywne badanie danych strumieniowych ad-hoc. Stworzyliśmy Mantis, aby ułatwić zespołom uzyskanie dostępu do wydarzeń w czasie rzeczywistym i budowanie aplikacji na nich. Obecnie Mantis przetwarza strumienie zdarzeń do 8 milionów wydarzeń na sekundę i uruchamia setki zadań przetwarzających strumień przez całą dobę. Jedno z takich zadań koncentruje się na poszczególnych tytułach, przetwarzanie drobnoziarnistych spostrzeżeń, aby dowiedzieć się, czy na przykład istnieją problemy z odtwarzaniem z House of Cards, sezon 4, odcinek 1 na iPadach w Brazylii. Sprowadza się to do śledzenia milionów unikalnych kombinacji danych przez cały czas.

Platforma Mantis zawiera mistrz i klaster agenta. Użytkownicy przesyłają aplikacje przetwarzające strumień jako zadania, które działają jako jeden lub więcej pracowników w klastrze agenta. Master korzysta z biblioteki planowania Fenzo z Apache Mesos, aby optymalnie przypisać zasoby do zadania’S PRACOWNIKI. Jeden taki cel zadania umieszcza pracy na ciągłym przetwarzaniu strumieniowym agentom niezależnym od osób uruchomionych przejściowych interaktywnych zadań. Pomaga to zmniejszyć klaster agenta, gdy przejściowe zadania zakończą się. Poniższy schemat pokazuje architekturę Mantis. Pracownicy z różnych zadań mogą działać na tym samym agencie za pomocą izolacji zasobów opartych na CGroups.

Tytus

Tytus to platforma zarządzania zadaniami i wykonaniem kontenera Docker. Początkowo Tytus służył pracom wsadowym, które obejmowały szkolenie algorytmu (podobne tytuły zaleceń, analiza komórek testowych A/B itp.), a także godzinowe zgłaszanie i analiza ad hoc. Niedawno Titus zaczął obsługiwać zadania w stylu usług (Netflix MicroServices), które potrzebują spójnego lokalnego rozwoju, a także bardziej przełomowego zarządzania zasobami. Tytus’ Początkowe użycie stylu usługi służy do ponownej architektury API za pomocą nodeJS serwera.

Powyższy schemat architektury dla Tytusa pokazuje swojego głównego za pomocą Fenzo do przypisywania zasobów od agentów Mesos. Tytus zapewnia ścisłą integrację z Netflix MicroServices i Ecosystem AWS, w tym integracje do wykrywania usług, bilansowanie obciążenia oparte na oprogramowaniu, monitorowanie oraz nasz rurociąg CI/CD, Spinaker. Możliwość pisania niestandardowych wykonawców w MESO pozwala nam łatwo dostroić czas wykonawczy pojemnika, aby dopasować się do reszty ekosystemu.

Mezon

Meson to ramy Orkiestracji Work Cursestration i harmonogram.

Meson obsługuje heterogeniczną mieszankę miejsc pracy z różnymi wymaganiami dotyczącymi zasobów dla procesora, pamięci i przestrzeni dysku. Wspiera prowadzenie zadań Spark wraz z innymi pracami wsadowymi w klastrze udostępnionej. Zadania są izolowane zasobów na środkach za pomocą izolacji opartej na CGroups. Meson Scheduler ocenia gotowość zadań na podstawie wykresu i wprowadza gotowe zadania za pomocą ofert zasobów z Mesos. Obsługa awarii obejmuje ponowne uruchomienie nieudanych zadań, a także zakończenie zadań zdeterminowanych, aby zbłądzić.

Powyższy schemat pokazuje mezona’architektura s. Zespół Meson pracuje obecnie nad zwiększeniem swoich możliwości planowania za pomocą biblioteki planowania Fenzo.

Kontynuacja pracy z Apache Mesos

Wyszukiwanie Netflix Studio: Korzystanie z ElasticSearch i Apache Flink do indeksowania danych Federated GraphQL

Netflix Engineers niedawno opublikowali sposób, w jaki budowali wyszukiwanie studia, za pomocą Apache Kafka Streams, procesu o siatce opartej na flinkach Apache i zlewu ElasticSearch do zarządzania indeksem. Zaprojektowali platformę do wzięcia części Federated GraphQL Netflix i sprawić, że jest to wyszukiwanie. Dzisiaj Studio wyszukiwania zasila znaczną część doświadczenia użytkownika dla wielu aplikacji w organizacji.

W Netflix Content Engineering każdy zespół niezależnie buduje i obsługuje swoje usługi wykresu domen (DGS), a jednocześnie łączy swoją domenę z innymi domenami w ujednoliconym schemacie GraphQL ujawnionym przez federowaną bramę. Biorąc pod uwagę tę strukturę, inżynierowie Netflix Alex Hutter, Falguni Jhaveri i Senthil Sayeebaba wyjaśniają motywację do wyszukiwania studyjnego:

Kiedyś podmioty [. ] są dostępne na wykresie, bardzo często chcieliby zapytać o konkretny byt oparty na atrybutach powiązanych podmiotów, e.G. Daj mi wszystkie filmy, które są obecnie w fotografii z Ryanem Reynoldsem jako aktor.

Przykład połączonych jednostek na wykresie, który użytkownicy chcą przeszukać
Źródło: https: // netflixtechblog.com/how-netflix-content-ingineering-makes-a-federated-graph-searchable-5C0C1C7D7EAF

Według autorów, w architekturze wykresu federacyjnej każda usługa „musiałaby zapewnić punkt końcowy, który akceptuje zapytanie i filtry, które mogą mieć zastosowanie do danych, których usługa nie jest właścicielem i użyj ich do zidentyfikowania odpowiednich podmiotów, które powinien zwrócić. Gorzej: „Każda usługa posiadania jednostki może być zobowiązana do wykonania tej pracy.„Ten powszechny problem wykonania wykresu federacyjnego doprowadził do utworzenia wyszukiwania studyjnego.

Studio Wyszukaj architekturę indeksowania
Źródło: https: // netflixtechblog.com/how-netflix-content-ingineering-makes-a-federated-graph-searchable-5C0C1C7D7EAF

Powyższy schemat ilustruje architekturę Studio Search i sposób, w jaki utrzymuje indeks dla części wykresu federowanego. Zdarzenia aplikacji i Zmiana Zdarzenia przechwytywania danych (CDC) są przesyłane strumieniowo do schematów strumieni Kafka. Procesy siatki danych w Apache Flink zużywają te zdarzenia i wzbogacają dane za pomocą zapytań GraphQL za pomocą Federated Gateway. Pobrane dokumenty są umieszczane na innym schemacie tematu Kafka przed przetworzeniem przez zlew elasticsearch w siatce danych, który indeksuje je do elasticsearch.

Zespół wcześnie przeprowadził integracje, ale ponieważ został zalany z prośbami o zintegrowanie z wyszukiwaniem studyjnym, nie skali się skali. „Musieliśmy zbudować narzędzia, aby pomóc nam zautomatyzować jak najwięcej udostępniania rurociągów.”

Aby umożliwić automatyzację, zespół zdefiniował pojedynczy plik konfiguracyjny YAML, który umożliwił użytkownikom dostarczenie opisu na wysokim poziomie potoku. Używają tej konfiguracji z kolei do programistycznego tworzenia rurociągu indeksowania w siatce danych.

Próbka .Konfiguracja YAML
Źródło: https: // netflixtechblog.com/how-netflix-content-ingineering-makes-a-federated-graph-searchable-5C0C1C7D7EAF

Z szablonu zapytania GraphQL w pliku konfiguracyjnym zespoł. Wreszcie, wdrażanie samoobsługowe jest możliwe za pośrednictwem narzędzia interfejsu linii poleceń opartych na Python (CLI).

Wyzwania, przed którymi stoi obecnie zespół, to sposób ładowania nowego indeksu, jednocześnie nie przeciążając systemu, lepsze wykorzystanie odwrotnych wyszukiwań oraz lepszą spójność indeksu i tolerancję w stosunku do nieaktualnych lub brakujących danych.

Czy Netflix używa Apache?

Оjed

Ыы зарегистрир John. С помощю этой страницы ыы сожем оRipееделить, что запросы оRтравляете имено ыы, а не роvert. Почем это могло пRроизойиS?

Эта страница отображается тех слччаях, когда автоматическими системамgz которые наршают усовия исполззования. Страница перестанеura. До этого момента для исползования слжжж Google неоtoś.

Источником запросов может слжить ведоносное по, подкbarów. ыылку заRzy. Еarag ы исползеете общий доступ и интернет, проблема может ыть с компюююеyn с таким жж жж жесом, кк у комszczeюююе000. Обратитеunks к соем системном адинистратору. Подроlit.

Проверка по слову может также появаятьenia, еaсли ы водите сложные ззапры, оind обычно enia оиизи инenia оtoś еами, или же водите заlektora.

Czy Netflix używa Apache?

Оjed

Ыы зарегистрир John. С помощю этой страницы ыы сожем оRipееделить, что запросы оRтравляете имено ыы, а не роvert. Почем это могло пRроизойиS?

Эта страница отображается тех слччаях, когда автоматическими системамgz которые наршают усовия исполззования. Страница перестанеura. До этого момента для исползования слжжж Google неоtoś.

Источником запросов может слжить ведоносное по, подкbarów. ыылку заRzy. Еarag ы исползеете общий доступ и интернет, проблема может ыть с компюююеyn с таким жж жж жесом, кк у комszczeюююе000. Обратитеunks к соем системном адинистратору. Подроlit.

Проверка по слову может также появаятьenia, еaсли ы водите сложные ззапры, оind обычно enia оиизи инenia оtoś еами, или же водите заlektora.