Coinbase heeft onze gebruikersservice opgeschaald om meer dan 1,5 miljoen identiteitslezen/sec te ondersteunen. Hier is hoe: - We hebben het monolithische gebruikersobject opgesplitst in onafhankelijke, logische groepen die "Fragmenten" worden genoemd. - Geëmigreerd van een enkele MongoDB-cluster naar een gefedereerd systeem dat zowel MongoDB als DynamoDB gebruikt. - Voor gelijktijdige schrijfbewerkingen hebben we Optimistic Concurrency Control (OCC) geïmplementeerd, dat een resourceversieveld gebruikt voor een vergelijk-en-wissel bij schrijven, waardoor langzame globale vergrendelingen worden vermeden. - Voor sterke lees-na-schrijf garanties op kritieke stromen gebruiken we "Versheidstokens." Deze tokens worden doorgegeven bij het leesverzoek om te garanderen dat de geretourneerde gegevens minstens zo vers zijn als de versie die aan het token is gekoppeld, waarbij de cache indien nodig wordt omzeild. - We hebben een load-shedding mechanisme geïntroduceerd dat dynamisch een deel van het inkomende verkeer omleidt naar een dummy-doelgroep wanneer de service overbelasting detecteert, waardoor een MongoDB-doodloop wordt voorkomen en de service zich elegant kan degraderen. Deze architectuur biedt ons de schaalbaarheid om de enorme, onvoorspelbare pieken van de cryptomarkt aan te kunnen en de veerkracht om een service te zijn waarop Coinbase met vertrouwen kan bouwen.