Több millió művelet kezelése - Hibatűrő fizetési rendszer építése

Amikor fizetéseket dolgozol fel és pénztárgépi nyugtákat nyomtatsz, a megbízhatóság nem opcionális—kötelező. Olyan rendszert építettünk, amely milliós műveletszámokat kezel, miközben fenntartja a hibatűrést és a közel azonnali válaszidőket.

A kihívás

Az étterem rendszereknek pénztárgépi nyomtatási integrációra van szükségük, amely:

  • Megbízhatóan működik hálózati problémák esetén is
  • Magas tranzakciós mennyiségeket kezel
  • Azonnali visszajelzést biztosít
  • Soha nem veszít el tranzakciókat

Architektúránk

Mikroszolgáltatások üzenetsorolással

NestJS mikroszolgáltatás architektúrát használva RabbitMQ-val, olyan rendszert építettünk, amely leválasztotta a fizetésfeldolgozást a pénztárgépi nyomtatástól. Ez azt jelentette:

  • Az egyes szolgáltatáshiások nem terjednek át
  • Magas átviteli sebesség üzenetsorolással
  • Könnyű horizontális skálázás

Valós idejű kommunikáció

A Socket.io valós idejű kétirányú kommunikációt biztosított a frontend és backend között, biztosítva azonnali visszajelzést a fizetési státuszról és nyomtatási műveletekről.

Hibatűrés

A rendszer úgy lett tervezve, hogy kezelje:

  • Hálózati kapcsolat megszakadásokat
  • Nyomtató offline helyzeteket
  • Magas egyidejű terhelést
  • Szolgáltatáshiásokat

Átfogó újrapróbálkozási logika, circuit breaker-ek és üzenet perzisztencia bevezetésével biztosítottuk, hogy a tranzakciók soha ne vesznek el, még infrastruktúra problémák esetén sem.

Megfigyelhetőség

Bevezettük:

  • OpenTelemetry elosztott tracinghez
  • Prometheus metrikák gyűjtéséhez
  • Grafana vizualizációhoz

Ez teljes láthatóságot adott a rendszer működésébe, lehetővé téve a proaktív problémafelismerést.

Az eredmények

Telepítés után a rendszer:

  • 4+ millió nyomtatási műveletet dolgoz fel
  • 100+ étteremben aktív
  • Közel azonnali műveleti idők
  • Zéró adatvesztés még hálózati problémák esetén is

Főbb tanulságok

A milliós műveletszámot kezelő rendszerek építése hibatűrésről való gondolkodást igényel az elejétől. Az üzenetsorolás, circuit breaker-ek és átfogó megfigyelhetőség nem opcionális—elengedhetetlenek.

A rendszer sikere abból adódott, hogy hibákra terveztünk: feltételeztük, hogy a dolgok törnek, és rugalmasságot építettünk minden rétegbe.


Olyan rendszert építesz, amelynek skálázódnia kell? A TechTrail olyan hibatűrő architektúrákat tervez, amelyek soha nem vesznek el adatot, még nyomás alatt sem. Lépjen kapcsolatba, hogy megbeszéljük igényeit.