Wzorce projektowe architektury, które obsługują niezawodność

Podczas projektowania architektur obciążeń należy używać wzorców branżowych, które odpowiadają typowym wyzwaniom. Wzorce mogą pomóc w podejmowaniu zamierzonych kompromisów w odniesieniu do obciążeń i optymalizowaniu pod kątem pożądanego wyniku. Mogą również pomóc w ograniczeniu ryzyka wynikającego z określonych problemów, które mogą mieć wpływ na bezpieczeństwo, wydajność, koszty i operacje. Jeśli nie zostanie to złagodzone, te zagrożenia w końcu spowodują problemy z niezawodnością. Te wzorce są wspierane przez środowisko rzeczywiste, są przeznaczone dla modeli operacyjnych i skalowania w chmurze i są z natury niezależne od dostawcy. Używanie dobrze znanych wzorców jako sposobu standaryzacji projektu obciążenia jest składnikiem doskonałości operacyjnej.

Wiele wzorców projektowych bezpośrednio obsługuje jeden lub więcej filarów architektury. Wzorce projektowe obsługujące filar niezawodności ustalają priorytety dostępności obciążeń, samozachowawania, odzyskiwania, integralności danych i przetwarzania oraz ograniczania awarii.

W poniższej tabeli przedstawiono podsumowanie wzorców projektowych architektury, które obsługują cele niezawodności.

Wzór Podsumowanie
Ambasador Hermetyzuje komunikację sieciową i zarządza nią przez odciążanie zadań krzyżowych związanych z komunikacją sieciową. Usługi pomocnicze inicjują komunikację w imieniu klienta. Ten punkt korygowania umożliwia dodanie wzorców niezawodności do komunikacji sieciowej, takich jak ponawianie prób lub buforowanie.
Zaplecza dla Frontendów Indywidualizuje warstwę usługową obciążenia, tworząc oddzielne usługi, które są przeznaczone wyłącznie dla określonego interfejsu frontend. Z powodu tej separacji awaria w warstwie usługi, która obsługuje jednego klienta, może nie mieć wpływu na dostępność dostępu innego klienta. W przypadku różnego traktowania różnych klientów można określić priorytety wysiłków związanych z niezawodnością na podstawie oczekiwanych wzorców dostępu klientów.
Grodzi Wprowadza zamierzone i kompletne segmentację między składnikami w celu odizolowania promienia wybuchu awarii. Ta strategia izolacji błędów próbuje ograniczać błędy tylko do grodzi, w której występuje problem, zapobiegając wpływowi na inne grodzie.
Cache-Aside Optymalizuje dostęp do często odczytywanych danych, wprowadzając pamięć podręczną wypełnioną na żądanie. Pamięć podręczna jest następnie używana na kolejnych żądaniach dla tych samych danych. Buforowanie tworzy replikację danych i w ograniczony sposób może służyć do zachowania dostępności często używanych danych, jeśli magazyn danych pochodzenia jest tymczasowo niedostępny. Ponadto w przypadku awarii pamięci podręcznej obciążenie może wrócić do magazynu danych pochodzenia.
Wyłącznik Zapobiega ciągłym żądaniom do nieprawidłowej lub niedostępnej zależności. W ten sposób ten wzorzec uniemożliwia przeciążenie zależności powodującej błędy. Możesz również użyć tego wzorca, aby wyzwolić łagodne obniżenie obciążenia. Wyłączniki są często łączone z automatycznym przywracaniem, aby zapewnić zarówno samoochronę, jak i samonaprawę.
Potwierdzenie odbioru Oddziela dane od przepływu komunikatów, zapewniając sposób oddzielnego pobierania danych związanych z komunikatem. Magistrale komunikatów nie zapewniają tej samej niezawodności i odzyskiwania po awarii, które są często obecne w dedykowanych magazynach danych, więc oddzielenie danych od komunikatu może zapewnić zwiększoną niezawodność bazowych danych. Ta separacja umożliwia również podejście do odzyskiwania kolejki komunikatów po awarii.
Transakcja wyrównywająca Zapewnia mechanizm odzyskiwania po awariach przez odwrócenie skutków poprzednio zastosowanych akcji. Ten wzorzec rozwiązuje awarie w krytycznych ścieżkach obciążenia przy użyciu akcji kompensacji, które mogą obejmować procesy, takie jak bezpośrednie wycofywanie zmian danych, przerywanie blokad transakcji, a nawet wykonywanie natywnych zachowań systemowych w celu odwrócenia efektu.
Konkurujący konsumenci Stosuje rozproszone i współbieżne przetwarzanie, aby efektywnie obsługiwać elementy w kolejce. Ten model tworzy nadmiarowość w procesie przetwarzania kolejek, traktując konsumentów jako repliki, więc awaria instancji nie uniemożliwia innym konsumentom przetwarzania komunikatów w kolejce.
Konfiguracja obciążenia usługi Edge Zarządza konfiguracją rozproszonych obciążeń brzegowych, traktując chmurę jako główne źródło prawdy, jednocześnie zapewniając dostępność konfiguracji lokalnie podczas zakłóceń łączności. Ten wzorzec zwiększa niezawodność, obsługując uzgadnianie konfiguracji, wykrywanie dryfu i wycofywanie w celu odzyskania po częściowych aktualizacjach lub nieprawidłowych konfiguracjach.
Śledzenie zdarzeń Traktuje proces zmiany stanu jako serię zdarzeń, rejestrując je w niezmiennym dzienniku dołączalnym. Tego wzorca można użyć, gdy niezawodna historia zmian ma kluczowe znaczenie w złożonym procesie biznesowym. Ułatwia również rekonstrukcję stanu, jeśli trzeba odzyskać składy stanu.
Tożsamość federacyjna Delegowanie zaufania do zewnętrznego dostawcy tożsamości w celu zarządzania użytkownikami i zapewnienia uwierzytelniania dla aplikacji. Odciążenie zarządzania użytkownikami i uwierzytelniania przenosi odpowiedzialność za niezawodność tych składników na dostawcę tożsamości, który zwykle oferuje wysokie SLA. Ponadto podczas odzyskiwania po awarii obciążenia składniki uwierzytelniania prawdopodobnie nie muszą być uwzględniane w ramach planu odzyskiwania obciążenia.
Agregacja bram Upraszcza interakcje klientów z obciążeniem przez agregowanie wywołań do wielu usług zaplecza w jednym żądaniu. Ta topologia umożliwia przeniesienie obsługi błędów przejściowych z implementacji rozproszonej między klientami do scentralizowanej implementacji.
Odciążanie bramy Odciąża przetwarzanie żądań do urządzenia bramy sieciowej przed i po przekazaniu żądania do węzła zaplecza. Przekładanie tej odpowiedzialności na bramę zmniejsza złożoność kodu aplikacji na węzłach zaplecza. W niektórych przypadkach odciążanie całkowicie zastępuje funkcjonalność funkcją zapewnianą przez niezawodną platformę.
Routing bramy sieciowej Kieruje przychodzące żądania sieciowe do różnych systemów zaplecza na podstawie intencji żądań, logiki biznesowej i dostępności zaplecza. Routing bramy sieciowej pozwala kierować ruch wyłącznie do węzłów, które są w dobrym stanie w systemie.
Geoda Wdraża systemy działające w trybach dostępności aktywne-aktywne w wielu lokalizacjach geograficznych. Ten wzorzec używa replikacji danych do obsługi idei, że każdy klient może nawiązać połączenie z dowolną lokalizacją geograficzną. Może to pomóc obciążeniu wytrzymać jedną lub więcej awarii regionalnych.
Monitorowanie kondycji punktów końcowych Umożliwia monitorowanie kondycji lub stanu systemu przez uwidacznianie punktu końcowego przeznaczonego specjalnie do tego celu. Można użyć tego punktu końcowego do monitorowania stanu obciążenia oraz do alertowania i korzystania z paneli sterowania. Można również użyć go jako sygnału do samonaprawy.
Tabela indeksów Optymalizuje pobieranie danych w rozproszonych magazynach danych, umożliwiając klientom wyszukiwanie metadanych, dzięki czemu dane mogą być pobierane bezpośrednio, unikając konieczności wykonywania pełnego skanowania magazynu danych. Ponieważ klienci są wskazywani na ich fragmenty, partycje lub punkt końcowy za pośrednictwem procesu wyszukiwania, można użyć tego wzorca, aby ułatwić przejście w tryb failover na potrzeby dostępu do danych.
Wybory lidera Ustanawia lidera wystąpień aplikacji rozproszonej. Lider koordynuje obowiązki związane z osiągnięciem celu. Ten schemat łagodzi skutki awarii węzła poprzez niezawodne przekierowanie pracy. Dodatkowo implementuje tryb failover za pomocą algorytmów konsensusu w razie awarii lidera.
Potoki i filtry Dzieli złożone przetwarzanie danych na szereg niezależnych etapów w celu osiągnięcia określonego wyniku. Pojedyncza odpowiedzialność każdego etapu umożliwia skoncentrowanie uwagi i pozwala uniknąć rozproszenia procesów przetwarzania danych.
Kolejka priorytetowa Gwarantuje, że elementy o wyższym priorytecie są przetwarzane i wykonywane przed elementami o niższym priorytecie. Oddzielenie elementów na podstawie priorytetu biznesowego umożliwia skoncentrowanie wysiłków związanych z niezawodnością na najbardziej krytycznej pracy.
Wydawca/Subskrybent Rozdziela składniki architektury, zastępując bezpośrednią komunikację między klientem a usługą lub usługami komunikacją poprzez pośredniego brokera komunikatów lub magistralę zdarzeń.
Równoważenie obciążenia oparte na kolejkach Steruje natężeniem przychodzących żądań lub zadań przez buforowanie ich w kolejce i umożliwienie procesorowi kolejkowemu obsługi ich w kontrolowanym tempie. Takie podejście może zapewnić odporność na nagłe skoki zapotrzebowania, oddzielając napływ zadań od ich przetwarzania. Może również odizolować awarie przetwarzania kolejek, aby nie wpływały na przetwarzanie wejściowe.
Ograniczanie szybkości Steruje szybkością żądań klientów, aby zmniejszyć liczbę błędów ograniczania przepustowości i uniknąć niezwiązanych scenariuszy ponawiania prób w przypadku błędów. Ta taktyka chroni klienta, uznając ograniczenia i koszty komunikacji z usługą, gdy usługa została zaprojektowana w celu uniknięcia osiągnięcia określonych limitów. Działa on przez kontrolowanie liczby i/lub rozmiaru operacji wysyłanych do usługi w określonym przedziale czasu.
ponów próbę Rozwiązuje błędy, które mogą być przejściowe lub sporadycznie, ponawiając próby niektórych operacji w kontrolowany sposób. Łagodzenie błędów przejściowych w systemie rozproszonym jest kluczową techniką poprawy odporności obciążenia.
Transakcje saga rozproszone Koordynuje długotrwałe i potencjalnie złożone transakcje, rozkładając pracę na sekwencje mniejszych, niezależnych transakcji. Każda transakcja musi również mieć akcje wyrównywujące, aby odwrócić błędy w wykonaniu i zachować integralność. Ten wzorzec zapewnia spójność i niezawodność przez zaimplementowanie atomowości i kompensacji, ponieważ jednolite transakcje w wielu systemach rozproszonych są zwykle niemożliwe.
Nadzorca agenta harmonogramu Efektywnie dystrybuuje i redystrybuuje zadania w systemie na podstawie czynników, które można zaobserwować w systemie. Ten wzorzec używa metryk kondycji do wykrywania błędów i przekierowywania zadań do agenta w dobrej kondycji w celu ograniczenia skutków awarii.
Sekwencyjny konwój Obsługuje współbieżne przesyłanie komunikatów przychodzących, a jednocześnie obsługuje przetwarzanie w zdefiniowanej kolejności. Ten wzorzec może wyeliminować warunki wyścigu, które są trudne do rozwiązywania problemów, kontrowersyjnej obsługi komunikatów lub innych obejść dotyczących niepoprawnie uporządkowanych komunikatów, które mogą prowadzić do awarii.
Fragmentowanie Kieruje ładowanie do określonego logicznego miejsca docelowego w celu obsługi określonego żądania, włączając kolokację na potrzeby optymalizacji. Ponieważ dane lub przetwarzanie są odizolowane od fragmentu, awaria jednego fragmentu pozostaje odizolowana od tego fragmentu.
Strangler Fig Zapewnia podejście do systematycznego zastępowania składników działającego systemu nowymi składnikami, często podczas migracji lub modernizacji systemu. Podejście przyrostowe tego wzorca może pomóc w ograniczeniu ryzyka podczas przejścia.
Regulacja przepustowości Nakłada limity szybkości lub przepływności przychodzących żądań do zasobu lub składnika. Możesz zaprojektować limity, aby zapobiec wyczerpaniu zasobów, które mogą prowadzić do awarii. Możesz również użyć tego wzorca jako mechanizmu sterującego w bezproblemowym planie degradacji.

Dalsze kroki

Przejrzyj wzorce projektowe architektury, które obsługują inne filary platformy Azure Well-Architected Framework: