# 灰度管理系统 **Repository Path**: liuhangjun/gray ## Basic Information - **Project Name**: 灰度管理系统 - **Description**: 主要在介绍一款全开源的灰度管理系统,本系管理统主要采用java技术开发、数据库采用mysql、灰度引擎当前采用java和lua两种技术开发。并且介绍一个灰度系统在一个互联网公司的重要性,尤其是对于小公司,没有精力去做也就无法保障系统上线的平稳。这套灰度管理系统能够灵活配置http和dubbo的请求接入,丰富的扩展性。愿景是能够为小公司提供一种解决方案,希望能够作为大公司灰度更好参考,为公司的运营提供多一点选择。交流qq群 575301105 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: https://my.oschina.net/izhangll/blog/884713 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 82 - **Created**: 2019-04-25 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 在飞速发展的互联网公司,灰度其实就是根据设定的规则将请求路由到我们的灰度版本(灰度机器)上来。比如对于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、 避免停服给用户带来坏的体验用