作者:厉害了 | 来源:互联网 | 2022-10-15 17:45
go社区有一些开源项目,可以自动检测web应用的改变,并实现自动的更新,但这些应用都是检测源码、资源文件的更新,启动build过程,实现自动的编译和重启。例如gin和fresh,这些应用适合应用于开发和测试阶段。
Golang标准库的http部分提供了强大的web应用支持,再加上negroni等中间件框架的支持,可以开发高性能的web应用(如提供Restful的api服务等)。 (推荐学习:go)
通常这些web应用部署在多台Linux操作系统的应用服务器上,并用Nginx等做为反向代理,实现高可用的集群服务。当应用版本升级时,如何实现比较优雅的多态服务器的版本更新呢?
问题分析
Web应用的更新,我觉得可能需要考虑几个方面的问题:
编译好的应用二进制文件、配置文件上传到服务器上;
应用服务器能感知到有新的版本上传;
在没有停止服务的情况下,热更新版本;
最好所有的更新过程,可以脚本化,减少手动操作的错误。
方案
其实,go社区有一些开源项目,可以自动检测web应用的改变,并实现自动的更新,但这些应用都是检测源码、资源文件的更新,启动build过程,实现自动的编译和重启。
例如 gin和 fresh,这些应用适合应用于开发和测试阶段,可能并不适合应用的部署和更新,但提供了良好的思路。
部署环境的目录及版本的上传
我将发布的应用二进制文件和配置文件,存放在某个目录下,如 ~/app/release,每个版本都保留在这个目录中,例如app.1.0、app.1.1、app.2.0,一旦发现有问题,可以及时的回滚
以上就是golang 怎么做热更新的详细内容,更多请关注其它相关文章!