Sto cercando di capire come un broker AMQP, come RabbitMQ, può essere integrato nella nostra architettura. Questo dovrebbe consentire di scalare facilmente in orizzontale in futuro.
Per semplicità, permettimi di porre la domanda tramite un'analogia.
Dì che hai:
- Un insieme di conti bancari . Supponiamo che il numero di account possa aumentare e diminuire in qualsiasi momento.
- Un pool fisso di lavoratori / consumatori . Questi lavoratori sono responsabili dell'esecuzione di azioni su un conto bancario, come un prelievo.
- Un'interfaccia utente , che offre all'utente la possibilità di avviare un'azione, ad esempio un prelievo.
- Uno scambio AMQP .
Quando l'utente avvia un prelievo, un messaggio che incapsula questa azione è dato allo scambio AMQP. Lo scambio mette il messaggio in una coda, e verrà raccolto da uno dei lavoratori disponibili che consumano questa coda.
Ma cosa succede se l'utente "immediatamente" avvia un altro prelievo? Il messaggio corrispondente potrebbe essere prelevato da un altro lavoratore, con il risultato che due lavoratori elaborano contemporaneamente lo stesso conto bancario.
Come ci si sincronizza tra i lavoratori per garantire una relazione prima dell'evento? Come prevedi che un lavoratore stia lavorando sullo stesso conto bancario e poi su un altro?
Dato che sono abbastanza nuovo per la progettazione architettonica, questa potrebbe essere una domanda generica. Sono felice di qualsiasi risorsa esterna utile (libro, ...) che potrebbe aiutarmi qui.