gpt4 book ai didi

http - 使用 Go 时在生产服务器上更新代码

转载 作者:IT王子 更新时间:2023-10-29 01:55:20 25 4
gpt4 key购买 nike

当我使用 PHP 在生产服务器上开发和更新文件时,我只是即时复制文件,一切似乎都在不中断服务器的情况下工作。

但是如果我要更新 Go 服务器和应用程序上的代码并且需要杀死服务器,将 src 文件复制到服务器,运行 go install,然后启动服务器,这会中断服务,并且如果我经常这样做,那么这对我的服务用户来说会很糟糕。

在使用 Go 和 Go 的 http 服务器时,如何在不停机的情况下更新文件?

最佳答案

PHP 是一个 interpreted language ,这意味着您以源格式提供代码,PHP 解释器将读取并执行它(它可能会创建更紧凑的二进制形式,以便在需要时不必再次分析源代码)。

Go 是一个 compiled language ,它编译成 native 可执行二进制文件;更进一步,它是静态链接,这意味着您的应用程序引用的每个代码和库都在创建可执行文件时编译和链接。这意味着您不能只是将新的 go 模块“插入”到正在运行的应用程序中。

您必须停止正在运行的应用程序并启动新版本。但是,您可以最大限度地减少停机时间:只有在新版本的可执行文件已创建并准备好运行时才停止正在运行的应用程序。您可以选择在远程机器上编译它并将二进制文件上传到服务器,或者上传源代码并在服务器上编译它,这都没有关系。

有了这个,您可以将停机时间减少到最多几秒钟,而您的用户不会注意到这一点。另外你不应该每小时更新一次,你不可能在一个小时的编码中真正实现重大更新。您可以安排每天更新一次(甚至频率更低),也可以安排在流量较低的几个小时内更新。

如果您甚至不能接受几秒钟的停机时间,那么您应该寻找可以自动为您处理此问题而无需任何停机时间的平台。查看Google App Engine - Go例如。

关于http - 使用 Go 时在生产服务器上更新代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31152768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com