从单体到分布式,如何做到无损发布?
“ 由于我们的系统是7*24小时不间断为用户提供服务的,如果直接发布那些正在访问的用户就会访问失败,给用户带来不好的使用体验,也会给公司带来经济损失,所以我们一般会选择在凌晨用户少的时候去发布。”
为了发布不要影响到用户访问,为了不再在凌晨三点熬夜发布版本,无损发布就显得非常重要了。
那么能做到无损发布吗?答案是肯定的,需要nginx和web server配合完成,请看下面的流程图。
无损发布流程
1,初始状态
有两个web server节点组成的集群。
2,下线web-server1
给nginx发送指令(动态修改upstream,下面会讲到),下线web-server1。
3,部署和验证web-server1
web-server1下线之后,就可以开始部署和验证了,发布完成之后,可以直连到这个节点进行验证。
4,上线web-server1
验证没有问题之后,就可以上线了。
5,按以上步骤依次发布其它节点
远程管理
那么,可能会有读者会问怎么给nginx发送指令呢?我们可以借助nginx的第三方扩展模块:ngx_http_dyups_module
因为ngx_http_dyups_module提供了restful的接口,所以我们基于此开发一个管理控制台,做到远程管理,类似于下面这样。
欢迎大家扫描下方二维码获取我的最新原创文章: