Patroon Claimcontrole

Azure Event Grid
Azure-blobopslag

Met het Claim-Check pattern kunnen workloads payloads overdragen zonder deze in een berichtensysteem op te slaan. Het patroon slaat de payload op in een extern gegevensarchief en gebruikt een 'claimcheck' om de payload op te halen. Het claimbewijs is een unieke, onbekende token of sleutel. Voor het ophalen van de payload moeten toepassingen het claimcontroltoken aan de externe gegevensopslag 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 claimcontrole-token naar de ontvangende toepassingen, zodat deze toepassingen de payload uit de gegevensopslag kunnen ophalen. Het berichtensysteem ziet of slaat de payload nooit op.

Diagram van het claimcontrolepatroon.

  1. Gegevenslading
  2. Sla payload op in de gegevensopslag.
  3. Genereer het token voor claimcontrole en verzend een bericht met een claimcontroletoken.
  4. Ontvang een bericht en lees de claimcontroletoken.
  5. Haal de payload op.
  6. De payload 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 consumerende toepassing verwijdert het bericht en de inhoud onmiddellijk na gebruik. 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.

Gebruik van het Claim-Check-patroon

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.

  • Berichtensysteemprestaties: Gebruik het Claim-Check-patroon wanneer grote berichten het berichtensysteem belasten en zo de systeemprestaties verminderen.

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

  • Bescherming van gevoelige gegevens: gebruik het Claim-Check patroon wanneer nettoladingen gevoelige gegevens bevatten die u niet zichtbaar wilt maken voor het berichtensysteem. Pas het patroon toe op alle gevoelige informatie of op delen daarvan in de payload. 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 Claim-Check-patroon om te voorkomen dat de directe berichten worden verwerkt door intermediaire onderdelen.

Workload-ontwerp met het Claim-Check-patroon

Een architect moet evalueren hoe het Claim-Check-patroon kan worden gebruikt in het ontwerp van hun workload om de doelstellingen en principes te adresseren die worden behandeld in de Azure Well-Architected Framework-pijlers. 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 payload betrouwbaarder worden. Deze scheiding vergemakkelijkt gegevensredundantie, waardoor u ladingen na een ramp kunt herstellen.

- 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 Claim-Check-patroon vergemakkelijkt:

  • Azure messaging systems: De voorbeelden hebben betrekking op vier verschillende scenario's voor Azure berichtensysteem: 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 Storage
Codevoorbeeld 2 Azure Event Hubs (Standard API) Azure Event Grid Uitvoerbare opdrachtregelclient Azure Blob Storage
Codevoorbeeld 3 Azure Service Bus Azure Event Grid Functie Azure Blob Storage
Codevoorbeeld 4 Azure Event Hubs (Kafka-API) Uitvoerbare opdrachtregelclient Functie Azure Blob Storage

Volgende stappen