Wzorzec sprawdzania oświadczeń

Azure Event Grid
Azure Blob Storage

Wzorzec sprawdzania oświadczeń umożliwia obciążeniom transferowanie ładunków bez przechowywania ładunku w systemie obsługi komunikatów. Wzorzec przechowuje ładunek w zewnętrznym magazynie danych i używa "sprawdzania oświadczenia", aby pobrać ładunek. Sprawdzanie oświadczeń jest unikatowym, niejasnym tokenem lub kluczem. Aby pobrać ładunek, aplikacje muszą przedstawić token sprawdzania oświadczeń zewnętrznemu magazynowi danych.

Kontekst i problem

Tradycyjne systemy obsługi komunikatów są zoptymalizowane pod kątem zarządzania dużą ilością małych komunikatów i często mają ograniczenia dotyczące rozmiaru komunikatów, które mogą obsłużyć. Duże komunikaty nie tylko mogą przekraczać te limity, ale także obniżyć wydajność całego systemu, gdy system obsługi komunikatów je przechowuje.

Rozwiązanie

Użyj wzorca Claim-Check i nie wysyłaj dużych komunikatów do systemu obsługi komunikatów. Zamiast tego wyślij ładunek do zewnętrznego magazynu danych i wygeneruj token sprawdzania oświadczeń dla tego ładunku. System obsługi komunikatów wysyła komunikat z tokenem sprawdzania oświadczeń do odbierania aplikacji, aby te aplikacje mogły pobrać ładunek z magazynu danych. System obsługi komunikatów nigdy nie widzi ani nie przechowuje ładunku.

Diagram wzorca sprawdzania oświadczeń.

  1. Ładunek
  2. Zapisz ładunek w magazynie danych.
  3. Generowanie tokenu sprawdzania oświadczeń i wysyłanie komunikatu przy użyciu tokenu sprawdzania oświadczeń.
  4. Odbieranie komunikatów i odczytywanie tokenu sprawdzania oświadczeń.
  5. Pobierz ładunek.
  6. Przetwórz ładunek.

Problemy i zagadnienia dotyczące wzorca sprawdzania oświadczeń

Podczas implementowania wzorca claim-check należy wziąć pod uwagę następujące zalecenia:

  • Usuń zużyte komunikaty. Jeśli nie musisz archiwizować komunikatu, usuń komunikat i ładunek po jego użyciu przez odbierające aplikacje. Użyj strategii usuwania synchronicznego lub asynchronicznego:

    • Usuwanie synchroniczne: aplikacja korzystająca usuwa komunikat i ładunek natychmiast po użyciu. Wiąże usunięcie z przepływem pracy obsługi komunikatów i korzysta z pojemności obliczeniowej przepływu pracy obsługi komunikatów.

    • Usuwanie asynchroniczne: proces poza przepływem pracy przetwarzania komunikatów usuwa komunikat i ładunek. Usuwa proces usuwania z przepływu pracy obsługi komunikatów i minimalizuje użycie obliczeń przepływu pracy obsługi komunikatów.

  • Zaimplementuj wzorzec warunkowo. Uwzględnij logikę w aplikacji wysyłającej, która stosuje wzorzec sprawdzania oświadczeń, jeśli rozmiar komunikatu przekracza limit systemu obsługi komunikatów. W przypadku mniejszych komunikatów pomiń wzorzec i wyślij mniejszy komunikat do systemu obsługi komunikatów. To podejście warunkowe zmniejsza opóźnienie, optymalizuje wykorzystanie zasobów i poprawia przepływność.

Kiedy należy używać wzorca sprawdzania oświadczeń

Następujące scenariusze są podstawowymi przypadkami użycia wzorca claim-check:

  • Ograniczenia systemu obsługi komunikatów: użyj wzorca sprawdzania oświadczeń, gdy rozmiary komunikatów przekraczają limity systemu obsługi komunikatów. Odciążanie ładunku do magazynu zewnętrznego. Wyślij tylko komunikat z tokenem sprawdzania oświadczeń do systemu obsługi komunikatów.

  • Wydajność systemu obsługi komunikatów: użyj wzorca claim-check, gdy duże komunikaty obciążają system obsługi komunikatów i obniżają wydajność systemu.

Następujące scenariusze są pomocniczymi przypadkami użycia dla wzorca sprawdzania oświadczeń:

  • Ochrona poufnych danych: użyj wzorca sprawdzania oświadczeń, gdy ładunki zawierają poufne dane, które nie chcą być widoczne dla systemu obsługi komunikatów. Zastosuj wzorzec do wszystkich lub części poufnych informacji w ładunku. Zabezpieczanie poufnych danych bez bezpośredniego przesyłania ich za pośrednictwem systemu obsługi komunikatów.

  • Złożone scenariusze routingu: Komunikaty przechodzące przez wiele składników mogą powodować wąskie gardła wydajności spowodowane serializacji, deserializacji, szyfrowania i odszyfrowywania zadań. Użyj wzorca Sprawdzania oświadczeń, aby zapobiec bezpośredniemu przetwarzaniu komunikatów przez składniki pośredniczące.

Projekt obciążenia ze wzorcem sprawdzania oświadczeń

Architekt powinien ocenić, w jaki sposób wzorzec sprawdzania oświadczeń może być używany w projekcie obciążenia, aby sprostać celom i zasadom opisanym w filarach platformy Azure Well-Architected Framework. Na przykład:

Filar Jak ten wzorzec obsługuje cele filaru
Decyzje projektowe dotyczące niezawodności ułatwiają odporność obciążenia na awarię i zapewnienie pełnego odzyskiwania po awarii. Systemy obsługi komunikatów nie zapewniają tej samej niezawodności i odzyskiwania po awarii, które są często obecne w dedykowanych magazynach danych. Oddzielenie danych od komunikatu może zapewnić zwiększoną niezawodność ładunku. Ta separacja ułatwia nadmiarowość danych, która umożliwia odzyskiwanie ładunków po awarii.

- ANALIZA trybu awarii RE:03
- RE:09 Odzyskiwanie po awarii
Decyzje dotyczące projektowania zabezpieczeń pomagają zapewnić poufność, integralność i dostępność danych i systemów obciążeń. Wzorzec sprawdzania oświadczeń może wyodrębniać poufne dane z komunikatów i przechowywać je w bezpiecznym magazynie danych. Ta konfiguracja umożliwia zaimplementowanie ściślejszej kontroli dostępu, zapewniając, że dostęp do nich mogą uzyskiwać tylko usługi przeznaczone do korzystania z poufnych danych. Jednocześnie ukrywa te dane przed niepowiązanymi usługami, takimi jak te używane do monitorowania kolejek.

- SE:03 Klasyfikacja danych
- Segmentacja SE:04
Optymalizacja kosztów koncentruje się na utrzymaniu i poprawie zwrotu obciążenia z inwestycji. Systemy obsługi komunikatów często nakładają limity rozmiaru komunikatów, a zwiększone limity rozmiaru są często funkcją premium. Zmniejszenie rozmiaru treści komunikatów może umożliwić korzystanie z tańszego rozwiązania do obsługi komunikatów.

- KOSZT SKŁADNIKA CO:07
- CO:09 Koszty przepływu
Wydajność pomaga wydajnie sprostać wymaganiom obciążenia, optymalizując skalowanie, transfer danych i wykonywanie kodu. Wzorzec sprawdzania oświadczeń zwiększa wydajność wysyłania i odbierania aplikacji oraz systemu obsługi komunikatów, efektywniej zarządzając dużymi komunikatami. Zmniejsza to rozmiar komunikatów wysyłanych do systemu obsługi komunikatów i gwarantuje, że odbieranie aplikacji uzyskuje dostęp do dużych komunikatów tylko w razie potrzeby.

- PE:05 Skalowanie i partycjonowanie
- PE:12 Ciągła optymalizacja wydajności

Podobnie jak w przypadku każdej decyzji projektowej, należy rozważyć wszelkie kompromisy w stosunku do celów innych filarów, które mogą zostać wprowadzone przy użyciu tego wzorca.

Przykłady wzorców sprawdzania oświadczeń

W poniższych przykładach pokazano, jak platforma Azure ułatwia implementację wzorca claim-check:

  • Systemy obsługi komunikatów platformy Azure: przykłady obejmują cztery różne scenariusze systemu obsługi komunikatów platformy Azure: Azure Queue Storage, Azure Event Hubs (standardowy interfejs API), Azure Service Bus i Azure Event Hubs (interfejs API platformy Kafka).

  • Automatyczne i ręczne generowanie tokenu sprawdzania oświadczeń: w tych przykładach pokazano również dwie metody generowania tokenu sprawdzania oświadczeń. W przykładach kodu 1–3 usługa Azure Event Grid automatycznie generuje token podczas wysyłania aplikacji przesyła ładunek do usługi Azure Blob Storage. Przykład kodu 4 przedstawia proces ręcznego generowania tokenów przy użyciu wykonywalnego klienta wiersza polecenia.

Wybierz przykład odpowiadający Twoim potrzebom i postępuj zgodnie z podanym linkiem, aby wyświetlić kod w usłudze GitHub:

Przykładowy kod Scenariusze systemu obsługi komunikatów Generator tokenów Odbieranie aplikacji Magazyn danych
Przykład kodu 1 Azure Queue Storage Azure Event Grid Function Azure Blob Storage
Przykład kodu 2 Azure Event Hubs (standardowy interfejs API) Azure Event Grid Wykonywalny klient wiersza polecenia Azure Blob Storage
Przykład kodu 3 Azure Service Bus Azure Event Grid Function Azure Blob Storage
Przykład kodu 4 Azure Event Hubs (interfejs API platformy Kafka) Wykonywalny klient wiersza polecenia Function Azure Blob Storage

Następne kroki