Coinbase skalował naszą usługę Użytkowników, aby obsługiwać ponad 1,5 miliona odczytów tożsamości na sekundę. Oto jak: - Rozbiliśmy monolityczny obiekt użytkownika na niezależne, logiczne grupy zwane "Fragmentami." - Przeszliśmy z jednego klastra MongoDB na system federacyjny, używając zarówno MongoDB, jak i DynamoDB. - Dla równoległych zapisów wdrożyliśmy Optymistyczną Kontrolę Współbieżności (OCC), która wykorzystuje pole wersji zasobu do porównania i zamiany przy zapisie, unikając wolnych globalnych blokad. - Dla silnych gwarancji odczytu po zapisie w krytycznych przepływach używamy "Tokenów Świeżości." Te tokeny są przekazywane w żądaniu odczytu, aby zapewnić, że zwrócone dane są co najmniej tak świeże, jak wersja związana z tokenem, omijając pamięć podręczną, jeśli to konieczne. - Wprowadziliśmy mechanizm odciążania, który dynamicznie przekierowuje część nadchodzącego ruchu do grupy docelowej typu dummy, gdy usługa wykrywa przeciążenie, zapobiegając pętli śmierci MongoDB i umożliwiając usłudze łagodne degradacje. Ta architektura daje nam skalowalność, aby poradzić sobie z ogromnymi, nieprzewidywalnymi szczytami rynku kryptowalut oraz odporność, aby być usługą, na której Coinbase może budować z zaufaniem.