论文部分内容阅读
在传统软件产品发布过程中(例如微软的Windows 7的发布过程中),一般都会经历Pre-Alpha、Alpha、Beta等几个阶段。实践证明,无论是传统软件还是当今的互联网产品,其发布过程中也较多采用此种发布方式,在此过程中,产品团队根据用户的反馈及时完善产品相关功能,此种发布方式即为“灰度发布”。在互联网演进的大潮中,灰度发布迅速得到了广泛的推广和应用,如:腾讯QQ/微信版本的更新、阿里巴巴/支付宝应用的升级以及各大门户网站的版本迭代等等,为了保障在系统升级过程中,不影响用户的感知和体验,都深度地引入了灰度发布,实践证明,此种方式是可行和可取的。与互联网行业不同的是,国内电信行业的现状并非如此,由于本身各种原因(系统架构陈旧/互联网化进程缓慢等),对应的灰度发布系统将会逐步地落地并得到充分应用。本项目以某省移动运营商电子渠道系统为基本出发点,阐述该系统灰度发布实现的全过程,大致过程包括:将应用的稳定代码和灰度代码分别发布到不同的服务器上,并加载该应用的灰度配置信息;接收用户请求,并从请求的参数信息中提取用于灰度判断的灰度数据;根据灰度配置信息对灰度数据进行判断,确定该请求是否参与灰度发布;若参与,则将该请求分配到灰度代码所在的服务器处理;若不参与,则将该请求分配到稳定代码所在的服务器处理,灰度代码的修改不会影响原有的稳定代码,保护了稳定代码不被灰度功能干扰,降低了发布风险,有效地解决需求变化快、版本迭代多、环境引起的故障多、版本更新须中断业务、系统更新纯手工、无系统状态监控和控制方式等问题,保障产品研发和演进过程的顺利进行。本文讨论了灰度发布系统的实现原理和重要流程,研究了灰度发布系统里面的关键功能模块和技术架构,设计并实现了分流引擎、版本管理等核心业务流程,通过系统测试结果得出了该系统无论在功能上还是性能上均满足用户的需求,达到系统上线运行的各项条件。该系统分为了几个主要的模块,包括:分流规则配置/路由配置/分流引擎管理/应用集群管理/流量及版本控制管理/用户特征管理等,本文参与了系统中核心模块(分流引擎、一键发布/流控)的调研、需求分析、设计、开发等工作,同时对系统其他模块的功能也有所研究,论文将对整个系统做详细深入的介绍和剖析。