2014-10-21 8 views

Antwort

3

Ich denke, weil es Ihnen eine große Flexibilität gibt, wenn die Zeit zum Hochskalieren Ihrer App kommt. Wenn Sie Tomcat verwenden, müssen Sie Ihre .war-Datei kopieren und in einen anderen Tomcat kopieren. Anschließend laden Sie Ihre Anforderungen auf eine der beiden Dateien.

Stattdessen Wenn Ihre App einen eigenständigen http-Server hat, führen Sie einfach eine andere Instanz in einem anderen Port aus und vergessen Sie alle Tomcat-Sachen. Sie müssen Ihre Anforderungen immer noch auf Ihre App-Instanzen verteilen, aber es scheint einfacher zu sein.

+0

Sie können Embedded Tomcat oder Embedded Jetty verwenden, um Ihren Dienst verfügbar zu machen –

7

Um Regeln zu Portbindungen und eigenständigen Apps zu verstehen, ist es hilfreich, die Dinge aus der Perspektive der Plattformen zu betrachten, auf denen 12-Faktor-Apps wie Heroku oder Deis ausgeführt werden.

Diese Plattformen skalieren Anwendungen auf Prozessebene. Wenn Prozesse hochskaliert werden, versucht die Plattform, diese zusätzlichen Worker hinter dem Routing-Netz zu platzieren, damit sie mit dem Bedienen von Verkehr beginnen können. Wenn die App nicht eigenständig ist und z. B. eng mit einem Front-End-Apache-Server unter Verwendung von mod_jk gekoppelt ist, ist eine Skalierung nicht möglich, indem mehr isolierte Worker-Prozesse ausgeführt werden.

Portbindung existiert, um das Problem der "Port Brokering" auf Plattformebene zu lösen. Wenn jeder Anwendungsarbeiter Port 80 hört, würde es Konflikte geben. Um dies zu lösen, ist die Portbindung eine Konvention, bei der die Anwendung einen Port überwacht, den die Plattform zugewiesen hat - und der als Umgebungsvariable $PORT übergeben wird. Dies stellt sicher, dass a) der Anwendungsarbeiter den richtigen Port überwacht und b) die Plattform weiß, wohin der für diesen Worker bestimmte Verkehr geleitet werden soll.

Verwandte Themen