传统方式

在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,
(1)在新版本升级过程中,服务是暂时中断的,
(2)如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。

为了解决这些问题,人们研究出了多种发布策略,下面我们一一介绍。

蓝绿部署


所谓蓝绿部署,是指同时运行两个版本的应用,
如上图所示,蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版本运行起来后,再将流量切换到新版本上。但是蓝绿部署要求在升级过程中,同时运行两套程序,对硬件的要求就是日常所需的二倍,比如日常运行时,需要10台服务器支撑业务,那么使用蓝绿部署,你就需要购置二十台服务器。

滚动发布

滚动发布能够解决掉蓝绿部署时对硬件要求增倍的问题。

所谓滚动升级,就是在升级过程中,并不一下子启动所有新版本,是先启动一台新版本,再停止一台老版本,然后再启动一台新版本,再停止一台老版本,直到升级完成,这样的话,如果日常需要10台服务器,那么升级过程中也就只需要11台就行了。

但是滚动升级有一个问题,在开始滚动升级后,流量会直接流向已经启动起来的新版本,但是这个时候,新版本是不一定可用的,比如需要进一步的测试才能确认。那么在滚动升级期间,整个系统就处于非常不稳定的状态,如果发现了问题,也比较难以确定是新版本还是老版本造成的问题。

为了解决这个问题,我们需要为滚动升级实现流量控制能力。

灰度发布(金丝雀发布)

灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高。

在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的A/B测试。

当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将100%的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。

如果在灰度发布过程中(灰度期)发现了新版本有问题,就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内。

如下图描述了几种部署方式的演进

#mermaid-svg-Fc6CO7o3RYF1domO .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-Fc6CO7o3RYF1domO .label text{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO .node rect,#mermaid-svg-Fc6CO7o3RYF1domO .node circle,#mermaid-svg-Fc6CO7o3RYF1domO .node ellipse,#mermaid-svg-Fc6CO7o3RYF1domO .node polygon,#mermaid-svg-Fc6CO7o3RYF1domO .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Fc6CO7o3RYF1domO .node .label{text-align:center;fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO .node.clickable{cursor:pointer}#mermaid-svg-Fc6CO7o3RYF1domO .arrowheadPath{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-Fc6CO7o3RYF1domO .flowchart-link{stroke:#333;fill:none}#mermaid-svg-Fc6CO7o3RYF1domO .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-Fc6CO7o3RYF1domO .edgeLabel rect{opacity:0.9}#mermaid-svg-Fc6CO7o3RYF1domO .edgeLabel span{color:#333}#mermaid-svg-Fc6CO7o3RYF1domO .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-Fc6CO7o3RYF1domO .cluster text{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-Fc6CO7o3RYF1domO .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Fc6CO7o3RYF1domO text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-Fc6CO7o3RYF1domO .actor-line{stroke:grey}#mermaid-svg-Fc6CO7o3RYF1domO .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-Fc6CO7o3RYF1domO .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-Fc6CO7o3RYF1domO #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-Fc6CO7o3RYF1domO .sequenceNumber{fill:#fff}#mermaid-svg-Fc6CO7o3RYF1domO #sequencenumber{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO #crosshead path{fill:#333;stroke:#333}#mermaid-svg-Fc6CO7o3RYF1domO .messageText{fill:#333;stroke:#333}#mermaid-svg-Fc6CO7o3RYF1domO .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-Fc6CO7o3RYF1domO .labelText,#mermaid-svg-Fc6CO7o3RYF1domO .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-Fc6CO7o3RYF1domO .loopText,#mermaid-svg-Fc6CO7o3RYF1domO .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-Fc6CO7o3RYF1domO .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-Fc6CO7o3RYF1domO .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Fc6CO7o3RYF1domO .noteText,#mermaid-svg-Fc6CO7o3RYF1domO .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-Fc6CO7o3RYF1domO .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-Fc6CO7o3RYF1domO .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-Fc6CO7o3RYF1domO .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-Fc6CO7o3RYF1domO .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO .section{stroke:none;opacity:0.2}#mermaid-svg-Fc6CO7o3RYF1domO .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-Fc6CO7o3RYF1domO .section2{fill:#fff400}#mermaid-svg-Fc6CO7o3RYF1domO .section1,#mermaid-svg-Fc6CO7o3RYF1domO .section3{fill:#fff;opacity:0.2}#mermaid-svg-Fc6CO7o3RYF1domO .sectionTitle0{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO .sectionTitle1{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO .sectionTitle2{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO .sectionTitle3{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-Fc6CO7o3RYF1domO .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO .grid path{stroke-width:0}#mermaid-svg-Fc6CO7o3RYF1domO .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-Fc6CO7o3RYF1domO .task{stroke-width:2}#mermaid-svg-Fc6CO7o3RYF1domO .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO .taskText:not([font-size]){font-size:11px}#mermaid-svg-Fc6CO7o3RYF1domO .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-Fc6CO7o3RYF1domO .task.clickable{cursor:pointer}#mermaid-svg-Fc6CO7o3RYF1domO .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Fc6CO7o3RYF1domO .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Fc6CO7o3RYF1domO .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-Fc6CO7o3RYF1domO .taskText0,#mermaid-svg-Fc6CO7o3RYF1domO .taskText1,#mermaid-svg-Fc6CO7o3RYF1domO .taskText2,#mermaid-svg-Fc6CO7o3RYF1domO .taskText3{fill:#fff}#mermaid-svg-Fc6CO7o3RYF1domO .task0,#mermaid-svg-Fc6CO7o3RYF1domO .task1,#mermaid-svg-Fc6CO7o3RYF1domO .task2,#mermaid-svg-Fc6CO7o3RYF1domO .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-Fc6CO7o3RYF1domO .taskTextOutside0,#mermaid-svg-Fc6CO7o3RYF1domO .taskTextOutside2{fill:#000}#mermaid-svg-Fc6CO7o3RYF1domO .taskTextOutside1,#mermaid-svg-Fc6CO7o3RYF1domO .taskTextOutside3{fill:#000}#mermaid-svg-Fc6CO7o3RYF1domO .active0,#mermaid-svg-Fc6CO7o3RYF1domO .active1,#mermaid-svg-Fc6CO7o3RYF1domO .active2,#mermaid-svg-Fc6CO7o3RYF1domO .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-Fc6CO7o3RYF1domO .activeText0,#mermaid-svg-Fc6CO7o3RYF1domO .activeText1,#mermaid-svg-Fc6CO7o3RYF1domO .activeText2,#mermaid-svg-Fc6CO7o3RYF1domO .activeText3{fill:#000 !important}#mermaid-svg-Fc6CO7o3RYF1domO .done0,#mermaid-svg-Fc6CO7o3RYF1domO .done1,#mermaid-svg-Fc6CO7o3RYF1domO .done2,#mermaid-svg-Fc6CO7o3RYF1domO .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-Fc6CO7o3RYF1domO .doneText0,#mermaid-svg-Fc6CO7o3RYF1domO .doneText1,#mermaid-svg-Fc6CO7o3RYF1domO .doneText2,#mermaid-svg-Fc6CO7o3RYF1domO .doneText3{fill:#000 !important}#mermaid-svg-Fc6CO7o3RYF1domO .crit0,#mermaid-svg-Fc6CO7o3RYF1domO .crit1,#mermaid-svg-Fc6CO7o3RYF1domO .crit2,#mermaid-svg-Fc6CO7o3RYF1domO .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-Fc6CO7o3RYF1domO .activeCrit0,#mermaid-svg-Fc6CO7o3RYF1domO .activeCrit1,#mermaid-svg-Fc6CO7o3RYF1domO .activeCrit2,#mermaid-svg-Fc6CO7o3RYF1domO .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-Fc6CO7o3RYF1domO .doneCrit0,#mermaid-svg-Fc6CO7o3RYF1domO .doneCrit1,#mermaid-svg-Fc6CO7o3RYF1domO .doneCrit2,#mermaid-svg-Fc6CO7o3RYF1domO .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-Fc6CO7o3RYF1domO .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-Fc6CO7o3RYF1domO .milestoneText{font-style:italic}#mermaid-svg-Fc6CO7o3RYF1domO .doneCritText0,#mermaid-svg-Fc6CO7o3RYF1domO .doneCritText1,#mermaid-svg-Fc6CO7o3RYF1domO .doneCritText2,#mermaid-svg-Fc6CO7o3RYF1domO .doneCritText3{fill:#000 !important}#mermaid-svg-Fc6CO7o3RYF1domO .activeCritText0,#mermaid-svg-Fc6CO7o3RYF1domO .activeCritText1,#mermaid-svg-Fc6CO7o3RYF1domO .activeCritText2,#mermaid-svg-Fc6CO7o3RYF1domO .activeCritText3{fill:#000 !important}#mermaid-svg-Fc6CO7o3RYF1domO .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-Fc6CO7o3RYF1domO g.classGroup text .title{font-weight:bolder}#mermaid-svg-Fc6CO7o3RYF1domO g.clickable{cursor:pointer}#mermaid-svg-Fc6CO7o3RYF1domO g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Fc6CO7o3RYF1domO g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Fc6CO7o3RYF1domO .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-Fc6CO7o3RYF1domO .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-Fc6CO7o3RYF1domO .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Fc6CO7o3RYF1domO .dashed-line{stroke-dasharray:3}#mermaid-svg-Fc6CO7o3RYF1domO #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Fc6CO7o3RYF1domO #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Fc6CO7o3RYF1domO #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Fc6CO7o3RYF1domO #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-Fc6CO7o3RYF1domO #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Fc6CO7o3RYF1domO #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Fc6CO7o3RYF1domO #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Fc6CO7o3RYF1domO #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-Fc6CO7o3RYF1domO .commit-id,#mermaid-svg-Fc6CO7o3RYF1domO .commit-msg,#mermaid-svg-Fc6CO7o3RYF1domO .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-Fc6CO7o3RYF1domO g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-Fc6CO7o3RYF1domO g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-Fc6CO7o3RYF1domO g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-Fc6CO7o3RYF1domO .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-Fc6CO7o3RYF1domO .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-Fc6CO7o3RYF1domO .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-Fc6CO7o3RYF1domO .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-Fc6CO7o3RYF1domO .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-Fc6CO7o3RYF1domO .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-Fc6CO7o3RYF1domO .edgeLabel text{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-Fc6CO7o3RYF1domO .node circle.state-start{fill:black;stroke:black}#mermaid-svg-Fc6CO7o3RYF1domO .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-Fc6CO7o3RYF1domO #statediagram-barbEnd{fill:#9370db}#mermaid-svg-Fc6CO7o3RYF1domO .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-Fc6CO7o3RYF1domO .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-Fc6CO7o3RYF1domO .statediagram-state .divider{stroke:#9370db}#mermaid-svg-Fc6CO7o3RYF1domO .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-Fc6CO7o3RYF1domO .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-Fc6CO7o3RYF1domO .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-Fc6CO7o3RYF1domO .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-Fc6CO7o3RYF1domO .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-Fc6CO7o3RYF1domO .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-Fc6CO7o3RYF1domO .note-edge{stroke-dasharray:5}#mermaid-svg-Fc6CO7o3RYF1domO .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-Fc6CO7o3RYF1domO .error-icon{fill:#522}#mermaid-svg-Fc6CO7o3RYF1domO .error-text{fill:#522;stroke:#522}#mermaid-svg-Fc6CO7o3RYF1domO .edge-thickness-normal{stroke-width:2px}#mermaid-svg-Fc6CO7o3RYF1domO .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-Fc6CO7o3RYF1domO .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-Fc6CO7o3RYF1domO .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-Fc6CO7o3RYF1domO .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-Fc6CO7o3RYF1domO .marker{fill:#333}#mermaid-svg-Fc6CO7o3RYF1domO .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;} #mermaid-svg-Fc6CO7o3RYF1domO .dt > * { fill:#32CD32 !important; stroke:#32CD32 !important; color:white !important; } #mermaid-svg-Fc6CO7o3RYF1domO .dt tspan { fill:white !important; } #mermaid-svg-Fc6CO7o3RYF1domO .opt > * { fill:#00E5EE !important; stroke:#00E5EE !important; color:white !important; } #mermaid-svg-Fc6CO7o3RYF1domO .opt tspan { fill:white !important; } #mermaid-svg-Fc6CO7o3RYF1domO .dopt > * { fill:#FF69B4 !important; stroke:#FF69B4 !important; color:white !important; } #mermaid-svg-Fc6CO7o3RYF1domO .dopt tspan { fill:white !important; } #mermaid-svg-Fc6CO7o3RYF1domO {color: rgba(0, 0, 0, 0.75);font: ;}

进化
进化
进化
传统方式
服务中断
回滚困难
蓝绿发布
同时运行2个版本的应用
服务不中断
2倍硬件要求
滚动发布
交替启动新版本、停止老版本
硬件要求降低
新老版本交替不稳定,难以定位问题
灰度发布
新老版本的流量控制
新版本测试通过则渐进切新版本
新版本测试未通过则回滚老版本

最佳实践

在新版本应用发布时,为了服务器不停机升级,使用灰度发布策略,
在灰度发布开始时,使用HTTP Header 匹配指定测试人员的流量到新版本上,
然后当新版本内部测试通过后,可以再按百分比,将用户流量一点一点导入到新版本中,
比如先导入10%观察一下运行情况,然后再导入20%,如此累加,直到将流量全部导入到新版本上,最后完成升级,
如果期间发现问题,就立即取消升级,将流量切回到老版本。

运用灰度发布,就再也不需要加班到深夜进行停机升级了,在白天就可以放心大胆地、安全地发布新版本。

参考:
脉冲云 - 什么是蓝绿部署、滚动发布和灰度发布
脉冲云 - 使用脉冲云实现灰度发布

蓝绿部署、滚动部署、灰度发布(金丝雀发布)相关推荐

  1. 首富带你畅谈:蓝绿部署、滚动发布、灰度发布/金丝雀发布

    首富带你畅谈:蓝绿部署.滚动发布.灰度发布/金丝雀发布 笔者: 张首富 时间: 2019-01-24晚 QQ群: 895291458 博客地址: www.zhangshoufu.com 根据2018年 ...

  2. 蓝绿发布金丝雀发布灰度发布滚动发布AB测试

    金丝雀不是说它外形漂亮或有特点,而是说它对瓦斯很灵敏. 这些名字玄而又玄,逼格十分高大上.到底是些啥?好像不了解一下,就完全看不懂当下流行的吹哔哔技术PPT了. 一.蓝绿发布 不停老版本,部署新版本然 ...

  3. kubernetes(七)项目部署方式:蓝绿部署,灰度发布/金丝雀发布,滚动更新

    在项目迭代的过程中,不可避免需要上线进行部署. 目前项目部署的方式有很多种:像重新部署,蓝绿部署,金丝雀部署(灰度部署),滚动更新.本文简单介绍下这些常见的部署方案以及使用k8s怎么进行对应部署 重新 ...

  4. 蓝绿部署滚动部署金丝雀发布(灰度发布)A/B测试

    在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本.但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果 ...

  5. 线上发版如何做到分批发的?详解蓝绿部署,滚动升级,A/B 测试,灰度发布/金丝雀发布

    过去的 10 年里,很多大公司都在使用蓝绿部署,安全.可靠是这种部署方式的特点.蓝绿部署虽然算不上" Sliver Bullet ",但确实很实用.在有关于"微服务&qu ...

  6. gateway集成nacos、loadbalancer实现自定义负载均衡器,带源码解析(cloud版本:2021.0.3|boot版本:2.7.4)[场景1:灰度发布(金丝雀发布)]

  7. 【项目实战】正确辨析蓝绿部署、金丝雀发布(灰度发布)、滚动发布、A/B测试

    一.背景 蓝绿部署.A/B测试.金丝雀发布,以及灰度发布.流量切分等,经常被混为一谈,影响沟通效率. 根本原因是这些名词经常出现,人们耳熟能详能够熟练地谈起,对这些术语的理解却没有达成一致. 下面是从 ...

  8. 灰度(金丝雀)发布、蓝绿部署、滚动发布

    概念 一.灰度(金丝雀)发布 定义 灰度发布又叫金丝雀发布,只升级部分服务,即让一部分用户继续用老版本,一部分用户开始用新版本,如果用户对新版本没什么意见,那么逐步扩大范围,把所有用户都迁移到新版本上 ...

  9. 灰度发布、蓝绿部署、金丝雀都是啥?

    目录 滚动部署 蓝绿发布 为什么还需要蓝绿 金丝雀发布(canary) 金丝雀和蓝绿的对比 灰度发布 A/B Test 实现 kubernetes istio spring cloud 网关 参考 滚 ...

  10. 蓝绿部署、金丝雀发布(灰度发布)、A/B测试的准确定义

    作者: 李佶澳   转载请保留:原文地址   发布时间:2018/10/23 14:02:00 说明 蓝绿部署 金丝雀发布 A/B测试 参考 说明 蓝绿部署.A/B测试.金丝雀发布,以及灰度发布.流量 ...

最新文章

  1. AngularJS 指令
  2. Science | 以功能为核心的蛋白质设计
  3. 【Android RTMP】音频数据采集编码 ( FAAC 音频编码参数设置 | FAAC 编码器创建 | 获取编码器参数 | 设置 AAC 编码规格 | 设置编码器输入输出参数 )
  4. Struts的Map
  5. [分享]千万数量级分页存储过程(效果演示)
  6. evaluate函数使用无效_我用这个Excel函数,秀了同事一脸!很多人却连它名字都没听过...
  7. 指定的命名连接在配置中找不到、非计划用于 EntityClient 提供程序或者无效
  8. 工欲善其事必先利其器(一)
  9. java判断三位数的范围代码_java判断三位数的实例讲解
  10. android中svn合并分支,Android Studio之SVN打分支、切换分支及合并分支
  11. CAN 通信协议文档集锦
  12. vm虚拟服务器控制端,使用VMware虚拟机实现单主机双屏两人同时使用独立控制
  13. gdal、geos的 windows编译 openCL加速
  14. angular ui-bootstrap的Datepicker Popup组件问题总结
  15. 地球到火星的通信问题
  16. vim leader的使用
  17. flowable modeler6.5.0集成spring boot
  18. 冬至时节饮食养生要注意“三多三少
  19. 中国56个民族拼音表
  20. 推荐7个python案例,python真的无所不能且容易上手(带教程)

热门文章

  1. 最完整Android Studio插件整理
  2. 001----手把手教你制作TouchGFX的工程模板
  3. 说说WM_DESTROY和WM_NCDESTROY的区别
  4. 苹果a10处理器_苹果新的2020Pad升级了处理器仅此而已
  5. .net Core 6.0 部署到欧拉(Linux)系统上,“The type initializer for ‘Gdip‘ threw an exception” 报错的解决方案
  6. 金融知识---------本票,汇票,支票的区别
  7. 国内期刊不需要审稿费和版面费汇总
  8. Arcgis自定义符号库
  9. ITPUB名人堂第二期
  10. 计算机软件技术基础图片,计算机软件技术基础.ppt