moqsien e6ea8e4fdd v1.0.3
2022-09-22 14:10:43 +08:00
2022-09-22 13:59:01 +08:00
2022-09-05 11:42:31 +08:00
2022-09-05 11:42:31 +08:00
2022-09-05 11:42:31 +08:00
2022-09-05 11:42:31 +08:00
2022-09-05 11:42:31 +08:00
2022-09-05 11:42:31 +08:00
2022-09-05 11:42:31 +08:00
2022-09-05 11:37:37 +08:00
2022-09-05 11:42:31 +08:00
2022-09-06 20:11:05 +08:00
2022-09-05 11:42:31 +08:00
2022-09-05 11:42:31 +08:00
2022-09-22 14:10:43 +08:00
2022-09-05 11:42:31 +08:00
2022-09-22 14:10:43 +08:00
2022-09-06 21:13:42 +08:00
2022-09-07 22:51:14 +08:00

说明

DMicro微服务框架的多进程管理代码在众多go微服务框架中感觉设计上面比较有意思也比较方便通用。 这里把DMicro中的supervisor模块抠出来了进行了一些优化结构更清晰代码更简洁更容易阅读和修改。 可以按照DMicro的DServer设计一套微服务管理框架。适配不局限于DRpc、ghttp等。 目前仅支持linux。

功能

  • 提供日志功能
  • 提供进程自动重启功能
  • 启动失败自动重试
  • 进程启动成功确认(过多少秒之后检查一次,进程仍在运行,则说明成功)
  • 提供进程管理功能
  • 进程平滑重启

使用方法

manager := NewProcManager()
path := os.Args[0]
name := "test"
// 如果不传path默认为os.Args[0]
process, _ := manager.NewProcess(name,
                                processes.ProcPath(path),
                                processes.ProcArgs([]string{"go", "get", "xxx"}))
process.StartProc(true)

简单示例

设计原理

1、exec.Cmd创建进程执行外部命令

2、Process异步起动可以传入wait参数阻塞父goroutine

3、ProcManager管理正在运行的进程

4、通过向进程发送SIGNAL控制进程的退出

5、通过Clone实现平滑重启

Thanks To

DMicro

Description
process management in go. go语言进程管理.
Readme MIT 132 KiB
Languages
Go 100%