Azure Functions tervezése azonos bemenethez
Az eseményvezérelt és üzenetalapú architektúra valósága azt diktálja, hogy azonos kéréseket kell elfogadni az adatintegritás és a rendszer stabilitásának megőrzése mellett.
A szemléltetés érdekében fontolja meg a lifthívás gombot. Ahogy megnyomja a gombot, kigyullad, és a liftet a padlóra küldik. Néhány perccel később valaki más is csatlakozik hozzád az előszobában. Ez a személy mosolyog, és lenyomja a megvilágított gombot másodszor. Mosolyogj vissza, és kacagj magadnak, amikor emlékeztetik, hogy a lift hívásának parancsa idempotens.
A lifthívás gomb második, harmadik vagy negyedik megnyomása nem befolyásolja a végeredményt. Amikor megnyomja a gombot, függetlenül attól, hogy hányszor, a liftet a rendszer elküldi a padlóra. Az idempotens rendszerek, például a lift, ugyanazt az eredményt eredményezik, függetlenül attól, hogy hányszor azonos parancsokat adnak ki.
Az alkalmazások létrehozásakor vegye figyelembe a következő forgatókönyveket:
- Mi történik, ha a készletvezérlő alkalmazás többször is megpróbálja törölni ugyanazt a terméket?
- Hogyan viselkedik az emberierőforrás-alkalmazás, ha egynél több kérés van arra vonatkozóan, hogy hozzon létre egy alkalmazotti rekordot ugyanahhoz a személyhez?
- Hová kerül a pénz, ha a banki alkalmazás 100 kérést kap ugyanahhoz a kifizetéshez?
Számos olyan környezet van, ahol a függvényre irányuló kérések azonos parancsokat kaphatnak. Egyes helyzetek a következők:
- Próbálkozzon újra a szabályzatokkal, amelyek ugyanazt a kérést sokszor küldik el.
- A gyorsítótárazott parancsok visszajátszottak az alkalmazásba.
- Több azonos kérést küldő alkalmazáshibák.
Az adatintegritás és a rendszerállapot védelme érdekében az idempotens alkalmazások olyan logikát tartalmaznak, amely a következő viselkedéseket tartalmazhatja:
- A törlés végrehajtása előtt ellenőrizze az adatok meglétét.
- Annak ellenőrzése, hogy léteznek-e már adatok a létrehozási művelet végrehajtása előtt.
- Egyeztetési logika, amely végleges konzisztenciát hoz létre az adatokban.
- Egyidejűségi vezérlők.
- Duplikációészlelés.
- Adatfrissítés ellenőrzése.
- Őrlogika a bemeneti adatok ellenőrzéséhez.
Végső soron az idempotencia egy adott művelet lehetőségének biztosításával érhető el, és csak egyszer hajtható végre.