Go服务器的无缝补丁部署无需重启

时间:2017-01-28 18:25:09

标签: go server-side

我很好奇是否有任何解决方案来部署go服务器而无需将其关闭并重新启动它。我知道像ASP.Net和PHP这样的流行解决方案可以无缝地为用户会话做到这一点。

无国籍会议会处理这个问题吗?

1 个答案:

答案 0 :(得分:1)

通过引入nginxhaproxy等请求路由器,即使是最天真的应用服务器也可以实现这种无缝部署。这两种路由器都允许您将请求转发到不同的服务(称为反向代理),并在不丢弃连接的情况下重新加载其配置。举个例子:

  • 将路由器配置为侦听0.0.0.0.80并将这些请求转发至127.0.0.1:5001
  • 127.0.0.1:5001上运行您的应用服务器v1。
  • 在此设置中,当您的用户向您的路由器发出请求时,他们会将其转发到您的应用程序v1服务器。
  • 在部署应用程序的新版本v2时,将其配置为侦听端口127.0.0.1:5002
  • 更改路由器配置,使其现在将流量转发到127.0.0.1:5002。然后告诉路由器重新加载其配置。
  • 现在,当您的用户向路由器发出新请求时,它们将被转发到您的应用程序v2服务器。
  • 一旦停止接收流量,您就可以安全地关闭v1。如果v2存在问题,您可以通过恢复路由器配置恢复到v1,因此保持v1在后台运行有其好处。

这是一个简化的高级概述。 (例如,您应该优先选择环回接口上的unix套接字。)这种部署通常称为金丝雀或blue-green deployment