Wzorce projektowe chmury, 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 umyślnym kompromisie w ramach obciążeń i zoptymalizować pod kątem żą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 rzeczywiste środowisko, są przeznaczone do skalowania w chmurze i modeli operacyjnych i są z natury niezależne od dostawcy. Używanie dobrze znanych wzorców jako sposobu standaryzacji projektu obciążenia jest elementem doskonałości operacyjnej.

Wiele wzorców projektowych bezpośrednio obsługuje jeden lub więcej filarów architektury. Wzorce projektowe, które obsługują filar niezawodności priorytetyzują dostępność obciążeń, samozachowawność, odzyskiwanie, integralność danych i przetwarzania oraz powstrzymywanie awarii.

Wzorce projektowe pod kątem niezawodności

Poniższa tabela zawiera podsumowanie wzorców projektowych chmury, które obsługują cele niezawodności.

Wzorce Podsumowanie
Ambasador Hermetyzuje komunikację sieciową i zarządza nią przez odciążanie zadań przecinających, które są związane z komunikacją sieciową. Wynikowe usługi pomocnicze inicjują komunikację w imieniu klienta. Ten punkt mediacji umożliwia dodanie wzorców niezawodności do komunikacji sieciowej, takich jak ponawianie próby lub buforowanie.
Zaplecza dla frontonów Indywidualizuje warstwę usługi obciążenia, tworząc oddzielne usługi, które są przeznaczone wyłącznie dla określonego interfejsu frontonu. 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.
Gródź Wprowadza celową i kompletną segmentację między składnikami w celu odizolowania promienia wybuchu awarii. Ta strategia izolacji niepowodzeń próbuje zawierać błędy tylko grodzi, których dotyczy problem, zapobiegając wpływowi na inne grodzi.
Odkładanie do pamięci podręcznej 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 w kolejnych żądaniach dotyczących 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 błędów. Możesz również użyć tego wzorca, aby wyzwolić bezproblemowe obniżenie obciążenia. Wyłączniki są często połączone z automatycznym odzyskiwaniem w celu zapewnienia samozachowawczy i samonaprawiania.
Sprawdzanie oświadczenia Oddziela dane od przepływu obsługi komunikatów, zapewniając możliwość oddzielnego pobierania danych powiązanych z komunikatem. Magistrale komunikatów nie zapewniają takiej 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ć większą niezawodność bazowych danych. Ta separacja umożliwia również podejście do odzyskiwania kolejki komunikatów po awarii.
Transakcja wyrównująca Zapewnia mechanizm odzyskiwania po awariach przez odwrócenie skutków poprzednio zastosowanych akcji. Ten wzorzec usuwa 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 odbiorcy Stosuje rozproszone i współbieżne przetwarzanie, aby efektywnie obsługiwać elementy w kolejce. Ten model tworzy nadmiarowość w przetwarzaniu kolejek, traktując użytkowników jako repliki, więc awaria wystąpienia nie uniemożliwia innym użytkownikom przetwarzania komunikatów w kolejce.
Określanie źródła zdarzeń Traktuje zmianę stanu jako serię zdarzeń, przechwytując je w niezmiennym dzienniku tylko do dołączania. 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ć magazyny stanów.
Tożsamość federacyjna Delegowanie zaufania do dostawcy tożsamości zewnętrznego dla obciążenia na potrzeby zarządzania użytkownikami i zapewnienia uwierzytelniania dla aplikacji. Odciążanie zarządzania użytkownikami i uwierzytelniania zmienia niezawodność tych składników do dostawcy tożsamości, który zwykle ma wysoką umowę SLA. Ponadto podczas odzyskiwania po awarii obciążenia składniki uwierzytelniania prawdopodobnie nie muszą być uwzględniane w ramach planu odzyskiwania obciążenia.
Agregacja za pomocą bramy 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 przed przekazaniem żądania do węzła zaplecza i po nim. Odciążanie tej odpowiedzialności za bramę zmniejsza złożoność kodu aplikacji w węzłach zaplecza. W niektórych przypadkach odciążanie całkowicie zastępuje funkcjonalność funkcją zapewnianą przez niezawodną platformę.
Routing bramy Kieruje przychodzące żądania sieciowe do różnych systemów zaplecza na podstawie intencji żądań, logiki biznesowej i dostępności zaplecza. Routing bramy umożliwia kierowanie ruchu tylko do węzłów w dobrej kondycji w systemie.
Geodezja 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 idealnego, że każdy klient może nawiązać połączenie z dowolnym wystąpieniem geograficznym. Może to pomóc w obciążeniu wytrzymać co najmniej jedną awarię regionalną.
Monitorowanie punktu końcowego kondycji Umożliwia monitorowanie kondycji lub stanu systemu przez uwidocznianie punktu końcowego przeznaczonego specjalnie do tego celu. Ten punkt końcowy umożliwia zarządzanie kondycją obciążenia oraz alertami i pulpitami nawigacyjnymi. Można go również użyć jako sygnału do samonaprawiania korygowania.
Indeksowanie tabeli Optymalizuje pobieranie danych w rozproszonych magazynach danych, umożliwiając klientom wyszukiwanie metadanych w taki sposób, aby dane mogły być pobierane bezpośrednio, unikając konieczności wykonywania pełnego skanowania magazynu danych. Ponieważ klienci są wskazywani na ich fragment, partycję 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.
Wybór lidera Ustanawia lidera wystąpień aplikacji rozproszonej. Lider koordynuje obowiązki związane z osiągnięciem celu. Ten wzorzec zmniejsza wpływ awarii węzła przez niezawodne przekierowanie pracy. Implementuje również tryb failover za pośrednictwem algorytmów konsensusu, gdy lider działa nieprawidłowo.
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 pozwala skupić uwagę i unika rozpraszania uwagi podczas kompromitowania przetwarzania danych.
Kolejka priorytetowa Zapewnia, że elementy o wyższym priorytcie są przetwarzane i wykonywane przed elementami o niższym priorytcie. Rozdzielenie elementów na podstawie priorytetu biznesowego umożliwia skoncentrowanie wysiłków na niezawodności w najbardziej krytycznej pracy.
Wydawca/subskrybent Rozdziela składniki architektury, zastępując bezpośrednią komunikację klient-usługa lub klient-usługa z komunikacją za pośrednictwem pośredniego brokera komunikatów lub magistrali zdarzeń.
Wyrównywanie obciążeń przy użyciu kolejki Kontroluje poziom żądań przychodzących lub zadań przez buforowanie ich w kolejce i umożliwienie procesorowi kolejki obsługi ich w kontrolowanym tempie. Takie podejście może zapewnić odporność na nagłe skoki zapotrzebowania przez oddzielenie ich od przetwarzania zadań. Może również izolować awarie przetwarzania kolejek, aby nie wpływały na spożycie.
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 na błędach. 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.
Ponawianie próby Usuwa błędy, które mogą być przejściowe lub sporadycznie przez ponawianie 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 rozproszone Saga Koordynuje długotrwałe i potencjalnie złożone transakcje przez rozdzielenie pracy na sekwencje mniejszych, niezależnych transakcji. Każda transakcja musi również mieć akcje wyrównywujące, aby odwrócić błędy wykonywania i zachować integralność. Ponieważ transakcje monolityczne w wielu systemach rozproszonych są zwykle niemożliwe, ten wzorzec zapewnia spójność i niezawodność przez zaimplementowanie niepodzielności i rekompensaty.
Agent harmonogramu — nadzorca Efektywnie dystrybuuje i redystrybuuje zadania w systemie na podstawie czynników, które są widoczne 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 komunikaty przychodzące, 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.
Dzielenie na fragmenty Kieruje obciążenie do określonego miejsca docelowego logicznego 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.
Drzewo figowe 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.
Ograniczanie przepływności Nakłada limity szybkości lub przepływności żądań przychodzących do zasobu lub składnika. Możesz zaprojektować limity, aby zapobiec wyczerpaniu zasobów, które mogą prowadzić do awarii. Ten wzorzec można również użyć jako mechanizmu kontroli w bezproblemowym planie degradacji.

Następne kroki

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