OK, vamos ver.
-
Idioma: Irrelevante. Mesmo. Você fala de front ends agrupados de qualquer maneira, e se você os construir corretamente, é praticamente algo que você pode dimensionar tanto quanto quiser. Dito isto, obviamente fique longe de linguagens INTERPRETADO (como PHP "stock") e vá com aqueles que são pelo menos apenas no tempo compilado (existe um para PHP - não tenho certeza). Se você quiser que a API adira aos padrões, isso significa um front-end baseado em SOAP / REST - o ASP.NET / C # pode ser uma boa opção aqui, porque o sistema tem um suporte muito strong para os serviços da web. Não só consumindo-os. Você também pode querer olhar para OData ( link ) para algumas coisas. Não tenho certeza de como um bom suporte para hospedagem de serviços da Web é em outros sistemas - mas você pode querer alguns dos pontos mais complexos e MS está empurrando muito bem serviços da web.
-
Banco de dados: parece que você está lendo pesado. Isso é bom porque significa que você pode trabalhar em uma configuração hub / spoke com um banco de dados centralmente, levando todas as gravações e replicando as alterações para outros computadores. As leituras podem ser distribuídas entre elas. Dito isto, você fala de configuração massiva aqui.
Agora, oo carregamento. Você fala de um pico de possivelmente 100.000 a 250.000 consultas por minuto (depende de quão alto seus picos são - se muitas pessoas usam isso durante o início do trabalho, ele será bastante grande). Isso é cerca de 4166 consultas por segundo.
Pessoalmente, acho que você está no spce para clustering do SQL Server / Oracle. De qualquer forma, no SQL Server você possivelmente iria com:
- Um cluster de banco de dados central (2 instâncias enterpris edition, possivelmente padrão, mas que precisa de mais detalhes - sob contrato de licença SPLA) mirado + um pequeno como testemunha) para manipular a cópia mestre e também fazer gravações. Se você usa uma configuração mestre / escravo, deve-se realmente ter um licenciamento livre. Se você conseguir viver com a edição padrão - não é tão caro. Mas você precisa de uma janela de manutenção para a reogra- nização do índice, se a necessidade chegar. O pequeno banco de dados (testemunha de espelhamento) pode ser um dos servidores da web. É meramente usado como "terceiro voto", que servidor de banco de dados deve usar em caso de dúvida (como partes de rede caindo). Em seguida, decide qual dos servidores será encerrado.
Se isso não for suficiente para lidar com a carga - mas pode ser, se você fizer o projeto do db corretamente e obter alguns sistemas finais mais avançados (opterons duplos de seis núcleos). É possível instalar todo o hardware de uma unidade em uma gaiola com 2 unidades de rack - o Supermicro tem alguns que têm espaço para 24 discos rígidos de 2,5 ". Não é preciso ir SAS - os WD Velociraptors devem ser mais eficientes e obter um SSD rápido e um controlador RAID Adaptado e você obtém o SSD como buffer de leitura;) Deve ser mais que suficiente para lidar com sua carga.
Se isso não funcionar bem o suficiente, basicamente você precisa de mais recursos.
- Um cluster de cópias replicadas do banco de dados. Você possivelmente poderia usar a edição da Web aqui, que aceita ser um destino de replicação e é muito barato de usar. Aqueles que não receberiam atualizações / inserções e seriam apenas cópias de leitura. Você pode facilmente usar um balanceador de carga na frente deles (que janelas tem fora da caixa).
Configurações semelhantes devem ser possíveis com - bem ... não tenho certeza. Oracle - sim. MySQL - alguém pode entrar e responder.