Sto affrontando un problema cercando di progettarlo correttamente. Il problema è semplice: è disponibile il pulsante 1 clic per acquistare un tipo di coupon. Si tratta di una riga singola in DB con 1000 come conteggio di scorte. Assumi QPS come 1 milione e solo 1k coupon.
Se vado con il blocco pessimistico, devo concedere il timeout a ciascun utente. Non sembra qualcosa di scalabile.
Se vado con il blocco ottimistico, con la colonna VERSION nella tabella per verificare durante l'aggiornamento, come posso aggiornare le versioni degli utenti? Ad esempio, se 10000 utenti arrivano in tempo = 0, e solo un ragazzo ottiene, il resto degli utenti deve continuare a ottenere un nuovo blocco.
Qual è il modo migliore per progettarlo?