Infrastruktura komunikacji z siatką usług
Napiwek
Ta zawartość jest fragmentem książki eBook, Architekting Cloud Native .NET Applications for Azure, dostępnej na platformie .NET Docs lub jako bezpłatny plik PDF do pobrania, który można odczytać w trybie offline.
W tym rozdziale omówiliśmy wyzwania związane z komunikacją mikrousług. Powiedzieliśmy, że zespoły programistyczne muszą być wrażliwe na to, jak usługi zaplecza komunikują się ze sobą. W idealnym przypadku tym mniej komunikacji między usługami tym lepiej. Jednak unikanie nie zawsze jest możliwe, ponieważ usługi zaplecza często polegają na sobie, aby wykonywać operacje.
Poznaliśmy różne podejścia do implementowania synchronicznej komunikacji HTTP i asynchronicznej obsługi komunikatów. W każdym z przypadków deweloper jest obciążony implementacją kodu komunikacyjnego. Kod komunikacji jest złożony i czasochłonny. Nieprawidłowe decyzje mogą prowadzić do poważnych problemów z wydajnością.
Bardziej nowoczesne podejście do mikrousług komunikacyjnych koncentruje się wokół nowej i szybko rozwijającej się technologii zatytułowanej Service Mesh. Siatka usług to konfigurowalna warstwa infrastruktury z wbudowanymi funkcjami obsługi komunikacji między usługami, odpornością i wieloma problemami dotyczącymi krzyżowego cięcia. Przenosi on odpowiedzialność za te obawy poza mikrousługi i do warstwy siatki usług. Komunikacja jest abstrahowana od mikrousług.
Kluczowym składnikiem siatki usług jest serwer proxy. W aplikacji natywnej dla chmury wystąpienie serwera proxy jest zwykle współlokowane z każdą mikrousługą. Chociaż są one wykonywane w osobnych procesach, te dwa są ściśle połączone i współużytkują ten sam cykl życia. Ten wzorzec, znany jako wzorzec przyczepki i jest wyświetlany na rysunku 4–24.
Rysunek 4–24. Siatka serwisowa z samochodem bocznym
Zwróć uwagę na to, jak komunikaty są przechwytywane przez serwer proxy, który działa obok każdej mikrousługi. Każdy serwer proxy można skonfigurować przy użyciu reguł ruchu specyficznych dla mikrousługi. Rozumie komunikaty i może kierować je między usługami i światem zewnętrznym.
Oprócz zarządzania komunikacją między usługami usługa Service Mesh zapewnia obsługę odnajdywania i równoważenia obciążenia usług.
Po skonfigurowaniu siatka usług jest wysoce funkcjonalna. Siatka pobiera odpowiednią pulę wystąpień z punktu końcowego odnajdywania usługi. Wysyła żądanie do określonego wystąpienia usługi, rejestrując opóźnienie i typ odpowiedzi wyniku. Wybiera wystąpienie, które najprawdopodobniej zwróci szybką odpowiedź na podstawie różnych czynników, w tym zaobserwowanego opóźnienia dla ostatnich żądań.
Siatka usług zarządza ruchem, komunikacją i siecią na poziomie aplikacji. Rozumie komunikaty i żądania. Siatka usług zwykle integruje się z orkiestratorem kontenerów. Platforma Kubernetes obsługuje rozszerzalną architekturę, w której można dodać siatkę usług.
W rozdziale 6 szczegółowo omówimy technologie usługi Service Mesh, w tym dyskusję na temat jej architektury i dostępnych implementacji typu open source.
Podsumowanie
W tym rozdziale omówiliśmy wzorce komunikacji natywne dla chmury. Zaczęliśmy od zbadania sposobu, w jaki klienci frontonu komunikują się z mikrousługami zaplecza. Po drodze omówiliśmy platformy usługi API Gateway i komunikację w czasie rzeczywistym. Następnie przyjrzeliśmy się, jak mikrousługi komunikują się z innymi usługami zaplecza. Przyjrzeliśmy się zarówno synchronicznej komunikacji HTTP, jak i asynchronicznej komunikacji między usługami. Omówiliśmy gRPC, nadchodzącą technologię w świecie natywnym dla chmury. Na koniec wprowadziliśmy nową i szybko rozwijającą się technologię zatytułowaną Service Mesh, która może usprawnić komunikację mikrousług.
Szczególnym naciskiem na zarządzane usługi platformy Azure, które mogą pomóc w zaimplementowaniu komunikacji w systemach natywnych dla chmury:
- Usługa Azure Application Gateway
- Azure API Management
- Usługa Azure SignalR Service
- Kolejki usługi Azure Storage
- Azure Service Bus
- Azure Event Grid
- Azure Event Hub
Następnie przejdziemy do danych rozproszonych w systemach natywnych dla chmury oraz korzyści i wyzwania, które przedstawia.