一文搞懂蓝绿发布、灰度发布和滚动发布
应用程序升级面临最大挑战是新旧业务切换,将软件从测试的最后阶段带到生产环境,同时要保证系统不间断提供服务。
长期以来,业务升级渐渐形成了几个发布策略:蓝绿发布、灰度发布和滚动发布,目的是尽可能避免因发布导致的流量丢失或服务不可用问题。
一、 蓝绿发布
项目逻辑上分为AB组,在项目系统时,首先把A组从负载均衡中摘除,进行新版本的部署。B组仍然继续提供服务。
当A组升级完毕,负载均衡重新接入A组,再把B组从负载列表中摘除,进行新版本的部署。A组重新提供服务。
最后,B组也升级完成,负载均衡重新接入B组,此时,AB组版本都已经升级完成,并且都对外提供服务。
特点
- 如果出问题,影响范围较大;
- 发布策略简单;
- 用户无感知,平滑过渡;
- 升级/回滚速度快。
缺点
- 需要准备正常业务使用资源的两倍以上服务器,防止升级期间单组无法承载业务突发;
- 短时间内浪费一定资源成本;
- 基础设施无改动,增大升级稳定性。
蓝绿发布在早期物理服务器时代,还是比较昂贵的,由于云计算普及,成本也大大降低。
二、 灰度发布
灰度发布只升级部分服务,即让一部分用户继续用老版本,一部分用户开始用新版本,如果用户对新版本没什么意见,那么逐步扩大范围,把所有用户都迁移到新版本上面来。
特点
- 保证整体系统稳定性,在初始灰度的时候就可以发现、调整问题,影响范围可控;
- 新功能逐步评估性能,稳定性和健康状况,如果出问题影响范围很小,相对用户体验也少;
- 用户无感知,平滑过渡。
缺点
- 自动化要求高
部署过程
- 从LB摘掉灰度服务器,升级成功后再加入LB;
- 少量用户流量到新版本;
- 如果灰度服务器测试成功,升级剩余服务器。
灰度发布是通过切换线上并存版本之间的路由权重,逐步从一个版本切换为另一个版本的过程。
三、 滚动发布
滚动发布是指每次只升级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。
- 红色:正在更新的实例
- 蓝色:更新完成并加入集群的实例
- 绿色:正在运行的实例
特点
- 用户无感知,平滑过渡;
- 节约资源。
缺点
- 部署时间慢,取决于每阶段更新时间;
- 发布策略较复杂;
- 无法确定OK的环境,不易回滚。
部署过程
- 先升级1个副本,主要做部署验证;
- 每次升级副本,自动从LB上摘掉,升级成功后自动加入集群;
- 事先需要有自动更新策略,分为若干次,每次数量/百分比可配置;
- 回滚是发布的逆过程,先从LB摘掉新版本,再升级老版本,这个过程一般时间比较长;
- 自动化要求高。
小结
综上所述,三种方式均可以做到平滑式升级,在升级过程中服务仍然保持服务的连续性,升级对外界是无感知的。那生产上选择哪种部署方法最合适呢?这取决于哪种方法最适合你的业务和技术需求。如果你们运维自动化能力储备不够,肯定是越简单越好,建议蓝绿发布,如果业务对用户依赖很强,建议灰度发布。如果是K8S平台,滚动更新是现成的方案,建议先直接使用。
- 蓝绿发布:两套环境交替升级,旧版本保留一定时间便于回滚。
- 灰度发布:根据比例将老版本升级,例如80%用户访问是老版本,20%用户访问是新版本。
- 滚动发布:按批次停止老版本实例,启动新版本实例。
一枚导弹的各个分系统是如何运作的(五)“大海航行靠舵手”——导弹控制执行装置
出品:科普中国
作者:鸿爪雪梨
策划:武玥彤
监制:光明网科普事业部
一枚导弹的各个分系统是如何运作的(五)“大海航行靠舵手”——导弹控制执行装置
在大气层中飞行的导弹,可通过改变空气动力的方向来控制导弹,而在大气层外飞行的导弹,则需要改变推力的大小和方向以获得控制力。导弹的执行机构就是实现上述动作的装置。
一、改变导弹气动力的舵机
广义的通过改变气动力实现导弹机动的执行机构由舵机、信号处理及反馈部分组成。舵机则是执行的一线装置,“舵”这个名字形象的体现了该装置的作用,如果将导弹飞行在空中比作船行驶在水中,那么舵的作用就比较容易理解了。通过操纵舵片偏转或转动,使作用在弹体上的升力或侧向力发生变化,进而带动导弹偏移或翻转。
图1 俄罗斯S-400防空导弹舵机舱的内部结构(共有四组舵机,分别控制四个舵片)(图片来自网络)
导弹的引导系统将测量到的导弹实时坐标、角度和弹目相对位置转换为控制指令(一般为电信号),指令通过弹上的电缆或无线模块传递给执行机构的信号接收元件,并被转化为舵机可识别的信号。
设计舵机时一般要考虑以下多个因素。首先是舵机要有足够的能力对抗作用在弹体翼片和舵片上的空气阻力,好比掌舵人要使船转向,则必须克服水的阻力一样。其次是舵机要能产生足够的偏转角和角速度,同时要有足够的快速性,能够快速满足弹体姿态变化所需的控制力,简单来说,就是要尽可能的“一盘子打到位”,否则就会出现导弹姿态一直滞后的现象,影响精度。此外,还要求尺寸小、质量轻等。
舵机设计的好坏将直接影响整个导弹制导系统的性能。不管哪种类型的舵机,都必须有能源和动作装备。以电动舵机为例,电动舵机以电池电源为能源,调节电压以带动电动机旋转,从而带动舵片转动;以高压气源作为动力的舵机为气压式舵机,这种舵机利用高压气瓶中储存的高压气体(氦气或空气)为动力源,或者以固体燃料燃烧产生的气体为动力源,通过调节气体喷嘴的开合大小和角度来调整舵片。另外还有液压式舵机,类似于工程机械中的液压杆,通过液体压力推动活塞,带动舵片偏转。
电动舵机外形尺寸小,结构简单,但功率小且快速性较差。一般运用在小型导弹上。气压式舵机功率大,动作迅速,但受气源储量和燃气利用率的影响,一般用在飞行速度较快但时间较短的导弹上。液压舵体积小、质量轻、功率大,但液体性能受环境影响较大,且成本较高,一般用在中远程高价值导弹上。
二、改变导弹方向的推力控制装置
除了通过舵机调整导弹姿态之外,推力控制装置也是常见的一种控制导弹飞行的装置。推力控制是指改变发动机排除的气流方向来控制导弹方向。有过摩托艇驾驶经验的读者会有这样的体会,高速行驶的摩托艇要转弯时,必须辅以足够的动力,否则不仅转弯半径增加,摩托艇自身也会更容易失稳甚至“翻船”。导弹飞行也是一样的道理,在导弹推进阶段,通过调节燃气方向,可以使导弹获得很高的机动性能。
图2 一种发动机推力矢量控制装置的结构示意图(图片来自网络)
在洲际导弹的垂直发射阶段,由于此时速度较低,空气动力控制的作用微乎其微,而一旦某一台主发动机推力偏心,在巨大的重量的放大下,导弹就会翻滚甚至失稳,这个时候就需要通过发动机的动力微调来保证弹体垂直且逐渐加速。
而某些垂直发射的战术导弹,为了尽快的进入可控状态,也要求导弹在起飞后迅速转弯,以便扩大最小射程和最大射程的区间,全方位的打击目标。
除调整主推力的气流方向来控制导弹姿态之外,某些导弹上还装置了调姿发动机,顾名思义,就是用以调整导弹姿态的发动机,如俄罗斯某款反舰导弹,在头部设置了两对调姿发动机,在垂直发射后的短时间内,导弹的控制系统根据预估的弹道核对导弹的实时姿态,并发出调整指令,调姿发动机接到指令后,根据情况个别或同步工作,使导弹迅速从垂直姿态变为近似水平姿态,进入空气动力机动区间,导弹迅速进入射程区间,对抵近防御和近海防御来说,这种强大的机动性无疑是强大的战斗力。
图3 俄罗斯某型反舰导弹通过调姿发动机快速完成姿态控制(图片来自网络)
军事小百科:导弹的执行装置是根据导弹控制系统发来的指令操纵导弹的舵面或者翼片偏转,或改变发动机的推力方向,以控制和稳定导弹飞行的装置。好的执行装置能够在收到控制系统信号的极短时间内,精确、快速的完成导弹姿态调整,使导弹能够迅速瞄准目标或进入射程区间。
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。