Servidores SQL altamente disponíveis e escaláveis com bancos de dados somente leitura?

3

Estou pensando em criar um site que possa gerar muito tráfego. Seria uma espécie de site de pesquisa com capacidades wiki. Assim, os usuários poderão editar informações no site. No entanto, 99% dos usuários provavelmente nunca editariam nada e simplesmente procurariam / navegariam pelo site. Então, eles poderiam teoricamente fazer a maioria das coisas a partir de uma cópia somente leitura do banco de dados.

Com isso em mente, eu estava pensando que colocar algo assim funcionaria bem ...

Portanto,haverátrêsservidoresfísicosnomesmodatacenter:

  • O"SQL Server primário" receberia qualquer operação UPDATE, INSERT ou DELETE.
  • Os dois servidores da Web teriam cópias somente para leitura desse banco de dados, que seriam mantidas atualizadas com o envio de logs. Esses servidores seriam consultados intensamente à medida que os usuários naveguem pelo site e também forneçam páginas ASP.NET pelo IIS.

Eu gosto que este modelo melhore a escalabilidade e a confiabilidade ao mesmo tempo. Se um dos servidores da Web cair, não haverá interrupção do serviço. Se o SQL Server primário ficar inoperante, certas funções do site seriam desabilitadas, mas o site ainda estaria em estado de somente leitura, por assim dizer. Então, por último, o balanceador de carga distribuiria a carga entre os dois servidores da Web, o que é bom.

Mas tenho algumas perguntas sobre isso:

  1. O envio de log é um bom método para realizar isso?
  2. Qual é a versão mínima do SQL Server necessária para fazer isso? Por exemplo, seria possível executar a edição da Web do SQL Server no SQL Server primário e no SQL Express nos servidores da Web?

Obrigado pela sua ajuda.

    
por Steve Wortham 09.08.2012 / 18:39

1 resposta

2

O que você descreveu funcionaria.

No entanto, se a sua maioria é somente leitura, você estará lidando com a resposta mais fácil, muitas vezes é olhar para caches na memória ou distribuídos. Assim, por exemplo, quando seus servidores da web são ativados, eles carregam "x" quantidade de dados na memória de seu servidor da Web ou de um servidor de cache.

Todos os pedidos de usuários iriam para o cache na memória (muito rápido). Qualquer atualização pode então acionar o cache para voltar ao banco de dados e obter a cópia mais recente para solicitações futuras.

Dê uma olhada no sistema Windows Server App Fabric. Em você quer o verdadeiro HA, o mesmo conjunto de recursos está disponível com o Windows Azure e tornaria as coisas ainda mais redundantes.

    
por 09.08.2012 / 18:48