6

我指的是十二因素应用程序“宣言”,可以在这里找到:http: //12factor.net

第八个因素中,作者写道:

十二因素应用程序进程不应守护或写入 PID 文件。相反,依靠操作系统的进程管理器(例如 Upstart,云平台上的分布式进程管理器,或开发中的 Foreman 等工具)来管理输出流、响应崩溃的进程以及处理用户启动的重启和关闭。

我不确定“进程永远不应该守护进程”是什么意思。

有人可以解释守护进程的优缺点 - 特别是在java进程的上下文中?另外,进程管理器不能管理守护进程吗?

4

1 回答 1

7

如果一个进程去恶魔化,则意味着它正在有效地尝试自行管理其生命周期。这对于某些应用程序类型是好的,但对于分布式 Web 应用程序,这是 12 因素宣言所涉及的应用程序类型,它通常意味着麻烦。如果一个应用程序试图自我管理,它可能不会被外部流程管理器轻松管理,或者在最好的情况下,这可能意味着需要这些管理器的自定义插件或扩展,这会使部署复杂化。

您希望对应用程序执行的操作以及守护程序可以阻止的示例是自动缩放。使用Mesos之类的工具,您基本上想告诉系统:“这是我的 50 台机器,现在将我的应用程序放在这些机器上”。您不想手动管理去哪里,而是让集群管理器自动处理它。它可能会根据条件自动设置更多或更少的实例,例如您的系统正在接收多少流量,并且它可以在一台机器上放置多个实例。如果一个应用程序试图管理自己,它会干扰并使这种外部管理变得不可能或非常复杂。

于 2015-02-10T18:50:01.107 回答