Como suportarei 100.000 solicitações por hora?

1

Eu sei que esta pergunta é um pouco estranha, mas tive sorte com uma ideia e preciso de alguns números para usar quando tento fazer um acordo com uma empresa. Eu estou querendo saber o quanto vai custar-me para executar um site que é pesado em PHP e fica entre 70.000 e 100.000 pedidos por hora em algo como Cloud Servers da Rackspace. Eu não tenho idéia de quantos servidores eu preciso ou quanta RAM cada um deveria ter. Haverá um número decente de imagens no site (provavelmente algo como 10.000 nas primeiras duas semanas) e o site será executado em cerca de 2.500 linhas de código PHP. Eu acho que eu deveria me inscrever para um CDN de algum tipo, embora CDN In A Box seja tudo o que eu ouvi falar e eu sou Não tenho certeza se é necessário para um site que já está em uma plataforma de nuvem. Eu obviamente nunca fiz nada parecido antes, então eu só estou olhando para obter uma estimativa do que eu preciso para este site massivo ... Além disso, eu uso um banco de dados e fiquei me perguntando como isso funciona - eu dedicaria um dos os servidores em nuvem para executar o banco de dados ou eu precisaria colocar o banco de dados em cada um dos servidores em nuvem? Agradecemos antecipadamente ...

    
por tylerl 24.06.2011 / 10:00

1 resposta

4

Em primeiro lugar, 100 mil solicitações por hora são nada quando se trata de pilhas modernas de hardware e software, supondo que o código não esteja escrito de maneira tão ruim assim mesmo. Ele funciona com aproximadamente 28 solicitações por segundo, o que seu telefone pode atender:)

Agora, quanto à sua configuração, você vai querer pelo menos duas máquinas, seja uma configuração de carga dinâmica ao vivo ou ao vivo ou uma situação ao vivo / em espera. Isso permitirá que você lide rapidamente com falhas de hardware, corrupção de dados, configuração incorreta, etc.

Se você acha que seu site pode crescer muito mais rápido do que o planejado agora, talvez queira adotar o sistema muito comum de três camadas. É aqui que você tem um ou mais servidores de banco de dados que executam esse trabalho, um ou mais servidores de aplicativos que executam seu código e um ou mais servidores da Web que simplesmente fazem o frontend de solicitação. Esse modelo permite dimensionar muito mais rápida e linearmente, mas obviamente exige que você projete essas divisões em seu código. Esse modelo é irrelevante se você estiver usando uma plataforma física, virtual ou baseada em nuvem - embora as caixas de banco de dados degradem mais e mais rapidamente em um ambiente virtual / em nuvem devido às taxas mais baixas de I / O que você recebe com essas.

Além disso, se você pretende fazer muitos dos folhetos de arquivos estáticos, como imagens / vídeos, etc., então um CDN pode fazer sentido. Eles não estão livres, claro, então você precisa fazer as contas para descobrir se faz mais sentido manter as coisas "internas" ou enviá-las para um CDN, há muito por onde escolher (akamai e centro das atenções são os dois que saltam para se importar com boa reputação), mas somente você pode decidir com base em ave-por-solicitação vs. número de solicitações versus custo por byte / MB para entrega interna e externa.

Finalmente, faça backups - backups adequados, não apenas snaps, mantenha alguns deles fora do local e faça restaurações de teste com hardware off-line de vez em quando para verificar se eles funcionam. Sério cara, você não acreditaria quantos usuários que vemos neste site que não fizeram backup corretamente, não levaram alguns deles para fora do site ou nunca os testaram - e nós nunca os vemos novamente, seus negócios falharam ou demitido - então leve isso a sério, por favor:)

Volte se precisar de mais ajuda e se estiver procurando pessoas para ajudá-lo a crescer, dê uma olhada no nosso site de carreiras (geralmente há um link na parte inferior da página), pois ele está cheio de pessoas de este site e nosso site irmão (stackoverflow - para codificadores) que podem estar em sua área e felizes em trabalhar com você.

Boa sorte.

    
por 24.06.2011 / 10:17