在 Go (golang) 中可监控、优雅重启、自动升级的二进制文件
overseer 是一个用 Go (golang) 编写的可监控、可友好重启、可自动升级的二进制文件包。本项目的主要目标是方便创建与标准进程管理器兼容的自动升级二进制文件,其次,它应该提供一个小而简单的 API,具有合理的默认值。
通常,优雅的重启是由活动进程(蓝色)关闭其监听器,并将这些匹配的监听套接字文件(绿色)传递给新启动的进程。这种重启会导致任何前台进程监控错误地检测到程序崩溃。overseer 尝试通过使用一个小进程来执行此套接字文件交换,并代理来自活动进程的信号和退出代码来解决这个问题。
此程序与进程管理器一起工作,支持无故障的零停机时间重启,并自动升级其自身的二进制文件。
overseer 使用主进程检查并安装升级,以及一个子进程来运行 Program。Address/es 中检索监听程序的文件。Program 所需的 Listener/s。Fetcher 在 goroutine 中运行,并以预先配置的间隔检查更新。当 Fetcher 返回一个有效的二进制流 (io.Reader) 时,主进程将其保存到临时位置,验证后替换当前二进制文件,并启动优雅重启。fetcher.HTTP 接受一个 URL,它会使用 HEAD 请求轮询此 URL,直到检测到变化。在变化时,我们会 GET URL 并将其流回 overseer。另见 fetcher.S3。暂无开放 Issues,或尚未同步最近议题。