Disclaimer: per la parte seguente, sto dicendo la maggior parte , perché ovviamente non ho esperienza con tutti i sistemi bancari.
Proprio come qualsiasi sistema che deve essere veramente veloce, anche le banche sono alla fine coerenti. Quando stai implementando questo sistema, vuoi davvero che sia online il più possibile. Qualsiasi tempo di inattività possibile danneggerà la tua attività, perché stai ritardando il cliente in qualsiasi situazione si trovi attualmente. E credetemi, il sistema bancario che risponde lentamente è un'esperienza davvero terribile anche per i rivenditori. Fa male a tutti.
Per rimanere il più disponibili e veloci possibile, la maggior parte degli sportelli automatici e / o terminali di carte non verifica il tuo saldo ed elabora la transazione contro il comandante in tempo reale. Con la quantità di transazioni, ciò invaliderebbe il sistema.
I proprietari di banche sanno che la maggior parte delle richieste di prelievo di denaro da ATM o di emissione di una carta di credito avranno successo. Per questo motivo, quando si desidera prelevare denaro da ATM, la macchina esegue il ping del modello di lettura molto veloce e scalabile della banca per controllare molto rapidamente se si dispone della quantità desiderata o meno. Sappi che questo ping è fatto su una replica e quindi potrebbe non essere sincronizzato in tempo reale con il master.
Una volta che il ping è terminato e il tuo stato è verificato, l'ATM rileva che hai effettuato un prelievo e dispensa i soldi. Ogni periodo configurato, l'ATM preleva tutti i prelievi effettuati e li invia alle autorità competenti.
Alcuni ATM potrebbero essere (e di solito sono) più complessi, ricorda alcune informazioni sul tuo account dalla carta, in modo che non debbano eseguire il ping della banca ogni volta. Grazie a ciò, l'ATM da solo di solito ti impedisce di prelevare $ 500 e $ 500 subito dopo quando il tuo account conterrebbe solo ad es. $ 501 - in questo caso il primo prelievo va bene, il secondo no, perché l'ATM ricorda che hai $ 501, hai ritirato $ 500, quindi il tuo equilibrio teorico è $ 1. Ovviamente, se l'ATM è uno dei più scomodi che ping ogni volta l'associazione bancaria, è comunque probabile che la replica risponda con $ 501 anche sul secondo prelievo e anche il secondo prelievo sarà consentito. Ma questo è ancora non un problema.
Poiché in realtà le banche non si preoccupano di andare in un saldo negativo, ammettono anche questi singhiozzi temporanei e implementano un sistema di reporting che notifica agli amministratori e supporto nel caso in cui il saldo di qualcuno diventa negativo. Ciò a sua volta può innescare altri processi, come l'avvio di fatturazione per il tempo di avere un saldo negativo dell'account, ...
Mentre il settore bancario può sembrare molto rigido e sembra che ogni singola operazione debba essere coerente, la disponibilità è un aspetto molto più importante quando si tratta di operazioni bancarie, quindi le banche sono programmate in questo modo.
Per rispondere direttamente alle tue domande:
ATM gives money then send a deduction request to it's bank. What
happens, if the request will fail? the user got the money but his
account hasn't been deducted - fail.
Per prevenire questo problema, gli ATM sono implementati per registrare sia la richiesta di prelievo (contenente informazioni su quanto vuoi prelevare) sia l'evento sul completamento del ritiro.
Quando viene memorizzato l'evento WithdrawalRequested
, lo sportello automatico inizia a darti i soldi. Se muore subito dopo averti dato i soldi ma prima di memorizzare l'evento WithdrawalCompleted
, questo non è un problema.
- Dopo un riavvio, l'ATM in qualche modo sommerà tutti i prelievi effettuati con successo, sottraendo il valore della somma dalla somma di denaro originale inserita nell'ATM,
- L'ATM troverà un'incoerenza, che in realtà manca $ 500, trova tutte le entità senza
WithdrawalCompleted
evento e se c'è una richiesta incompleta [ATM] la completerà semplicemente.
Annuncio 2. Se l'ATM non è in grado di trovare un ritiro corrispondente, invia un rapporto alle autorità che ciò è accaduto e dovrà essere esaminato.
Ora, se richiedi il prelievo e l'ATM muore prima ancora di registrare l'evento WithdrawalRequested
, questo non è un problema, semplicemente non succederà nulla. Ma se lo sportello automatico muore tra la memorizzazione di WithdrawalRequested
e in realtà ti dà i soldi, come prima, dopo le misure di riavvio devono essere fatte che la richiesta non è effettivamente inviata alle autorità, ancora una volta verificando lo stato attuale di denaro nell'ATM - in In questo caso, il denaro corrisponderebbe all'importo della somma dei prelievi completati sottratti dall'importo originale dei fondi e la richiesta verrà semplicemente scartata (ancora eventualmente notificando a qualcuno che il problema si è verificato).
ATM send a deduction request to it's bank, bank deduct the value, send
a request back to ATM, the request fail (disappear). the user was
deducted but hasn't got his money - fail
Questa situazione non accadrà mai poiché gli sportelli automatici non rilasciano il comando prima di erogare i soldi ma dopo.