Como um aplicativo da web distribuído geograficamente manipula dados armazenados?

4

Hipoteticamente ... Faço login em um aplicativo da web da Austrália e altero alguns dados. Nos EUA, meu colega está usando o mesmo sistema e quer ver os dados que eu mudei. Como o aplicativo da Web poderia ser implantado localmente para usuários australianos e localmente para usuários dos EUA (para desempenho), mas compartilhar dados?

Como o Google, o Facebook ou qualquer outro sistema global melhora o desempenho de usuários em diferentes países, mas ainda mantém os dados em sincronia caso um usuário viaje para um local diferente ou os dados sejam usados globalmente. Ou, na realidade, eles têm seus servidores de banco de dados em um único local?

    
por Dean 08.02.2013 / 01:46

3 respostas

5

Quanto ao Facebook, Google, etc: Os servidores de banco de dados não estão todos em um único local e, certamente, nem todos estão em sincronia total o tempo todo. Todos eles empregam um sistema distribuído em vários grupos de servidores para diferentes áreas geográficas.

Os clusters são distribuídos em muitos países. A frequência das atualizações entre os clusters depende da necessidade do sistema de funcionar de maneira aceitável.

Se você usar o Facebook, por exemplo: Na maioria das vezes você se comunica com amigos em seu próprio país. Assim, manter os servidores em seu país terá um efeito imediato e seus amigos verão instantaneamente suas mensagens.
Amigos em outros países podem ter um atraso, dependendo da freqüência com que os nós de servidores clusterizados são atualizados. IIRC Os clusters do Facebook interagem solicitando informações de outros clusters, se necessário. Muitas vezes recebi uma mensagem dizendo algo como "Este usuário atualizou status para blah blah". Ao clicar no link para a mensagem inteira, recebi uma mensagem de erro. Este é um problema de sincronização entre os clusters. Algumas informações foram sincronizadas, enquanto outras não.

Como você constrói a infraestrutura depende de quantos usuários, com que frequência os dados precisam ser sincronizados, etc.

Outro exemplo, e-mail: O sistema de e-mail é um sistema distribuído em todo o planeta. Um servidor com um único usuário não está tão ocupado comparado a um servidor com 1 milhão de usuários. Como você resolveria os problemas de entrega de um servidor ocupado? Servidor local mais distribuído? Servidores mais poderosos? Conexão de internet mais poderosa? Tudo acima? Como o conceito subjacente de email (para entregar mensagens de um nó para outro) não muda independentemente do número de usuários de email, você precisará projetar seu sistema específico para acomodar todos os seus usuários. Independentemente de como você projeta seu sistema, há momentos em que os e-mails são atrasados na entrega, porque simplesmente há muito tráfego nos outros nós da cadeia.

O mesmo conceito se aplica ao Facebook. Eles projetam e constroem suas fazendas para uma região específica, mas todo o sistema depende de "diferenças geográficas". Ou seja, é mais provável que você interaja com usuários em sua própria região do que em outras regiões.

Quanto ao seu problema específico: tudo depende de quantos usuários existem. Um único servidor de banco de dados (ou servidor em cluster) pode funcionar para você. Se houver necessidade de farms de servidores de cluster distribuídos, talvez seja necessário criar seu próprio sistema para sincronização, como o Facebook e o Google. Essa solução depende do que seus usuários precisam e de como o sistema deve funcionar. Não conheço nenhum sistema padronizado que seja uma solução "funciona para todos".

Eu tenho reclamado muito aqui e é bem tarde e eu posso estar totalmente fora do alvo, mas ei, são meus 2 centavos.

Felicidades!

    
por 08.02.2013 / 02:34
4

Não sei o quão construtivo isso é, no entanto, o Google afirma ter sincronicidade quase em tempo real. Eles até têm seus próprios relógios atômicos em seus data centers para sincronização adequada. A Wired tem um artigo sobre isso:

link

    
por 08.02.2013 / 02:40
1

Este é um problema bem conhecido de CS, resumido como o teorema de CAP por Eric Brewer.

No entanto, parece que o Google pode ter resolvido o problema com a chave inglesa do Google, que agora está disponível publicamente link

Se você não estiver pronto para usar a chave de boca, deve considerar os princípios orientadores dos seus requisitos de dados. Consistência, Disponibilidade ou Desempenho. (CAP)

há muitos artigos e padrões de design para isso, então não vou recapitular aqui.

    
por 21.06.2017 / 04:34