/dubbo-gray

dubbo灰度发布系统

Primary LanguageJava

在飞速发展的互联网公司,灰度其实就是根据设定的规则将请求路由到我们的灰度版本(灰度机器)上来。比如对于API来说,一般有如下几个需求:特定用户(比如测试帐号)、 特定的App(比如测试app或者合作App)、特定的模块、接口(只有某些接口需要灰度,这种一般是API Container的修改,拿一些不是很重要的API做灰度测试)、特定的机器(某些请求IP转发到灰度机)等。 在传统软件产品发布过程中(例如微软的Windows 7的发布过程中),一般都会经历Pre-Alpha、Alpha、Beta、Release candidate(RC)、RTM、General availability or General Acceptance (GA)等几个阶段(参考Software release life cycle)。可以看出传统软件的发布阶段是从公司内部->外部小范围测试>外部大范围测试->正式发布,涉及的用户数也是逐步放量的过程。

灰度可以解决的问题: 1、 在发布过程中降低上线风险 2、 降低影响范围,并且范围可控 3、 降低对测试的依赖,减少线下自测的数据构造成本 4、 特定的请求能够指向特定的服务器,方便集中监控日志,方便跟踪完整的调用链路 5、 方便系统流量切入 6、 方便回滚 7、 指定特定人群,方便系统回访,方便产品需求收集,完善产品功能,提升产品质量 8、 在无状态的情况下保障用户使用到的版本一致 9、 避免停服给用户带来坏的体验用