|
|
51CTO旗下网站
|
|
移动端

如何利用Nginx为系统构筑发布前的最后一道防线

在项目发展的早期,为了简单方便,我们升级服务器端应用,一般会先将应用源码或程序包上传到服务器,然后再停掉老版本服务,启动新版本服务。由于此时,项目用户少访问量小,这样做通常不会有什么太大问题。

作者:编码之道来源:今日头条|2020-01-09 14:49

背景

在项目发展的早期,为了简单方便,我们升级服务器端应用,一般会先将应用源码或程序包上传到服务器,然后再停掉老版本服务,启动新版本服务。由于此时,项目用户少访问量小,这样做通常不会有什么太大问题。但后面随着项目越来越大,用户越来越多,再这样做你会发现存在两个明显的问题。

1、在新版本升级过程中,服务是暂时中断的,在这期间,服务将不可使用。

2、如果新版本有BUG,升级失败,回滚起来将非常麻烦,容易造成更长时间的服务不可用。

为了解决上面这些问题,人们研究出了很多发布策略,如蓝绿发布、滚动发布等,下面要讲的灰度发布也是其中之一。

什么是灰度发布

灰度发布也叫金丝雀发布,其原理如下图所示:

「系统架构」如何利用nginx为系统构筑发布前的<span><span><span><i 「系统架构」如何利用nginx为系统构筑发布前的<span><span><span><i style=最后一道防线" src="http://p3.pstatp.com/large/pgc-image/278f6501b71e4636a5230f9efaaf5a11" width="640" height="1143">

2、基于Cookie

我们先定义三个upstream,tts_v6、tts_v7和default,然后查询Cookie键为version的值,如果该Cookie值为tts1,则转发到tts_v6;如果该Cookie值为tts2,则转发到tts_v7;如果该Cookie值既不是tts1,也不是tts2,则默认走default所对应的服务器。如下:

「系统架构」如何利用nginx为系统构筑发布前的<span><span><span><i 「系统架构」如何利用nginx为系统构筑发布前的<span><span><span><i style=最后一道防线" src="http://p1.pstatp.com/large/pgc-image/76629d95ba634cd984127e3d8066d4af" width="640" height="667">

总结

灰度发布虽然操作复杂,但在一定程度上保证了系统的安全与稳定。随着项目的不断发展,系统稳定越来越比完善功能更加重要。从长远来看,使用灰度发布利大于弊。

【编辑推荐】

  1. 系统管理员核对表:每年要执行的10项任务
  2. 轻松应对百万并发的Nginx,你知道它是怎么处理这些网络事件的吗?
  3. UOS国产操作系统已停止内测申请 正式版即将发布
  4. 如何在Windows 10中安排系统还原点
  5. 国产UOS操作系统安装要求曝光 C盘空间至少64GB
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月获赞

订阅专栏+更多

Python应用场景实战手册

Python应用场景实战手册

Python应用场景实战手册
共3章 | KaliArch

15人订阅学习

一步到位玩儿透Ansible

一步到位玩儿透Ansible

Ansible
共17章 | 骏马金龙1

163人订阅学习

云架构师修炼手册

云架构师修炼手册

云架构师的必备技能
共3章 | Allen在路上

31人订阅学习

读 书 +更多

软件架构设计

本书紧紧围绕“软件架构设计”这一主题,立足实践解析了软件架构的概念,阐述了切实可行的软件架构设计方法,提供了可操作性极强的完整的架...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微