集群系统的任务重启、通信及应用探索
1. 主任务重启策略
当子任务终止时,会向其父任务发送信号,但如何检测父任务的终止呢?根据父任务的启动方式,有几种处理方法:
- 高级启动进程 :开发一个高级启动进程,其职责是启动所有通常在最高级别运行的进程,并对它们进行监控,若有进程失败则重启。
- 操作系统启动并重启 :让操作系统启动进程,并指定在进程失败时重启。可以通过系统文件 /etc/inittab (以 root 用户身份)将自己的可执行文件添加到特定运行级别启动(必要时重启)的进程列表中。不过,使用这种技术的缺点是进程可能难以终止。
- 检测“心跳” :主进程的父进程可以检测子任务的终止,对于远程节点上运行的从进程的终止检测和恢复,可以利用“心跳”机制。从进程激活后会向主进程注册,二者之间存在未使用的 UDP 通信链路。从进程每秒向主进程发送一个 UDP 数据报(即“心跳”),主进程记录每个从进程最后一次收到消息的时间。每次有查询到来时,主进程扫描这些时间,若某个从进程在可配置的时间内未被收到消息,则通过其 UDP 服务端口重启该从进程及其本地子任务。
graph LR
A[主进程] -->|注册| B[从进程]
B -->|每秒发送 UDP 数据报(心跳)| A
A -->|扫描时间| C{是否超时}
C -->|是| D[重启从进程及其子任务]
C -->|否| E[继续监控]
超级会员免费看
订阅专栏 解锁全文
1055

被折叠的 条评论
为什么被折叠?



