Frage

Ich bin der Gestaltung einer Anwendung, die bestehen aus 3-4 Dienste geht, die als separate Prozesse laufen und werden durch eine geeignete IPC verbunden. Das System wird ein Web-Interface haben, und ich möchte verwenden, was Web-Server vorhanden ist.

Das Web-Interface sollte unter einer URL zugegriffen werden, die andere URLs auf dem gleichen Webserver tun ganz andere Dinge haben können. Ich plane, den Pfad unter dieser URL zu verwenden, um festzulegen, was das Web-Interface tun sollte. Es verfügt über Einrichtungen für die Verwendung durch andere Anwendungen über das Netz und für Menschen mit in einem Browser zu interagieren.

Aus der Manschette, ich würde arbeiten wie folgt:

  • macht die Webserver einen CGI-Prozess Feuer für jede Anforderung es (wie SetHandler in Apache) empfängt
  • lassen Sie die CGI zum IPC
  • connect
  • lassen sie bekommen, was sie von dem Backend-Service benötigen
  • lassen Sie die CGI Rückkehr HTML / XML und was HTTP-Status basierend auf der Dienst Antworten

Nun, was ich wirklich will, ist die ersten beiden Schritte zu vermeiden, oder wenn ich nicht vermeiden, die zweiten, weil ich Angst habe, dass ich Leistung auf unneccesary Overhead bin verschwenden (die Anfragen aus anderen Anwendungen kommen könnte sein, häufig).

PHP, kann beispielsweise persistente Verbindungen zu einer MySQL-Datenbank öffnen, die die Skriptlaufzeit überleben und müssen nicht beim nächsten Mal neu erstellt werden, obwohl ich weiß nicht, wie sie es tatsächlich tun. Auch, wie ich es verstehe, sind die Apache-Module einmal geladen, wenn der Server gestartet wird, so dass der erste Schritt entfernen könnte, aber würde mich Apache binden.

Also, was sind gute Möglichkeiten, einen Handler für bestimmte URLs in verschiedenen Web-Servern Haken? Ich will nicht den HTTP zu handhaben, sonst könnte ich nur ein Proxy-Setup auf einen zweiten Server verwenden, aber es scheint nur so zu werden neu zu erfinden the wheel. Wenn Sie denken, CGI ist in Ordnung und Beispiele, wo es eine große Anzahl von Anforderung einer ähnlichen Struktur behandelt, lassen Sie es mich wissen.

War es hilfreich?

Lösung

OK, ich übersehen vorher diese. Erklären meine Frage hier brachte mich auf sie:

  

Statt einen neuen Prozess für jede Anforderung zu schaffen, FastCGI kann einen einzelnen persistenten Prozess verwendet werden, die viele Anfragen über die gesamte Lebensdauer behandelt. - Wikipedia: FastCGI

Andere Tipps

Auch bei mittleren Belastungen, CGI ist ein ziemlich unscalable Tier. FastCGI ist eine Option, aber Sie werden wahrscheinlich auch ein mod_XXXX Paket finden XXXX der Name Ihrer Sprache. Es gibt eine Mod für Ruby, Perl und Python zum Beispiel und wahrscheinlich eine faire paar andere.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top