golang 生产环境合理的部署方案应该是怎样的?如何解决热更新的问题?

2018-08-24 14:54:17 +08:00
 kaxi

golang 的跨平台性非常好,编译成二进制文件后,直接扔到服务器上执行即可。单机环境测试环境怎么玩都 OK。可是对于生产环境实时处理访问请求,并且是非单机服务,这种场景的部署方案是怎样的?服务升级应该怎么处理比较合理?

是否会用到服务发现相关中间件?

希望有大侠指点迷津

5646 次点击
所在节点    Go 编程语言
27 条回复
wweir
2018-08-25 21:01:36 +08:00
@RubyJack 子进程直接 kill 父进程无法做到 graceful shutdown,父进程主动停止监听,并等待已经接收到的任务完成后退出,可以做到让外界的访问完全无感知
knowckx
2018-08-26 00:36:25 +08:00
微服务,consul 呀
RubyJack
2018-08-26 10:59:29 +08:00
@wweir 所以你的看法是,父进程无法接收到 kill 然后做对应的处理?
wweir
2018-08-27 11:05:54 +08:00
@RubyJack 首先,我们得确认一下所描述的是不是同一件事情。
我这里的 kill 指的是 kill 信号,就是 kill -9 发出的那个信号,这个信号进程是无法拦截的,只会被直接干掉。
此处父进程应该被通知,并有机会善后。通知可以是检测到子进程的 pid 文件,也可以是指定的信号,或者其它什么方式
xfriday
2018-08-27 12:01:14 +08:00
swarm/k8s 集群滚动更新
vgmdj
2018-08-28 17:42:03 +08:00
k8s 滚动更新+1
wwek
2018-09-23 14:22:18 +08:00
规模大一点的 k8s
单机模式下还真不是太好搞。
用 upstream 的方式比较简单直接

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/482889

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX