以前自己用的比较多的是
一般现在用什么比较多?
1
zreateny 2023-11-23 11:49:42 +08:00
supervisor 或者 watchdog
|
2
nigerunndayo 2023-11-23 12:52:15 +08:00
有哪位前辈能根据使用经验说一下这几个的区别吗?
|
3
cnleon 2023-11-23 13:06:05 +08:00
systemd 吧,操作系统自带的
|
4
Maboroshii 2023-11-23 13:36:19 +08:00
systemd 吧,系统自带的还是稳点。
|
5
IvanLi127 2023-11-23 13:39:53 +08:00 via Android
systemd 感觉挺 ok 的
话说现在不都上容器化了嘛😏 |
6
OceanBreeze 2023-11-23 14:31:53 +08:00
|
7
Maboroshii 2023-11-23 15:59:11 +08:00 via Android
@OceanBreeze 一个进程定义一个服务应该就可以
|
8
nevermoreluo 2023-11-23 16:18:50 +08:00
三个都用过,以下是个人感觉
易用性上 pm2 好,端口复用, 程序多开,日志分割统统都可以用 pm2 解决 稳妥上还是 systemd supervisor ,咋说呢,好几年前用过,稳定也挺稳定的,配置完之后也没太多改动,但是状态查看/管理,确实比 PM2 差很多 |
9
sdsaaeee 2023-11-23 17:55:29 +08:00
docker
|
10
libook 2023-11-23 18:00:37 +08:00
已经用容器很多年了。
不用容器的话,pm2 对开发友好一些,部署的话 systemd 更通用。 |
11
libook 2023-11-23 18:03:19 +08:00
@OceanBreeze #6 可以了解以下 systemd 的 target 机制。systemd 功能挺强大的,可以调整启动顺序和依赖关系,比如服务 A 依赖服务 B ,可以通过配置来让 systemd 启动 B 成功后再启动 A 。
|
12
OceanBreeze 2023-11-23 18:53:30 +08:00 via iPhone
@libook 这个我是知道的。我的意思是,假如我有一组进程,要启动 100 个。systemd 可以写一个 service 文件来完成吗?
|
13
xiaoz 2023-11-23 19:34:58 +08:00 via Android
@OceanBreeze #12 ,你这种直接写 shell 得了
|
14
aloxaf 2023-11-23 19:45:46 +08:00 1
@OceanBreeze #12 可以,systemd 支持模板
|
15
oneisall8955 2023-11-23 20:24:08 +08:00 via Android
portainer stack 写 docker compose 文件,快的飞起
|
16
LoliconInside 2023-11-23 21:12:17 +08:00
如果不打算容器化就用 systemd
如果愿意容器化,Docker Compose 如果觉得 Compose 起容器不好管理,Kubernetes |
17
yanqiyu 2023-11-23 21:31:23 +08:00 1
@OceanBreeze 写成模板 unit ,类似于 [email protected] 然后启动的时候就 @ 0-99 就启动了 100 个
|
18
OceanBreeze 2023-11-23 21:33:15 +08:00 via iPhone
@aloxaf 感谢,学习到了
|
19
ragnaroks 2023-11-23 22:52:23 +08:00
用 systemd 的最多,虽然有很多人不喜欢,但是已经成为事实上的标准。
supervisor 则在容器大行其道的现在回光返照了一把,因为常用的容器实现都不支持单 container 多顶级 process 。 |
20
n1cogrv 2023-11-23 22:54:23 +08:00
@OceanBreeze #18 补充一下 @nodejsexpress
https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#:~:text=Example%C2%A03.%C2%A0Top%20level%20drop%2Dins%20with%20template%20units 再加上 systemd 的 service 文件里面可以内嵌很多特殊变量,`%i`也仅仅是其中一个用来绑在`@`后面的 specifier ,还有很多变量可以在里面使用。 毕竟不选择 docker 那一套的话,自然你也会觉得 pm2 、supervisor 也不够稳妥。systemd 自带的那一堆 on-failure 、Requires 、PartOf 、Conflicts 考虑了很多种[强|弱|半]依赖情况以及一大堆 Condition 。只要肯吃透点文档,可用性会比 docker 那一套强一些。 具体可以看一下 https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html |
21
julyclyde 364 天前
你如果用 supervisorD 和 pm2 ,那他俩自身的安全又由谁来保障呢
追根溯源,必须托管给 PID1 才可以 |