Como os sites grandes são servidos para milhões de usuários? (por exemplo, Google)

6

Eu aprecio que essa pergunta seja vaga / muito ampla, mas estou procurando os princípios básicos / um resumo.

Como um site como o Google ou o Facebook, por exemplo, lida com os bilhões de page views que ele recebe?

Estou ciente do DNS round-robin, que eu entendo que serve um IP para o visitante A, depois outro IP para o visitante B de uma maneira round-robin, e assim por diante.

Esses sites operam vários (cem?) servidores, que têm uma cópia do site "google" em cada servidor, e estão todos sincronizados?

Para tentar resumir: como sites muito grandes com milhões de visualizações de página realmente lidam com o tráfego? Como eles são mantidos? E onde alguém iria para obter experiência para configurar isso?

Gostaria de saber mais, mas sem precisar de necessidade para essa configuração, estou achando difícil conseguir estudos de caso ou material para aprender mais.

Espero que isso faça algum sentido. Obrigado.

    
por Ross 28.05.2011 / 15:24

3 respostas

3

Resumo: clientes de grandes empresas como planejamento de vôos usam Oracle, Sun, IBM Bladecenters e código personalizado, grandes empresas como eBay, Twitter, Facebook, Google usam tudo personalizado, qualquer coisa que consigam fazer funcionar e também mantêm segredo porque é uma das coisas mais difíceis que eles tiveram que resolver para tornar sua empresa possível.

-

Pequenos servidores web se tornaram muito comuns, e você normalmente vê um servidor web como Apache, Tomcat ou IIS, e talvez com um banco de dados por trás dele (PostgreSQL, SQL Server ou MySQL), e talvez com uma camada de programação também (PHP, Python, Ruby, Java, etc).

Para configurações maiores, mas ainda pequenas, você separa essas camadas em servidores diferentes - dois executando o Apache, ambos observando o mesmo arquivo compartilhado, dois executando o banco de dados com metade dos dados em cada, talvez outro fazendo cache, ou talvez você apenas faça eles tão poderosos quanto você pode pagar. Isso pode levar você a um longo caminho - a Plenty of Fish entrou nos 100 principais sites da HitWise em 2007, servindo mais de 2 milhões de visualizações por hora, com 1 servidor e terceirização de hospedagem de imagens para a Akamai.

Se você é rico, por exemplo o governo, o setor aéreo, etc., você pode expandir a partir daqui, indo para servidores massivos e especializados, como bladecenters, servidores Sun com dezenas de processadores, dezenas de discos em um dispositivo de armazenamento e bancos de dados Oracle, etc.

Para todos os outros, a questão de como aumentar o preço barato ainda não foi respondida. Como eles fazem isso é um dos principais problemas de sua empresa, e um deles gastará muito esforço na construção personalizada.

Ele provavelmente consistirá em maneiras interessantes de envolver muitos servidores de banco de dados. Não no Google, eles escreveram seu próprio sistema de arquivos e substituição do banco de dados no topo . Você pode ver sharding (dividir seu conteúdo A-M em um servidor, N-Z em outro) ou replicação (todos os servidores têm os mesmos dados, leituras vêm de qualquer um deles, gravações vão para todos) ou algo personalizado.

Ele provavelmente consistirá em muitos servidores de armazenamento em cache, por exemplo, executando o Memcached. Eles terão muita RAM e retornarão rapidamente as consultas ao banco de dados que foram feitas antes, arquivos solicitados recentemente. Em 2008, o Facebook disse: "Nós usamos mais de 800 (memcached) servidores que fornecem mais de 28 terabytes de memória para nossos usuários". link

Você provavelmente encontrará alguns serviços da CDN (rede de distribuição de conteúdo) como a Akamai, onde você lhes dá todas as suas fotos e as espalha pelo mundo, e você cria um link para elas e veicula automaticamente as fotos mais próximas do usuário. sua rede.

Você também encontrará muitos códigos personalizados e pessoas trabalhando duro, mas mantendo-o em segredo. Servir leilões do eBay significa lidar com muito tráfego, mas os dados de um único item de leilão são praticamente estáticos, mas a pesquisa de leilões do eBay significa muito processamento de dados. O Google pesquisando na web significa muito processamento de dados, mas de uma maneira diferente - dados diferentes armazenados em um servidor diferente. O Facebook significa muitas informações cruzadas por muitos usuários, e o Twitter também, mas com características diferentes. O Google e o Facebook projetam seu próprio hardware de servidor.

    
por 28.05.2011 / 22:15
3

Eles têm muitos locais diferentes e todos os usuários são direcionados para o local mais próximo. Isso é feito com Anycast .

Em cada local, eles têm muitos servidores front-end (servidores da web) e, no back-end, vários clusters de banco de dados diferentes. Muitas vezes eles estão fazendo sharding do banco de dados lá.

Geralmente, há uma camada entre os servidores front-end e os servidores de banco de dados de back-end. Nesta camada, todo o cálculo e processamento de dados está acontecendo. O Google está usando o Map Reduce .

Esta é uma introdução muito curta, mas os links devem ajudá-lo a encontrar informações mais detalhadas.

    
por 28.05.2011 / 15:59
2

How does a site like Google, or Facebook, for example, deal with the billions of page views it receives?

Muitos servidores em muitos centros de dados.

I'm aware of round-robin DNS, which, I understand serves one IP to visitor A, then another IP to visitor B in a round-robin fashion, and so on.

Ah. Não. Ele retorna IPs diferentes (round robin) em todas as solicitações, mas essa noct significa necessariamente cada visitante.

Do these sites operate several(hundred?) servers, that have a copy of the "google" website on each > server, and are all synchronised?

Não. Faça isso "dezenas de milhares" de servidores e a resposta é sim. O Google opera muitos datacenters com mais de 100.000 servidores em cada um.

E eles usam o roteamento AS para redirecionar o tráfego para o datacenter mais próximo.

    
por 28.05.2011 / 15:44