Ho un problema che coinvolge diverse macchine, code di messaggi e transazioni. Quindi, ad esempio, un utente fa clic su una pagina Web, il clic invia un messaggio a un'altra macchina che aggiunge un pagamento all'account dell'utente. Ci possono essere molte migliaia di clic al secondo. Tutti gli aspetti della transazione devono essere tolleranti ai guasti.
Non ho mai avuto a che fare con qualcosa di simile prima, ma un po 'di lettura suggerisce che questo è un problema ben noto.
Quindi alle mie domande. Ho ragione nel ritenere che il modo sicuro per farlo sia con un commit a due fasi, ma il protocollo sta bloccando e quindi non otterrò le prestazioni richieste? Sembra che i DB come redis e il sistema di accodamento dei messaggi come Rescue, RabbitMQ ecc non mi aiutino molto - anche se implemento una sorta di commit a due fasi, i dati andranno persi se redis si arresta perché è essenzialmente solo memoria .
Tutto ciò mi ha indotto a guardare a erlang - ma prima di entrare e iniziare a imparare una nuova lingua, mi piacerebbe davvero capire meglio se ne vale la pena. In particolare, ho ragione nel pensare che a causa delle sue capacità di elaborazione parallele, erlang è una scelta migliore per implementare un protocollo di blocco come il commit a due fasi, o sono confuso?