在生产环境怎么热加载?

请教:在生产环境中怎么进行热加载代码?

我在网上找到了 fresh 和 air,但是感觉只适合在开发环境时使用

总不能每次更新代码都是4连:

git pull
go build .
killall porojectName
nohup ./projectName &
新手勿怼,感谢大佬:pray:

最佳答案

平滑重启就行了吧

用endless,这样可以先替换bin包,再执行kill -SIGHUP 进程id就行了

2年前 评论
讨论数量: 3

不推荐使用热加载,生产环境的版本也不应该那么频繁的更新吧。

推荐看看 CICD,我自己的项目是用 github 生成文件后推到云服务器上,公司里的项目用 gitlab 构建 Docker 镜像。

另外你这就几行命令,整合成一个 sh 脚本就行了啊,比如 ./update.sh

2年前 评论

不推荐使用热加载,生产环境的版本也不应该那么频繁的更新吧。

推荐看看 CICD,我自己的项目是用 github 生成文件后推到云服务器上,公司里的项目用 gitlab 构建 Docker 镜像。

另外你这就几行命令,整合成一个 sh 脚本就行了啊,比如 ./update.sh

2年前 评论

平滑重启就行了吧

用endless,这样可以先替换bin包,再执行kill -SIGHUP 进程id就行了

2年前 评论

生产环境应该使用负载均衡进行流量切换,不应该使用热加载或平滑重启;

go部署在生成环境应该部署二进制,不使用代码部署,所以git pull等热加载操作不允许的;

使用热加载或平滑重启可能会遇到新进程启动失败的情况,新进程拉起失败,但是老服务已经stop或kill在退出了无法处理请求,在启动失败的情况下或服务中断。

在传统环境下可以使用nginx切换upstream实现手动切换流量,在容器环境下可以使用svc自动切换流量,实现好下线行为就可以无缝切换流量。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!