A Coinbase escalou o nosso serviço de Utilizadores para suportar mais de 1,5M de leituras de identidade/segundo. Aqui está como: - Dividimos o objeto de utilizador monolítico em grupos lógicos independentes chamados "Fragmentos.” - Migramos de um único cluster MongoDB para um sistema federado utilizando tanto MongoDB quanto DynamoDB. - Para gravações concorrentes, implementamos o Controle de Concorrência Otimista (OCC), que utiliza um campo de versão de recurso para uma comparação e troca na gravação, evitando bloqueios globais lentos. - Para garantias fortes de leitura após gravação em fluxos críticos, usamos "Tokens de Frescura." Esses tokens são passados na solicitação de leitura para garantir que os dados retornados sejam pelo menos tão frescos quanto a versão associada ao token, contornando o cache se necessário. - Introduzimos um mecanismo de alívio de carga que desvia dinamicamente uma parte do tráfego de entrada para um grupo de destino fictício quando o serviço detecta sobrecarga, prevenindo um loop de morte do MongoDB e permitindo que o serviço degrade de forma elegante. Esta arquitetura nos dá a escalabilidade para lidar com os picos massivos e imprevisíveis do mercado de criptomoedas e a resiliência para ser um serviço no qual a Coinbase pode confiar.