Share via


Ontwerpen van Azure Functions voor identieke invoer

De realiteit van een gebeurtenisgestuurde en berichtgebaseerde architectuur vereist de noodzaak om identieke aanvragen te accepteren met behoud van gegevensintegriteit en systeemstabiliteit.

Ter illustratie kunt u een liftoproepknop overwegen. Terwijl je op de knop drukt, licht het op en wordt er een lift naar je vloer gestuurd. Even later komt iemand anders bij u in de lobby. Deze persoon glimlacht naar je en drukt een tweede keer op de verlichte knop. Je glimlacht terug en grinnikt naar jezelf als je eraan wordt herinnerd dat de opdracht om een lift te bellen idempotent is.

Een tweede, derde of vierde keer drukken op een liftoproepknop heeft geen invloed op het eindresultaat. Wanneer u op de knop drukt, ongeacht het aantal keren, wordt de lift naar uw verdieping gestuurd. Idempotente systemen, zoals de lift, resulteren in hetzelfde resultaat, ongeacht hoe vaak identieke opdrachten worden gegeven.

Als het gaat om het bouwen van toepassingen, kunt u rekening houden met de volgende scenario's:

  • Wat gebeurt er als uw toepassing voor voorraadbeheer hetzelfde product meerdere keren probeert te verwijderen?
  • Hoe gedraagt uw human resource-toepassing zich als er meer dan één aanvraag is om een werknemersrecord voor dezelfde persoon te maken?
  • Waar gaat het geld heen als uw bank-app 100 aanvragen krijgt om dezelfde opname te doen?

Er zijn veel contexten waarin aanvragen voor een functie identieke opdrachten kunnen ontvangen. Enkele situaties zijn:

  • Beleidsregels voor opnieuw proberen die dezelfde aanvraag meerdere keren verzenden.
  • Opdrachten in de cache worden opnieuw afgespeeld in de toepassing.
  • Toepassingsfouten bij het verzenden van meerdere identieke aanvragen.

Ter bescherming van gegevensintegriteit en systeemstatus bevat een idempotente toepassing logica die het volgende gedrag kan bevatten:

  • Controleren of er gegevens bestaan voordat u een verwijdering probeert uit te voeren.
  • Controleer of er al gegevens bestaan voordat u een maakactie probeert uit te voeren.
  • Afstemmingslogica die uiteindelijke consistentie in gegevens creëert.
  • Gelijktijdigheidsbesturingselementen.
  • Duplicatiedetectie.
  • Validatie van nieuwheid van gegevens.
  • Beveiligingslogica voor het verifiëren van invoergegevens.

Uiteindelijk wordt idempotentie bereikt door ervoor te zorgen dat een bepaalde actie mogelijk is en slechts eenmaal wordt uitgevoerd.

Volgende stappen