Domanda

Sto progettando un'applicazione che consisterà in 3-4 servizi che funzionano come processi separati e sono collegati da un IPC adatto. Il sistema avrà un'interfaccia web e voglio usare qualunque webserver sia presente.

È necessario accedere all'interfaccia Web con alcuni URL che consentono di avere altri URL sullo stesso server Web facendo cose totalmente diverse. Sto programmando di utilizzare il percorso sotto tale URL per specificare cosa dovrebbe fare l'interfaccia Web. Ha funzionalità che possono essere utilizzate da altre applicazioni in rete e con le quali gli utenti possono interagire in un browser.

Al di fuori del bracciale, lavorerei come segue:

  • trasforma il server web in un processo CGI per ogni richiesta che riceve (come SetHandler in Apache)
  • consenti al CGI di connettersi all'IPC
  • lascia che ottenga tutto ciò di cui ha bisogno dai servizi di backend
  • consente al CGI di restituire HTML / XML e qualunque sia lo stato HTTP in base alle risposte dei servizi

Ora, ciò che voglio davvero è evitare i primi due passaggi, o se non posso, evitare il secondo, perché temo di sprecare le prestazioni per spese generali non obbligatorie (le richieste provenienti da altre applicazioni potrebbe essere frequente).

PHP, ad esempio, può aprire connessioni persistenti a un database MySQL che sopravvivono al runtime dello script e non devono essere ricreate la prossima volta, anche se non so come lo fanno effettivamente. Inoltre, a quanto ho capito, i moduli Apache vengono caricati una volta all'avvio del server, in modo da poter rimuovere il primo passaggio ma legarmi ad Apache.

Quindi, quali sono i modi migliori per agganciare un gestore per URL specifici in diversi server web? Non voglio gestire l'HTTP, altrimenti potrei semplicemente usare una configurazione proxy su un secondo server, ma sembra proprio essere così reinventante. Se pensi che CGI stia bene e abbia esempi in cui gestisce un gran numero di richieste di una struttura simile, per favore fatemelo sapere.

È stato utile?

Soluzione

OK, l'ho trascurato in precedenza. Spiegare la mia domanda qui mi ha portato su di essa:

  

Invece di creare un nuovo processo per ogni richiesta, FastCGI può utilizzare un singolo processo persistente che gestisce molte richieste nel corso della sua vita. - Wikipedia: FastCGI

Altri suggerimenti

Anche con carichi moderati, la CGI è una bestia piuttosto non scalabile. FastCGI è un'opzione, ma probabilmente troverai anche un pacchetto mod_XXXX dove XXXX è il nome della tua lingua. C'è una mod per ruby, perl e python per esempio e probabilmente poche altre.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top