从单体到分布式,如何做到无损发布?

 由于我们的系统是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的接口,所以我们基于此开发一个管理控制台,做到远程管理,类似于下面这样。

从单体到分布式,如何做到无损发布?

欢迎大家扫描下方二维码获取我的最新原创文章:

从单体到分布式,如何做到无损发布?

相关推荐