Pergunta

Eu estou projetando um aplicativo que vai consistir de 3-4 serviços que são executados como processos separados e são ligados por uma IPC adequado. O sistema vai ter uma interface web e eu quero usar qualquer servidor web está lá.

A interface web deve ser acessado sob alguma URL que permite ter outras URLs no mesmo servidor web fazendo coisas totalmente diferentes. Estou planejando usar o caminho a seguir que URL para especificar o que a interface web deve fazer. Tem instalações para uso por outros aplicativos sobre a rede e para os seres humanos para interagir com em um navegador.

Off the cuff, eu trabalho como segue:

  • fazer o fogo webserver-se um processo CGI para cada solicitação que recebe (como SetHandler no Apache)
  • deixar o CGI conectar ao IPC
  • deixá-lo conseguir tudo o que necessita dos serviços de back-end
  • deixar o CGI retorno HTML / XML e tudo o HTTP Estado com base nas respostas dos serviços

Agora, o que eu realmente quero é para evitar as duas primeiras etapas, ou se eu não puder, evite o segundo, porque tenho medo que eu estou desperdiçando o desempenho em sobrecarga unneccesary (os pedidos provenientes de outras aplicações pode ser freqüente).

PHP, por exemplo, pode abrir conexões persistentes para um banco de dados MySQL que sobrevivem tempo de execução do script e não precisa ser recriado na próxima vez, embora eu não sei como eles realmente fazê-lo. Além disso, como eu o entendo, os módulos do Apache são carregados uma vez quando o servidor é iniciado, de modo que pode remover o primeiro passo, mas iria me amarrar a Apache.

Então, o que são boas maneiras para ligar um manipulador para URLs específicos em diferentes servidores web? Eu não quero lidar com o HTTP, caso contrário eu só poderia usar uma configuração de proxy para um segundo servidor, mas apenas parece ser tão reinventando-a-roda. Se você pensar, CGI é fino e tem exemplos em que lida com um grande número de solicitação de uma estrutura semelhante, por favor me avise.

Foi útil?

Solução

OK, eu esquecido isso anteriormente. Explicando a minha pergunta aqui me trouxe para ele:

Em vez de criar um novo processo para cada pedido, FastCGI pode usar um único processo persistente que lida com muitos pedidos durante sua vida útil. - Wikipedia: FastCGI

Outras dicas

Mesmo sob cargas moderadas, CGI é uma besta muito unscalable. FastCGI é uma opção, mas você provavelmente vai também encontrar um pacote mod_XXXX onde XXXX é o nome do seu idioma. Há um mod para Ruby, Perl e Python, por exemplo, e, provavelmente, uma feira de alguns outros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top