(* nix) Soluções em nuvem / cluster para serviços da Web escaláveis

5

Vou criar um serviço da web de alto desempenho. Ele deve usar um banco de dados (ou qualquer outro sistema de armazenamento), alguma linguagem de processamento (script ou não) e um daemon de servidor da web. O sistema deve ser distribuído para uma grande quantidade de servidores para que o serviço seja executado com rapidez e confiabilidade.

Ele deve replicar os dados para obter confiabilidade e, ao mesmo tempo, fornecer recursos de computação distribuída para processar grandes quantidades de dados (principalmente, consultas em grandes bancos de dados que não resistem à execução em um único servidor com nível de resposta). As técnicas de cache estão fora do assunto.

Quais soluções de cluster / nuvem devo levar em consideração?

Existem vários SSI (Single-System-Image), sistemas de arquivos em cluster (podem fazer parte do design), projetos como o Hadoop, clones do BigTable e muitos outros. Cada um tem seus prós e contras, e a página "sobre" sempre diz que a solução é ótima :) Se você tentou implantar algo que trata do assunto, compartilhe sua experiência!

UPD: Não é um arquivo de hospedagem e nem um jogo, mas algo bastante interativo. Você pode usar o ServerFault como um exemplo de serviço da Web: pequenos dados, conteúdo semi-estático, operações intensivas de banco de dados.

Para aqueles que podem estar interessados:

Cross-Post no StackOverflow

Perguntas relacionadas:

por kolypto 14.11.2009 / 16:41

6 respostas

2

O Facebook está usando a cassandra para armazenamento de dados.

Aqui é um artigo sobre como dimensionar o youtube e a arquitetura e o prestígio do google: Designs, Lições e Conselhos da Criação de Grandes Sistemas Distribuídos por Jeff Dean, do Google, descrevendo como eles fazem o que fazem.

    
por 17.11.2009 / 10:27
2

O Hadoop + Hive (ou PIG) é construído para lidar com dados massivos. Isso é o que o Yahoo (cluster de 4000 nós), o Facebook, o eHarmony etc. usam.

Eu acredito que você pode obter pacotes / suporte de marca do Cloudera.com, ou você mesmo pode obtê-lo em apache.org

É muito fácil configurar e é impressionante quando se lida com GB-PB de consultas de dados.

Você pode testá-lo facilmente no EC2 (que é uma das opções deles) por quase nenhum custo.

    
por 14.11.2009 / 17:09
2

É impossível responder sem saber exatamente o que você está fazendo; pode ser bastante difícil mesmo assim.

Com base no que li (e experimentei), Cassandra parece muito boa, mas você não deve considerar isso como parte de um design sem entender exatamente como ele funciona e quais são suas limitações.

Esse tipo de coisa nunca é fácil e, além disso, isso é mais uma questão para o Stackoverflow.

    
por 17.11.2009 / 14:18
2

De certa forma, aproveito o princípio da solicitação de OPs para ser "uma plataforma de computação em nuvem madura, fácil de escalar para programadores e fácil de escalar para operações". Ainda não estamos bem aí; Pelo que sei, não há sistemas maduros e disponíveis comercialmente que abranjam toda a cadeia, desde o pedido de HTTP, passando pelo processamento, até o armazenamento permanente.

A coisa mais próxima hoje é provavelmente um middleware de grade de dados particionado como Coerência da Oracle ou talvez Terracota . Oracle Coerência tem sido boa para o Squarespace e outras aplicações web. É claro que a Oracle também lhe venderia um banco de dados Oracle particionado que pode manipular grandes quantidades de dados e funcionar. E o preço ... se você precisar perguntar, não pode pagar.

Se você precisa de barato (er), então você está olhando para algum grau de "faça você mesmo" usando componentes de código aberto. A família Hadoop é o conjunto de ferramentas de código-fonte aberto mais abrangente e maduro "BigTable" e "Mapear / Reduzir". O MySQL fragmentado é popular para armazenamento de dados e ainda é uma solução de maioria de DIY . "NoSQL" está ganhando impulso agora, mas ainda é os primeiros dias do NoSQL .

Which cluster/cloud solutions I should take for the consideration?

Você não tem isso de trás pra frente? Quais evidências você tem do seu aplicativo alcançando a escala da Internet, quais são os padrões de acesso a dados observados em escala atual e quais soluções & línguas que sua equipe tem experiência anterior?

    
por 17.11.2009 / 17:10
0

Eu realmente gosto da suíte completa da amazon .

Acredito que o Amazon EC2 combinado com o Amazon S3 e o Amazon Simple DB ou o Amazon RDS pode ser uma boa opção para você

    
por 16.11.2009 / 17:23
0

Você poderia usar um cluster JBoss.

    
por 20.11.2009 / 01:20