Coinbase масштабировала нашу службу пользователей, чтобы поддерживать более 1,5 миллиона чтений идентификации в секунду. Вот как: - Мы разбили монолитный объект пользователя на независимые логические группы, называемые "Фрагменты." - Перешли от единого кластера MongoDB к федеративной системе, использующей как MongoDB, так и DynamoDB. - Для одновременных записей мы реализовали Оптимистичный контроль конкурентности (OCC), который использует поле версии ресурса для сравнения и замены при записи, избегая медленных глобальных блокировок. - Для надежных гарантий чтения после записи в критических потоках мы используем "Токены свежести." Эти токены передаются в запросе на чтение, чтобы гарантировать, что возвращаемые данные как минимум так же свежи, как версия, связанная с токеном, обходя кэш при необходимости. - Мы внедрили механизм снижения нагрузки, который динамически перенаправляет часть входящего трафика на фиктивную целевую группу, когда служба обнаруживает перегрузку, предотвращая зацикливание MongoDB и позволяя службе деградировать плавно. Эта архитектура дает нам масштабируемость для обработки огромных, непредсказуемых пиков крипторынка и устойчивость, чтобы быть службой, на которой Coinbase может строить с доверием.