Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wskazówka
Ta zawartość jest fragmentem e-książki, Architektura Cloud Native .NET Applications for Azure, dostępnej w .NET Docs lub jako bezpłatny plik PDF do pobrania, który można czytać 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 zagadnieniami przekrojowymi. 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 instancja serwera proxy jest zazwyczaj umieszczana razem z każdą mikrousługą. Mimo że są wykonywane w osobnych procesach, są ściśle połączone i dzielą 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, Service Mesh zapewnia wsparcie dla odkrywania 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 front-end komunikują się z mikrousługami back-end. 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ólny nacisk położono na zarządzane usługi platformy Azure, które mogą pomóc w implementacji komunikacji w systemach natywnych dla chmury.
- Azure Application Gateway
- Azure API Management
- Azure SignalR Service
- Kolejki usługi Azure Storage
- Azure Service Bus
- Azure Event Grid
- Centrum zdarzeń platformy Azure
Następnie przejdziemy do danych rozproszonych w systemach natywnych dla chmury oraz korzyści i wyzwania, które przedstawia.