很可能在线上有五到六个程序来收集数据。每天有了一些新想法都要上一些小版本看效果,每个版本上线后可能都要再各自做优化调整观察效果。这种情况可能线上就永远不会有一个统一的版本灰度反而是个常态来应对不断变化的需求和挑战。
而发布系统也需要做相应的调整,不在把每个服务看成一个单一版本的运行体,只在更新的短时间内出现多版本共存,只允许全量推和回滚这种粗粒度策略。相反,多版本共存应被视为正常状态,允许迭代每个版本,并且可以在版本之间区分相应的监视日志信息,从而可以将灵活的发布系统与灵活的灰度策略相结合。
灰度使用黑色调表示物体。 每个灰度对象都具有从 0%(白色)到灰度条
100%(黑色)的亮度值。 使用黑白或灰度扫描仪生成的图像通常以灰度显示。 使用灰度还可将彩色图稿转换为高质量黑白图稿。 在这种情况下,Adobe Illustrator 放弃原始图稿中的所有颜色信息;转换对象的灰色级别(阴影)表示原始对象的亮度。 将灰度对象转换为 RGB 时,每个对象的颜色值代表对象之前的灰度值。 也可以将灰度对象转换为 CMYK 对象。 自然界中的大部分物体平均灰度为18%。 在物体的边缘呈现灰度的不连续性,图像分割就是基于这个原理。灰度测试 就是测试亮度。
在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。
为了解决这些问题,人们研究出了多种发布策略,下面我们一一介绍。
蓝绿部署
所谓蓝绿部署,是指同时运行两个版本的应用,如上图所示,蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版本运行起来后,再将流量切换到新版本上。但是蓝绿部署要求在升级过程中,同时运行两套程序,对硬件的要求就是日常所需的二倍,比如日常运行时,需要10台服务器支撑业务,那么使用蓝绿部署,你就需要购置二十台服务器。
滚动发布
所谓滚动升级,就是在升级过程中,并不一下子启动所有新版本,是先启动一台新版本,再停止一台老版本,然后再启动一台新版本,再停止一台老版本,直到升级完成,这样的话,如果日常需要10台服务器,那么升级过程中也就只