Ecco la cosa:
Immagina che ci sia un database contenente solo id da 1 a 1000 e un flag is_used per ognuno di questi. C'è un servizio che ha solo due metodi:
- getId () che trova l'ID disponibile nel DB e lo restituisce dopo l'impostazione è_utilizzata su true
- versione (int id) per l'impostazione da is_used a false su id passato
Come suggeriresti di organizzare tutto per essere scalabile e performante se ci sono due regole:
- Ogni id deve essere utilizzato da un solo cliente a un certo punto nel tempo
- Se vengono utilizzati tutti gli ID, i client richiesti per getId devono essere accodati e forniti di id non appena diventano disponibili.