Coinbase skalerte vår brukertjeneste til å opprettholde over 1,5 millioner identitetslesninger per sekund. Slik gjør du: - Vi delte det monolittiske brukerobjektet inn i uavhengige, logiske grupper kalt "Fragmenter." - Migrerte fra en enkelt MongoDB-klynge til et føderert system ved bruk av både MongoDB og DynamoDB. - For samtidige skrivinger implementerte vi Optimistic Concurrency Control (OCC), som bruker et ressursversjonsfelt for compare-and-swap ved skriving, og unngår trege globale låser. - For sterke read-after-write-garantier på kritiske flyter bruker vi "Freshness Tokens." Disse tokenene sendes på leseforespørselen for å sikre at de returnerte dataene er minst like ferske som versjonen tilknyttet tokenet, og omgår cachen om nødvendig. - Vi introduserte en belastningsfrakoblingsmekanisme som dynamisk omdirigerer en del av innkommende trafikk til en dummy-målgruppe når tjenesten oppdager overbelastning, noe som forhindrer en MongoDB-dødssløyfe og gjør det mulig for tjenesten å degraderes elegant. Denne arkitekturen gir oss skalerbarhet til å håndtere kryptomarkedets massive, uforutsigbare topper og robustheten til å være en tjeneste Coinbase kan bygge videre på med tillit.