2015-02-04 19 views
5

Ich bin in Bezug auf das Zwölf-Factor App „Manifest“, die hier gefunden werden kann: http://12factor.netKlärungsbedarf über den achten Faktor des Zwölf-Factor App Manifests und daemonisierte Prozesse

Im eighth factor, schreibt der Autor :

Zwölf-Faktor-App-Prozesse sollten niemals PID-Dateien dämonisieren oder schreiben. Stattdessen verlassen sich auf den Prozessmanager des Betriebssystems (wie Upstart, ein verteiltes Prozessmanager auf einer Wolke Plattform oder einem Werkzeug wie Foreman in Entwicklung) Ausgangsströme zu verwalten, antworten Prozesse abgestürzt ist, und der Griff vom Benutzer initiierte Neustarts und Herunterfahren.

Ich bin nicht sicher, was hier gemeint ist, von „Prozesse sollten nie daemonize“.

Kann jemand bitte erklären, was die Vor- und Nachteile der Daemonisierung eines Prozesses wären - besonders im Zusammenhang mit einem Java-Prozess? Kann ein dämonisierter Prozess auch nicht von einem Prozessmanager verwaltet werden?

Antwort

5

Wenn ein Prozess deamonisiert, bedeutet dies, dass er effektiv versucht, seinen Lebenszyklus selbst zu verwalten. Das ist gut für bestimmte Anwendungstypen, aber für die verteilte Webanwendung, und dies ist die Art von App, die das 12-Faktor-Manifest betrifft, wird es normalerweise Probleme bedeuten. Wenn eine App versucht, sich selbst zu verwalten, wird sie wahrscheinlich nicht einfach von externen Prozessmanagern verwaltet, oder im besten Fall können benutzerdefinierte Plugins oder Erweiterungen für diese Manager benötigt werden, was die Bereitstellung erschwert.

Ein Beispiel, was Sie mit einer App machen möchten und was die Daemonisierung verhindern könnte, wäre die automatische Skalierung. Mit Tools wie Mesos möchten Sie dem System im Wesentlichen mitteilen: "Hier sind meine 50 Rechner, jetzt legen Sie meine Apps auf diese Rechner". Sie möchten nicht manuell verwalten, was wo hingeht, sondern vom Cluster-Manager automatisch verarbeiten lassen. Es kann mehr oder weniger Instanzen automatisch abhängig von Bedingungen einrichten, z. wie viel Verkehr Ihr System empfängt, und es könnte mehrere Instanzen auf einer einzigen Maschine platzieren. Wenn eine App versucht, sich selbst zu verwalten, wird dies stören und eine solche externe Verwaltung unmöglich machen oder sehr komplex machen.