Proteção contra concorrência do MySQL / enfileiramento / clustering [fechado]

1

Prevemos, em um envelope de 30 minutos, aproximadamente 500.000 acessos em nossa página no Facebook.

O conteúdo dinâmico - HTML - estático será tratado, obviamente, pelo servidor web, cache e elementos CDN - portanto, não deve haver problemas com isso.

O que eu preciso é de alguns pontos sobre como os especialistas lidam com problemas do MySQL com números tão grandes de usuários.

  1. A página do Facebook é basicamente apenas uma forma de competição.
  2. Vamos inserir um conjunto de dados muito pequeno
  3. Não há leitura do banco de dados durante esse período. \
  4. PHP será a linguagem do lado do servidor
  5. Nós temos que usar o MySQL em nosso host, não podemos usar RDS ou similar por exemplo.

Eu li em Clustering / Queuing / Table Types - mas depois de algumas experiências com especialistas sobre o Stack Overflow dos problemas que posso esperar.

    
por Ian Warner 04.08.2011 / 16:13

1 resposta

1

A única resposta útil é avaliar seu sistema e ver o que você precisa para atingir suas metas. Uma resposta mais específica é difícil devido ao grande número de configurações possíveis (hardware, software, configuração, carga externa, uso, etc ...).

Geralmente, no entanto, 1 milhão de ocorrências / hora pode não ser tão difícil, dependendo de quantas consultas você tem por ocorrência e da complexidade delas. Por exemplo, 1 query / hit calcula 280 consultas por segundo, que devem ser facilmente executáveis no hardware intermediário. Por exemplo, eu tenho um servidor MySQL de baixo custo com média de 150 consultas / seg com 10% de uso da CPU. Tenha em mente que este é um sistema bem otimizado com uso de leitura pesada.

Eu começaria olhando se um servidor é capaz de lidar com a carga que você espera, pois será muito mais barato e mais fácil de configurar, mesmo que exija um hardware mais avançado. Se um único servidor não parecer viável, eu veria um esquema de particionamento simples: dividir as gravações em vários servidores MySQL independentes (exatamente como depende do que você está fazendo).

Não há dúvidas de outros projetos mais complexos de clustering / particionamento, mas eu tentaria manter o sistema o mais simples possível, especialmente se você não estiver familiarizado com a configuração e uso deles.

    
por 22.08.2011 / 18:55

Tags