Sobes.tech
Junior — Middle

Můžete vysvětlit koncept Transactional Outbox a proč se používá?

sobes.tech AI

Odpověď od AI

Transactional Outbox je vzor používaný na zabezpečenie spoľahlivého doručenia správ v distribuovaných systémoch, najmä keď je potrebné zabezpečiť konzistenciu medzi databázou a systémom výmeny správ.

Idea je, že pri vykonávaní obchodnej operácie, ktorá mení údaje, sa spolu s týmito zmenami zaznamenáva špeciálny záznam (outbox) s informáciami o udalosti, ktorú je potrebné zverejniť.

Po úspešnom potvrdení transakcie číta tieto záznamy z outboxu samostatný proces alebo služba a odosiela správy do fronty alebo brokerovi správ.

Toto pomáha predchádzať problémom so stratou správ alebo nesynchronizáciou údajov, pretože zápis do outboxu a zmena údajov prebiehajú atomicky.

Príklad:

  1. V transakcii aktualizujeme tabuľku objednávok a pridávame záznam do tabuľky outbox.
  2. Po potvrdení transakcie číta samostatný worker nové záznamy z outboxu a publikuje udalosti v Kafka, RabbitMQ a pod.
  3. Po úspešnom odoslaní sa záznam z outboxu odstráni alebo označí ako spracovaný.

Týmto spôsobom sa dosahuje spoľahlivá integrácia medzi databázou a systémom výmeny správ bez straty dát.