2015-02-04 18 views
5

Jestem w odniesieniu do Dwunastu-Factor APP „manifest”, który można znaleźć tutaj: http://12factor.netwyjaśnienie potrzebne o ósmej czynnik manifestu Dwunastu-Factor App i daemonized procesy

W eighth factor, autor pisze :

Procesy aplikacji dwunastokrotnie nie powinny dememonizować ani zapisywać plików PID. Zamiast tego należy polegać na menedżerze procesów systemu operacyjnego (na przykład Upstart, rozproszonym menedżerze procesów na platformie chmurowej lub na narzędziu , takim jak Foreman w fazie rozwoju), aby zarządzać strumieniami wyjściowymi, reagować na przeterminowane procesy i obsługiwać inicjowane przez użytkownika ponowne uruchamianie i wyłączanie.

Nie jestem pewien, co rozumie się tutaj przez "procesów nigdy nie daemonize".

Czy ktoś mógłby wyjaśnić, jakie będą plusy i minusy demonizacji procesu - szczególnie w kontekście procesu java? Czy proces demonazy nie może być zarządzany przez menedżera procesów?

Odpowiedz

5

Jeśli proces ulega deamonizacji, oznacza to, że skutecznie próbuje samodzielnie zarządzać swoim cyklem życia. Jest to dobre w przypadku niektórych typów aplikacji, ale w przypadku rozproszonej aplikacji sieciowej, a jest to rodzaj aplikacji, której dotyczy 12-czynnikowy manifest, będzie to zwykle oznaczać kłopoty. Jeśli aplikacja próbuje sama się zarządzać, prawdopodobnie nie będzie łatwo zarządzana przez zewnętrznych menedżerów procesów, aw najlepszym przypadku może to oznaczać, że potrzebne będą niestandardowe wtyczki lub rozszerzenia dla tych menedżerów, co utrudnia wdrażanie.

Przykładem tego, co chciałbyś zrobić z aplikacją i tym, czym może być dezemonizacja, byłoby automatyczne skalowanie. Dzięki takim narzędziom jak Mesos, zasadniczo chcesz powiedzieć systemowi: "Oto moje 50 maszyn, teraz umieść moje aplikacje na tych komputerach". Nie musisz ręcznie zarządzać tym, co się dzieje, ale pozwolić menedżerowi klastra poradzić sobie z nim automatycznie. Może ustawić więcej lub mniej instancji automatycznie w zależności od warunków, np. ile ruchu uzyska twój system, i może umieścić kilka instancji na jednym komputerze. Jeśli aplikacja spróbuje sama się zarządzać, zakłóci to i uniemożliwi lub utrudni takie zewnętrzne zarządzanie.