Udostępnij przez


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 podejmowania zamierzonych kompromisów w ramach obciążeń i optymalizowania 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 ś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ą. Wynikowe usługi pomocnika 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 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.
Grodzi Wprowadza zamierzone i kompletne segmentację między składnikami w celu odizolowania promienia wybuchu awarii. Ta strategia izolacji błędów próbuje zawierać błędy tylko do grodzi, które napotyka problem, uniemożliwiając wpływ 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 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 błędów. Możesz również użyć tego wzorca, aby wyzwolić łagodne obniżenie obciążenia. Wyłączniki są często połączone z automatycznym odzyskiwaniem, aby zapewnić zarówno samozaprawianie, jak i samonaprawianie.
Sprawdzanie oświadczenia Oddziela dane od przepływu obsługi 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 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 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 niezmienialnym 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 do zarządzania użytkownikami i zapewnienia uwierzytelniania dla aplikacji. Odciążanie zarządzania użytkownikami i uwierzytelniania zmienia niezawodność tych składników na dostawcę 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 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 uwidacznianie punktu końcowego przeznaczonego specjalnie do tego celu. Za pomocą tego punktu końcowego można zarządzać kondycją obciążenia oraz alertami i pulpitami nawigacyjnymi. Można go również użyć jako sygnału do samonaprawiania korygowania.
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 wzorzec zmniejsza wpływ awarii węzła przez niezawodne przekierowywanie pracy. Implementuje również tryb failover za pośrednictwem algorytmów konsensusu w przypadku 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 priorytcie są przetwarzane i wykonywane przed elementami o niższym priorytekcie. 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ę klient-usługa lub klient-usługa z komunikacją za pośrednictwem pośredniego brokera komunikatów lub magistrali zdarzeń.
Queue-Based bilansowanie obciążenia Steruje poziomem przychodzących żądań 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 przybycia zadań z ich przetwarzania. Może również odizolować 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 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 rozproszone saga 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ść. Ponieważ transakcje monolityczne w wielu systemach rozproszonych są zwykle niemożliwe, ten wzorzec zapewnia spójność i niezawodność przez zaimplementowanie niepodzielności i kompensacji.
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: