Eu tenho um site que é desenvolvido usando ASP.NET e MY DB é MySQL. Atualmente, ele é hospedado nos EUA Servers. Mas quando tento acessá-lo perto da Índia, o conteúdo dinâmico está carregando muito lentamente. É aceitável, pois a solicitação deve ir para outro lado do mundo. Nos EUA é realmente rápido. Já conectei este site com o cloudflare CDN. Mas CDN é útil para conteúdo estático. Todas as minhas páginas têm quase conteúdo dinâmico.
Então, eu quero escalar este site. Portanto, se uma solicitação veio da América, eu quero lidar com essa solicitação do servidor dos EUA. Mas lembre-se, não importa onde eles foram redirecionados, o conteúdo deve ser o mesmo em dois servidores. (Dois servidores devem ser sincronizados)
Então, como alcançar essa arquitetura?
Como o Google, Facebook e Yahoo fazem isso? Como eles servem em todo o mundo? Eu acho que eles têm datacenters em todos os continentes. Como eles se sincronizam?
Há situações em que você gostaria de ter:
Infelizmente, a combinação de todos os itens acima não é fisicamente possível. Você será limitado pela velocidade da luz.
Em vez disso, você precisa considerar seus requisitos exatos. Para alguns dados, a precisão limitada é boa o suficiente. Considere o contador de visualizações em um vídeo do YouTube. A maioria das pessoas não se importa se o contador de visualizações está temporariamente um pouco desligado. Se as visualizações que ocorreram 10 segundos atrás no outro lado do mundo ainda não estiverem incluídas, mas as visualizações que ocorreram há 5 segundos mais próximas forem incluídas, ainda será preciso o suficiente. Se você está relaxado com a integridade do contador de visualizações, corre o risco de duas pessoas diferentes pensarem que eram o número 100 do espectador desse vídeo em particular. Mas a maioria das pessoas consideraria insignificante o dano causado por isso.
Em outros casos, a integridade dos dados é mais importante. Considere duas pessoas simultaneamente tentando se inscrever com o mesmo nome de usuário. Dizer às duas pessoas que elas receberam o nome de usuário não é aceitável; portanto, em tal situação, você escolheria uma abordagem mais lenta e com melhor integridade. É aceitável dizer às duas pessoas que o nome de usuário foi usado, portanto, uma abordagem possível seria tentar reservar o nome de usuário em cada réplica e reportar o sucesso apenas se você tiver conseguido mais de 50% das réplicas. Não é improvável que essa abordagem faça com que o usuário aguarde meio segundo para obter uma resposta. Mas os usuários não passam por esse processo com frequência suficiente para se incomodar com esse atraso.
Em outros casos, você pode precisar de boa integridade e atualizações rápidas, mas apenas uma pessoa pode atualizar esse dado específico. Nesse caso, você pode colocar a cópia autorizada dos dados em um servidor que você acha que é próximo a esse usuário e permitir que outros servidores tenham uma versão em cache, que é geralmente atualizada.
fonte