Coinbase ha scalato il nostro servizio Utenti per sostenere oltre 1,5 milioni di letture di identità al secondo. Ecco come: - Abbiamo suddiviso l'oggetto utente monolitico in gruppi logici indipendenti chiamati "Frammenti." - Migrato da un singolo cluster MongoDB a un sistema federato utilizzando sia MongoDB che DynamoDB. - Per le scritture concorrenti, abbiamo implementato il Controllo di Concorrenza Ottimista (OCC), che utilizza un campo di versione delle risorse per un confronto e scambio in scrittura, evitando blocchi globali lenti. - Per forti garanzie di lettura dopo scrittura su flussi critici, utilizziamo i "Token di Freschezza." Questi token vengono passati nella richiesta di lettura per garantire che i dati restituiti siano almeno freschi quanto la versione associata al token, bypassando la cache se necessario. - Abbiamo introdotto un meccanismo di riduzione del carico che devia dinamicamente una parte del traffico in arrivo verso un gruppo target fittizio quando il servizio rileva un sovraccarico, prevenendo un ciclo di morte di MongoDB e consentendo al servizio di degradarsi in modo elegante. Questa architettura ci offre la scalabilità per gestire i massicci e imprevedibili picchi del mercato delle criptovalute e la resilienza per essere un servizio su cui Coinbase può costruire con fiducia.