nginx/node.js/postgres, problemas de escalabilidade?

nginx/node.js/postgres, problemas de escalabilidade?

Eu tenho um aplicativo em execução com:

  • uma instância do nginx como frontend (servindo arquivo estático)
  • um cluster de aplicativo node.js para o back-end (usando módulos cluster e expressjs)
  • uma instância do Postgres como banco de dados

Esta arquitetura é suficiente se o aplicativo precisar de escalabilidade (isto é apenas para solicitações HTTP/REST) ​​para:

  • 500 solicitações por segundo (cada solicitação busca apenas dados do banco de dados, esses dados podem ter vários ko e sem grandes cálculos necessários após a busca).

  • 20.000 usuários conectados ao mesmo tempo

Onde poderiam estar os gargalos?

Responder1

Uma instância do nginx pode lidar com milhares de pequenos arquivos estáticos por segundo sem suar a camisa.

A escalabilidade da camada do aplicativo depende mais do seu aplicativo do que do node.js - se ele estiver armazenando arquivos/dados da sessão/etc localmente, as coisas podem ficar complicadas, mas se você estiver colocando todo o armazenamento em um local central como o banco de dados (ou talvez algo como Redis para armazenar dados de sessão), então dimensionar a camada do aplicativo adicionando mais nós deve ser fácil.

O banco de dados é quase sempre a coisa mais difícil de escalar; se você estiver fazendo principalmente leituras, o postgres 9.1 possui alguns recursos de hot standby muito interessantes que permitem que você tenha um banco de dados mestre de leitura/gravação e vários escravos somente leitura que podem lidar com a maior parte do trabalho de leitura.

Desenvolver um sistema de banco de dados com muitas gravações é provavelmente o problema de escalabilidade mais difícil; quando um servidor de banco de dados super robusto não consegue acompanhar, a maioria das pessoas acaba repensando e reescrevendo totalmente seus aplicativos (a menos que isso tenha sido planejado desde o início, mas planejar vários bancos de dados mestres tornará muitas coisas mais difíceis e lentas para começar). , e é muito raramente necessário - a rede stackoverflow está toda em um banco de dados IIRC)

informação relacionada