Hospedagem de sites com largura de banda muito alta

2

Recebi a tarefa de avaliar os requisitos de infraestrutura para um site que atrairá mais de 10 milhões de visitantes únicos por mês. Este site terá vários shows em tamanho de conteúdo. Eu sei que todo o conteúdo interativo será colocado em um CDN, mas e o back end? este site também terá um CMS anexado, o que significa que qualquer configuração de servidor duplo precisaria ser armazenada em cluster, e estou supondo que a carga seja balanceada também. Apenas querendo alguma sugestão que você possa ter.

Para adicionar mais detalhes. Muito provavelmente, estaremos usando um balanceador de carga do webmux.

    
por geeklin 12.08.2009 / 16:58

4 respostas

8

Infelizmente, você não sabe o que consertar antes de ir ao vivo. É muito difícil colocar dinheiro no lugar certo sem ter alguns dados para respaldar suas decisões. Eu recomendo A arte do planejamento de capacidade para ter uma ideia de quais coisas você deve fazer para planejar sua capacidade . A regra geral, porém, é monitorar tudo. Você quer gráficos em abundância. Se você não consegue ver onde as coisas estão tendo problemas, você não tem chance de consertá-lo. Não deixe o monitoramento para o último minuto. Eu não posso enfatizar o suficiente o quão importante é ter uma idéia de como o seu site está funcionando atualmente e como ele tem se apresentado no último dia, mês ou ano. Usamos o munin para nossos gráficos, pois é muito rápido de se pôr em funcionamento. Outras pessoas usam o Ganglia e o Cacti com grande efeito.

No entanto, existem várias coisas que você pode fazer para melhorar suas chances de sobreviver.

1) Duplique tudo. Grande quantidade. Você quer adicionar mais hardware a lugares em que você está com problemas. Você não quer comprar hardware maior para substituir o hardware que é muito lento. Veja o balanceamento de carga de seus servidores de aplicativos. Olhe para usar uma configuração de banco de dados mestre / escravo, onde as leituras vêm de seus escravos e as gravações são feitas para o seu mestre. Você disse que está armazenando a maioria da mídia em um CDN. Boa.

2) Evite armazenar qualquer coisa que transiente em seu banco de dados. Os bancos de dados são muito lentos para dados temporários e você os quer servindo outras solicitações.

3) Evite o estado do lado do servidor, se possível. Com o estado do lado do servidor, você terá que ter algum tipo de replicação de sessão compartilhada entre servidores web, limitando sua capacidade de adicionar mais hardware, ou você precisará usar sessões persistentes, que funcionarão, mas podem causar carga desigual e sessões morrendo se seu servidor morre.

4) Cache tudo. Use o memcached para armazenar dados em cache entre seu banco de dados e seu aplicativo. É mais eficaz se você armazenar dados resultantes de várias consultas. Use um cache na frente da sua camada da web. Algo como o mod_cache ou o squid do apache em um modo de proxy reverso.

5) Faça o perfil do seu site. Encontre onde está lento.

6) Faça o perfil do seu html. Uma grande parte da lentidão percebida pelo usuário na Web está no front end. Sites de alto desempenho tem muitas técnicas úteis. A extensão do YSlow firefox do Yahoo também é útil.

Eu posso recomendar Construindo sites escaláveis e Alta escalabilidade blog.

    
por 12.08.2009 / 20:37
2

Existem muitas opções. Algumas tecnologias que estou usando para situações semelhantes são: haproxy para balanceamento de carga, nginx e lighttpd para veicular conteúdo estático, verniz para cache proxy, pulsação para alta disponibilidade entre servidores. Eu ainda mantenho o apache para servir conteúdo dinâmico com o cms publicando arquivos html estáticos e tentando evitar conexões com o banco de dados no frontend.

    
por 12.08.2009 / 17:08
0

Você sabe, dependendo exatamente do que está fazendo ... uma abordagem um pouco simplista pode ser aproveitar algo como o serviço CloudFront da Amazon:

link

Amazon CloudFront is a web service for content delivery. It integrates with other Amazon Web Services to give developers and businesses an easy way to distribute content to end users with low latency, high data transfer speeds, and no commitments.

Amazon CloudFront delivers your content using a global network of edge locations. Requests for your objects are automatically routed to the nearest edge location, so content is delivered with the best possible performance. Amazon CloudFront works seamlessly with Amazon Simple Storage Service (Amazon S3) which durably stores the original, definitive versions of your files. Like other Amazon Web Services, there are no contracts or monthly commitments for using Amazon CloudFront – you pay only for as much or as little content as you actually deliver through the service.

    
por 12.08.2009 / 17:27
0

Com o balanceamento de carga, eu também recomendo:

  • link para o armazenamento em cache das páginas, para que você acesse seu banco de dados e sistema de arquivos, etc ... menos
  • link para pesquisar seu db mais rápido do que o mysql ou o postgres podem
  • link para enviar e-mails mais rapidamente e de uma maneira mais inteligente do que a maioria dos MTAs gratuitos
por 12.08.2009 / 17:33