热更新服务,指程序在更新的情况下不终止程序,zero down-time更新服务程序。
zaro down-time更新服务程序有以下两点:
1.C/C++/GO都是静态语言,所有指令都编译可执行程序,升级就意味着编译新文件替换旧的文件,程序依旧执行。
2.正在处理的程序无法终止,执行更新,更新完再去终止。
如何解决上面的问题?
1.使用灰度发布
用户---->用户请求---->NGINX--->分别服务器1和2
2.静态语言如何热升级
1)第一步:将编译好的image文件替换掉老的image文件 指令: kill -USER 1234
2)第二步:发送一个WINCH命令(老的master发送WINCH给worker,然后socket close掉) 指令:kill -WINCH 1234
3)第三步:发送QUIT信号(干掉老的master) 指令:kill -QUIT 1234