Bewerken

Delen via


Patroon Claimcontrole

Azure Event Grid
Azure Blob Storage

Met het claimcontrolepatroon kunnen workloads nettoladingen overdragen zonder de nettolading op te slaan in een berichtensysteem. Het patroon slaat de nettolading op in een extern gegevensarchief en gebruikt een 'claimcontrole' om de nettolading op te halen. De claimcontrole is een uniek, verborgen token of sleutel. Voor het ophalen van de nettolading moeten toepassingen het claimcontroletoken aan het externe gegevensarchief presenteren.

Context en probleem

Traditionele berichtensystemen zijn geoptimaliseerd voor het beheren van een groot aantal kleine berichten en hebben vaak beperkingen voor de berichtgrootte die ze kunnen verwerken. Grote berichten lopen niet alleen het risico deze limieten te overschrijden, maar kunnen ook de prestaties van het hele systeem verminderen wanneer het berichtensysteem ze opslaat.

Oplossing

Gebruik het claimcontrolepatroon en verzend geen grote berichten naar het berichtensysteem. Verzend in plaats daarvan de nettolading naar een extern gegevensarchief en genereer een claimcontroletoken voor die nettolading. Het berichtensysteem verzendt een bericht met het claimcontroletoken om toepassingen te ontvangen, zodat deze toepassingen de nettolading uit het gegevensarchief kunnen ophalen. Het berichtensysteem ziet de nettolading nooit of slaat deze op.

Diagram van het claimcontrolepatroon.

  1. Nettolading
  2. Sla nettolading op in het gegevensarchief.
  3. Genereer het token voor claimcontrole en verzend een bericht met een claimcontroletoken.
  4. Ontvang een bericht en lees claimcontroletoken.
  5. Haal de nettolading op.
  6. De nettolading verwerken.

Problemen en overwegingen met het claimcontrolepatroon

Houd rekening met de volgende aanbevelingen bij het implementeren van het claimcontrolepatroon:

  • Verbruikte berichten verwijderen. Als u het bericht niet hoeft te archiveren, verwijdert u het bericht en de nettolading nadat de ontvangende toepassingen het hebben gebruikt. Gebruik een synchrone of asynchrone verwijderingsstrategie:

    • Synchrone verwijdering: De verbruikende toepassing verwijdert het bericht en de nettolading onmiddellijk na verbruik. Het koppelt verwijdering aan de werkstroom voor het verwerken van berichten en maakt gebruik van de rekencapaciteit van de berichtenwerkstroom.

    • Asynchrone verwijdering: Een proces buiten de werkstroom voor berichtverwerking verwijdert het bericht en de nettolading. Hiermee wordt het verwijderingsproces losgekoppeld van de werkstroom voor het verwerken van berichten en wordt het gebruik van rekenkracht van de berichtenwerkstroom geminimaliseerd.

  • Implementeer het patroon voorwaardelijk. Neem logica op in de verzendende toepassing die het claimcontrolepatroon toepast als de berichtgrootte de limiet van het berichtensysteem overschrijdt. Voor kleinere berichten slaat u het patroon over en verzendt u het kleinere bericht naar het berichtensysteem. Deze voorwaardelijke benadering vermindert de latentie, optimaliseert het gebruik van resources en verbetert de doorvoer.

Wanneer gebruikt u het patroon Claimcontrole

De volgende scenario's zijn de primaire use cases voor het claimcontrolepatroon:

  • Beperkingen van het berichtensysteem: gebruik het claimcontrolepatroon wanneer berichtgrootten de limieten van uw berichtensysteem overschrijden. Offload de nettolading naar externe opslag. Verzend alleen het bericht met het claimcontroletoken naar het berichtensysteem.

  • Systeemprestaties van berichten: gebruik het claimcontrolepatroon wanneer grote berichten het berichtensysteem trainen en de systeemprestaties verminderen.

De volgende scenario's zijn secundaire use cases voor het claimcontrolepatroon:

  • Bescherming van gevoelige gegevens: gebruik het claimcontrolepatroon wanneer nettoladingen gevoelige gegevens bevatten die niet zichtbaar willen zijn voor het berichtensysteem. Pas het patroon toe op alle of delen van gevoelige informatie in de nettolading. Beveilig de gevoelige gegevens zonder deze rechtstreeks via het berichtensysteem te verzenden.

  • Complexe routeringsscenario's: berichten die meerdere onderdelen doorlopen, kunnen prestatieknelpunten veroorzaken vanwege serialisatie-, deserialisatie-, versleutelings- en ontsleutelingstaken. Gebruik het patroon Claimcontrole om te voorkomen dat direct message wordt verwerkt door tussenliggende onderdelen.

Workloadontwerp met het claimcontrolepatroon

Een architect moet evalueren hoe het claimcontrolepatroon kan worden gebruikt in het ontwerp van hun workload om de doelstellingen en principes te verhelpen die worden behandeld in de pijlers van het Azure Well-Architected Framework. Voorbeeld:

Pijler Hoe dit patroon ondersteuning biedt voor pijlerdoelen
Beslissingen over betrouwbaarheidsontwerp helpen uw workload bestand te worden tegen storingen en ervoor te zorgen dat deze volledig herstelt na een storing. Berichtensystemen bieden niet dezelfde betrouwbaarheid en herstel na noodgevallen die vaak aanwezig zijn in toegewezen gegevensarchieven. Door de gegevens van het bericht te scheiden, kan de nettolading betrouwbaarder worden. Deze scheiding vereenvoudigt gegevensredundantie waarmee u nettoladingen kunt herstellen na een noodgeval.

- Analyse van foutmodus RE:03
- RE:09 Herstel na noodgevallen
Beslissingen over beveiligingsontwerpen helpen de vertrouwelijkheid, integriteit en beschikbaarheid van workloadgegevens en -systemen te waarborgen. Het claimcontrolepatroon kan gevoelige gegevens extraheren uit berichten en opslaan in een beveiligd gegevensarchief. Met deze instelling kunt u strengere toegangsbeheer implementeren, zodat alleen de services die zijn bedoeld voor het gebruik van gevoelige gegevens, toegang hebben tot deze gegevens. Tegelijkertijd worden deze gegevens verborgen voor niet-gerelateerde services, zoals die worden gebruikt voor wachtrijbewaking.

- SE:03 Gegevensclassificatie
- SE:04 Segmentatie
Kostenoptimalisatie is gericht op het ondersteunen en verbeteren van het rendement van uw workload op investering. Berichtensystemen leggen vaak limieten op voor de berichtgrootte en hogere groottelimieten zijn vaak een Premium-functie. Door de grootte van berichtteksten te verkleinen, kunt u mogelijk een goedkopere oplossing voor berichten gebruiken.

- CO:07 Componentkosten
- CO:09 Stroomkosten
Prestatie-efficiëntie helpt uw workload efficiënt te voldoen aan de vereisten door schaalaanpassing, gegevensoverdracht en code-uitvoering te optimaliseren. Het claimcontrolepatroon verbetert de efficiëntie van het verzenden en ontvangen van toepassingen en het berichtensysteem door grotere berichten effectiever te beheren. Het vermindert de grootte van berichten die naar het berichtensysteem worden verzonden en zorgt ervoor dat het ontvangen van toepassingen alleen toegang heeft tot grote berichten wanneer dat nodig is.

- PE:05 Schalen en partitioneren
- PE:12 Continue prestatieoptimalisatie

Net als bij elke ontwerpbeslissing moet u rekening houden met eventuele compromissen ten opzichte van de doelstellingen van de andere pijlers die met dit patroon kunnen worden geïntroduceerd.

Voorbeelden van claimcontrolepatronen

In de volgende voorbeelden ziet u hoe Azure de implementatie van het claimcontrolepatroon vereenvoudigt:

  • Azure Messaging-systemen: de voorbeelden hebben betrekking op vier verschillende Scenario's voor Azure Messaging-systemen: Azure Queue Storage, Azure Event Hubs (Standard API), Azure Service Bus en Azure Event Hubs (Kafka-API).

  • Automatisch versus handmatig claimcontroletoken genereren: in deze voorbeelden worden ook twee methoden weergegeven om het claimcontroletoken te genereren. In codevoorbeelden 1-3 genereert Azure Event Grid automatisch het token wanneer de verzendende toepassing de nettolading overdraagt naar Azure Blob Storage. Codevoorbeeld 4 toont een handmatig proces voor het genereren van tokens met behulp van een uitvoerbare opdrachtregelclient.

Kies het voorbeeld dat bij uw behoeften past en volg de opgegeven koppeling om de code op GitHub weer te geven:

Voorbeeldcode Scenario's voor berichtensysteem Tokengenerator Ontvangende toepassing Gegevensopslag
Codevoorbeeld 1 Azure Queue Storage Azure Event Grid Functie Azure Blob-opslag
Codevoorbeeld 2 Azure Event Hubs (Standard API) Azure Event Grid Uitvoerbare opdrachtregelclient Azure Blob-opslag
Codevoorbeeld 3 Azure Service Bus Azure Event Grid Functie Azure Blob-opslag
Codevoorbeeld 4 Azure Event Hubs (Kafka-API) Uitvoerbare opdrachtregelclient Functie Azure Blob-opslag

Volgende stappen