Service Mesh bez konfiguracji w serwisie Netflix

Service Mesh bez konfiguracji w serwisie Netflix

Netflix nawiązał niedawno współpracę ze społecznością Envoy i firmą Kinvolk nad wdrożeniem nowej funkcji dla Envoy, serwera proxy typu open source opracowanego przez firmę Lyft. Ta nowa funkcja o nazwie On-Demand Cluster Discovery umożliwiła Netflix skonfigurowanie siatki usług bez konfiguracji.

IPC z Eureką

Komunikacja międzyprocesowa (IPC) odegrała kluczową rolę dla Netflix, odkąd w 2010 roku firma przeniosła całą swoją infrastrukturę do chmury (AWS). Netflix opracował platformę Eureka do wykrywania usług oraz wstążkę do komunikacji IPC w celu łatwego zarządzania IPC. Głównym celem Eureki jest maskowanie nazw usług docelowych wirtualnymi adresami IP (VIP) oraz, jeśli komunikacja musi być bezpieczna, bezpiecznymi wirtualnymi adresami IP (SVIP). Instancje klientów IPC tworzone są z docelowym VIP lub SVIP, a klient Eureka zajmuje się tłumaczeniem VIP lub SVIP i portu na zestaw adresów IP, pobierając informacje z serwera Eureka. Tworzy to jednak pojedynczy punkt awarii.

Przeprowadź migrację do siatki usług

Ta architektura działała dobrze przez dziesięciolecia, ale Netflix musiał przejść na usługę mesh z trzech głównych powodów:

  1. Różne technologie IPC: REST, graphQL i gRPC.
  2. Przejście od architektury opartej na Javie do architektury poliglotycznej.
  3. Dodaj funkcjonalność do klientów IPC.

Podjęto decyzję o wykorzystaniu Envoy do scentralizowania funkcjonalności IPC w jednej implementacji i uproszczenia obsługi klientów w poszczególnych językach. Dodatkowo Envoy obsługuje abstrakcję wykrywania, dzięki czemu klienci IPC mogą z niej nadal korzystać. Jednak określenie klastrów w konfiguracji proxy Envoy stało się problematyczne dla architektury Netflix, ponieważ usługa może potencjalnie komunikować się z tuzinem klastrów, które regularnie się zmieniają.

Rozwiązanie ODCDS

Netflix ocenił różne podejścia do rozwiązania tego problemu, ale żadne nie było idealne. Znaleziono rozwiązanie polegające na uzyskiwaniu informacji o klastrze na żądanie w czasie wykonywania. To rozwiązanie wymagało nowej funkcjonalności dla Envoy. Współpraca społeczności Envoy, Netflix i Kinvolk zaowocowała stworzeniem funkcji On-Demand Cluster Discovery (ODCDS). Serwery proxy mogą teraz wyszukiwać informacje o klastrze przy pierwszym połączeniu. Nowy przepływ wygląda następująco:

  1. Żądanie klienta dociera do Envoy.
  2. Klaster docelowy jest wyodrębniany na podstawie hosta. Jeśli klaster jest już znany, przejdź do kroku 7.
  3. Jeśli klaster nie istnieje, żądanie zostaje wstrzymane.
  4. Wyślij żądanie do platformy sterującej Cluster Discovery Service (CDS). Płaszczyzna kontroli generuje niestandardową odpowiedź CDS na podstawie konfiguracji usługi i informacji rejestracyjnych Eureka.
  5. Envoy odzyskuje klaster (CDS), co inicjuje odzyskiwanie punktu końcowego za pośrednictwem usługi Endpoint Discovery Service (EDS). Punkty końcowe klastra są zwracane na podstawie informacji o statusie Eureka dla tego adresu VIP lub SVIP.
  6. Żądanie klienta zostaje zwolnione.
  7. Envoy przetwarza żądanie w zwykły sposób: wybiera punkt końcowy za pomocą algorytmu równoważenia obciążenia i wysyła żądanie.

Ten przepływ jest wykonywany w milisekundach, ale istnieją przypadki użycia, w których usługi wymagają zmniejszonego opóźnienia. Obecne rozwiązania polegają na wstępnej konfiguracji klastrów, z którymi komunikują się usługi, lub nawiązywaniu wstępnych połączeń przed pierwszym żądaniem. Netflix i społeczność Envoy nadal współpracują nad udoskonalaniem Envoy.

Źródło: www.infoq.com

Avatar photo

Sylvain Métral

J'adore les séries télévisées et les films. Fan de séries des années 80 au départ et toujours accroc aux séries modernes, ce site est un rêve devenu réalité pour partager ma passion avec les autres. Je travaille sur ce site pour en faire la meilleure ressource de séries télévisées sur le web. Si vous souhaitez contribuer, veuillez me contacter et nous pourrons discuter de la manière dont vous pouvez aider.