CN111221565A - 一种软件应用程序的阶梯灰度发布控制方法 - Google Patents
一种软件应用程序的阶梯灰度发布控制方法 Download PDFInfo
- Publication number
- CN111221565A CN111221565A CN201811426879.0A CN201811426879A CN111221565A CN 111221565 A CN111221565 A CN 111221565A CN 201811426879 A CN201811426879 A CN 201811426879A CN 111221565 A CN111221565 A CN 111221565A
- Authority
- CN
- China
- Prior art keywords
- request
- environment
- gray level
- matching
- nginx
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000004519 manufacturing process Methods 0.000 claims abstract description 41
- 235000014510 cooky Nutrition 0.000 claims abstract description 31
- 238000012360 testing method Methods 0.000 claims abstract description 14
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种软件应用程序的阶梯灰度发布控制方法,提供一种通过配置参数访问应用,在用户进行测试版本稳定性的情况下,提高应用可靠性,减少故障发生率的方法,包括1、获取请求信息后匹配灰度path配置信息;2、灰度path配置信息匹配包含改请求路径的配置信息,如包含该请求则取到key执行第三步,如不包含,就取cookie,cookie中存在当前版本约定的key且匹配灰度商户成功,返回灰度环境标识给nginx,如cookie也没有就取请求头中的key;3、获取到请求参数的key值后匹配灰度商户信息配置文件,确认是否存在该商户配置信息,若无就直接返回nginx一个生产环境的标识,若存在就获取该商户配置信息中当前版本约定的key set到cookie中返回nginx一个灰度标识将该请求分发到灰度环境。
Description
技术领域
本发明属于阶梯灰度领域,尤其涉及一种软件应用程序的阶梯灰度发布控制方法。
背景技术
随着物联网的快速发展,物联网服务软件的更新与发布也处于快速迭代的状态,因此为确保发布出的新版本的软件能够为用户所接受,发布出的新版本的软件能够根据用户反馈意见及时调整修改,通常会采用灰度发布软件的方式来对软件进行测试调整,其中灰度发布能够使部分客户端路由到运行有新版本软件的灰度发布服务器,而其他客户端依旧与运行有原版本软件的常规服务器数据交互,以通过路由到灰度发布服务器的各客户端的新版本软件使用体验来对新版本软件进行查漏补缺,提高新版本软件质量。
目前,公开号为CN 108632374 A的中国专利公开了一种软件灰度发布方法及装置,它包括接收来自客户端的软件访问请求,并对软件访问请求进行解析,得到客户端的身份标识信息、软件版本信息及网络地址信息;根据身份标识信息、软件版本信息及网络地址信息查找与软件访问请求匹配的灰度发布策略;若成功查找到匹配的灰度发布策略,根据灰度发布策略从匹配的灰度发布服务器的网络地址信息中为客户端分配一个目标网络地址信息;将目标网络地址信息对应发送给客户端,以使客户端固定访问该目标网络地址信息对应服务器上运行的软件内容。所述方法可快速灵活地为客户端固定分配合适的灰度发布服务器,使客户端固定接入到对应的灰度发布服务器进行软件访问。
随着软件分布式环境的发展,各行各业越来越倾向于使用敏捷开发的理念快速迭代产品,将产品快速迭代开发上线,同时需要保证线上代码的质量。由于生产和经营系统实时性高的需求,代码的可靠性变得十分重要。在传统的软件架构中,测试部门通常通过测试环境全流程测试后将应用上传至生产环境,当生产环境出现故障时,只能通过回滚来实现恢复,然而鉴于手动恢复的现状,切换生效往往十分缓慢,修改的方法可实施性较差且不能做到完全回滚。灰度发布是指在软件版本发布过程中,能够平滑过渡的一种发布方式。假设目前软件版本v1,新的软件版本分为v2,当用户通过客户端向服务器发送针对该软件的请求消息时,服务器通过代码逻辑控制一部分用户继续使用版本v1,一部分用户开始使用版本v2;假设用户在使用版本v2的过程正常使用,则逐步用户都迁移到版本v2。阶梯灰度发布可以保证整体系统的稳定。本发明使用了通过配置参数访问应用,在忠诚度较高的用户进行测试版本稳定性的情况下,提高应用可靠性,减少故障发生的概率,使生产环境的软件更稳定的运行。
发明内容
本发明的目的是提供一种软件应用程序的阶梯灰度发布控制方法。其具有通过配置参数访问应用,在忠诚度较高的用户进行测试版本稳定性的情况下,提高应用可靠性,减少故障发生的概率,使生产环境的软件更稳定运行的优点。
本发明的的目的可以通过以下技术方案来实现:
一种软件应用程序的阶梯灰度发布控制方法,包括
获取请求信息后匹配灰度path配置信息;
灰度path配置信息匹配包含改请求路径的配置信息,如包含该请求则取到key执行第三步,如不包含,就取cookie,cookie中存在当前版本约定的key且匹配灰度商户配置成功就返回灰度环境标识给nginx,如cookie也没有就取请求头中的key;获取到请求参数的key值后匹配灰度商户信息配置文件,确认是否存在该商户配置信息,若无就直接返回nginx一个生产环境的标识;
若存在就获取该商户配置信息中的当前版本约定的key set到cookie中返回nginx一个灰度标识将该请求分发到灰度环境。
优选的,前端请求包括以下步骤:
S01,脚本获取前端请求;
S02,解析请求中的path参数,根据path匹配脚本配置文件的灰度path;
S03,S02中匹配成功则获取灰度path配置文件中约定的当前请求灰度分流key对应的值,商户配置信息中映射的key;
S04,脚本解析并获取当前域名下配置的所有灰度商户信息;
S05,匹配S04中获取到的信息,匹配成功后,获取当前商户配置信息中的当前版本约定的key设置为cookie,返回nginx灰度环境标识,脚本运行结束,nginx获取标识将该请求分发到灰度环境;
S06,S04中匹配失败的,返回nginx生产环境标识,脚本运行结束,nginx获取标识将该请求分发到生产环境;
S07,S02中匹配商户path失败,脚本会从当前请求的cookie中取值;
S08,取到当前cookie值再去匹配当前域名灰度商户;
S09,匹配成功,返回nginx灰度环境标识,脚本运行结束,nginx获取标识将该请求分发到灰度环境;
S10,S08中匹配失败,返回nginx生产环境标识,脚本运行结束,nginx获取标识将该请求分发到生产环境;
S11,S07中取当前请求cookie失败,脚本会解析当前请求的header;
S12,遍历灰度商户配置文件中优先级配置表,匹配当前请求信息的参数列表,若匹配失败,直接返回nginx生产环境标识,脚本运行结束,若匹配成功则向下执行;
S13,根据参数列表里面的参数,匹配该域名下的灰度商户信息,若匹配失败,则返回nginx生产环境标识,脚本运行结束,若匹配成功则向下执行;
S14,匹配成功后获取当前商户配置信息中当前版本约定好的key并设置为cookie,返回nginx灰度标识,脚本运行结束。
优选的,MQ消息队列分流包括以下步骤:
步骤1,在正式生产环境运行的消息队列生产者需要区分消息的来源是生产环境还是灰度环境,从而发到对应环境的消费者;
步骤2,每个环境(开发环境、测试环境、灰度环境、生产环境)部署的生产者在发送消息的时候会在所发送的消息的标签(tag)中添加当前环境标识(生产环境除外,灰度:h、测试:t、开发:d),再将消息发出;
步骤3,对应环境部署的消费者程序只消费指定了标签的消息(tag)和消费者id(当有多个消费者程序的时候,这个id用来指定它们同属一个组),这样确保一个环境的生产者所发送的消息只会被同一个环境消费者消费(ex.灰度环境的生产者所发的消息只会被灰度环境的消费者接受到);
步骤4,当对应环境的消费者接收到消息之后,会将消息的tag后缀去除(如果有),因为消费程序需要最初的那个tag信息;
步骤5,完成一个消息从生产者到消费者的完整流程。
本发明的有益效果:
通过配置参数访问应用,在忠诚度较高的用户进行测试版本稳定性的情况下,提高应用可靠性,减少故障发生的概率,使生产环境的软件更稳定运行的优点。
附图说明
图1是前端请求逻辑结构示意图;
图2是MQ消息队列分流逻辑结构示意图。
具体实施方式
实施例1:一种软件应用程序的阶梯灰度发布控制方法,包括获取请求信息后匹配的灰度pat配置信息;
灰度path配置信息匹配包含改请求路径的配置信息,如包含该请求则取到key执行第三步,如不包含,就取cookie,cookie中包含版本约定好的key且匹配商户成工,就返回灰度环境标识给nginx,如cookie也没有就取请求头中的key;获取到请求参数的key值后匹配灰度商户信息配置文件,确认是否存在该商户配置信息,若无就直接返回nginx一个生产环境的标识;
若存在就获取该商户配置信息中当前版本约定的key set到cookie中返回nginx一个灰度标识将该请求分发到灰度环境。
前端请求包括以下步骤:
S01,脚本获取前端请求;
S02,解析请求中的path参数,根据path匹配脚本配置文件的灰度path;
S03,S02中匹配成功则获取灰度path配置文件中约定的当前请求灰度分流key对应的值,商户配置信息中映射的key;
S04,脚本解析并获取当前域名下配置的所有灰度商户信息;
S05,匹配S04中获取到的信息,匹配成功后,获取当前商户配置信息中当前版本约定的key设置为cookie,返回nginx灰度环境标识,脚本运行结束,nginx获取标识将该请求分发到灰度环境;
S06,S04中匹配失败的,返回nginx生产环境标识,脚本运行结束,nginx获取标识将该请求分发到生产环境;
S07,S02中匹配商户path失败,脚本会从当前请求的cookie中取值;
S08,取到当前cookie值再去匹配当前域名灰度商户;
S09,匹配成功,返回nginx灰度环境标识,脚本运行结束,nginx获取标识将该请求分发到灰度环境;
S10,S08中匹配失败,返回nginx生产环境标识,脚本运行结束,nginx获取标识将该请求分发到生产环境;
S11,S07中取当前请求cookie失败,脚本会解析当前请求的header;
S12,遍历灰度商户配置文件中优先级配置表,匹配当前请求信息的参数列表,若匹配失败,直接返回nginx生产环境标识,脚本运行结束,若匹配成功则向下执行;
S13,根据参数列表里面的参数,匹配该域名下的灰度商户信息,若匹配失败,则返回nginx生产环境标识,脚本运行结束,若匹配成功则向下执行;
S14,匹配成功后获取当前商户配置信息中的当前版本约定的key设置为cookie,返回nginx灰度标识,脚本运行结束。
MQ消息队列分流包括以下步骤:
步骤1,在正式生产环境运行的消息队列生产者需要区分消息的来源是生产环境还是灰度环境,从而发到对应环境的消费者;
步骤2,每个环境(开发环境、测试环境、灰度环境、生产环境)部署的生产者在发送消息的时候会在所发送的消息的标签(tag)中添加当前环境标识(生产环境除外,灰度:h、测试:t、开发:d),再将消息发出;
步骤3,对应环境部署的消费者程序只消费指定了标签的消息(tag)和消费者id(当有多个消费者程序的时候,这个id用来指定它们同属一个组),这样确保一个环境的生产者所发送的消息只会被同一个环境消费者消费(ex.灰度环境的生产者所发的消息只会被灰度环境的消费者接受到);
步骤4,当对应环境的消费者接收到消息之后,会将消息的tag后缀去除(如果有),因为消费程序需要最初的那个tag信息;
步骤5,完成一个消息从生产者到消费者的完整流程。
通过配置参数访问应用,在忠诚度较高的用户进行测试版本稳定性的情况下,提高应用可靠性,减少故障发生的概率,使生产环境的软件更稳定运行的优点。
最后应说明的是:以上实施例仅用以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围,而所附权利要求意在涵盖落入本发明精神和范围中的这些修改或者等同替换。
Claims (3)
1.一种软件应用程序的阶梯灰度发布控制方法,其特征在于:包括获取请求信息后匹配path配置文件中的配置信息;
灰度配置信息匹配包含改请求路径的配置信息,如包含该请求则取到key执行第三步,如不包含,就取cookie,cookie中包含约定好设置进去的key,并匹配灰度商户配置信息,匹配成功就返回灰度环境标识给nginx,如cookie也没有就取请求头中的key;获取到请求参数的key值后匹配灰度商户信息配置文件,确认是否存在该商户配置信息,若无就直接返回nginx一个生产环境的标识;
若存在就获取该商户配置信息中的当前版本约定的keyset到cookie中并返回nginx一个灰度标识将该请求分发到灰度环境。
2.根据权利要求1所述的一种软件应用程序的阶梯灰度发布控制方法,其特征在于:前端请求包括以下步骤:
S01,脚本获取前端请求;
S02,解析请求中的path参数,根据path匹配脚本配置文件的灰度path;
S03,S02中匹配成功则获取灰度path配置文件中约定的当前请求灰度分流key对应的值,商户配置信息中映射的key;
S04,脚本解析并获取当前域名下配置的所有灰度商户信息;
S05,匹配S04中获取到的信息,匹配成功后,获取当前商户配置信息中的当前版本约定好的key并设置为cookie,返回nginx灰度环境标识,脚本运行结束,nginx获取标识将该请求分发到灰度环境;
S06,S04中匹配失败的,返回nginx生产环境标识,脚本运行结束,nginx获取标识将该请求分发到生产环境;
S07,S02中匹配商户path失败,脚本会从当前请求的cookie中取值;
S08,取到当前cookie值再去匹配当前域名灰度商户;
S09,匹配成功,返回nginx灰度环境标识,脚本运行结束,nginx获取标识将该请求分发到灰度环境;
S10,S08中匹配失败,返回nginx生产环境标识,脚本运行结束,nginx获取标识将该请求分发到生产环境;
S11,S07中取当前请求cookie失败,脚本会解析当前请求的header;
S12,遍历灰度商户配置文件中优先级配置表,匹配当前请求信息的参数列表,若匹配失败,直接返回nginx生产环境标识,脚本运行结束,若匹配成功则向下执行;
S13,根据参数列表里面的参数,匹配该域名下的灰度商户信息,若匹配失败,则返回nginx生产环境标识,脚本运行结束,若匹配成功则向下执行;
S14,匹配成功后获取当前商户配置信息中的版本约定的key设置为cookie,返回nginx灰度标识,脚本运行结束。
3.根据权利要求2所述的一种软件应用程序的阶梯灰度发布控制方法,其特征在于:MQ消息队列分流包括以下步骤:
步骤1,在正式生产环境运行的消息队列生产者需要区分消息的来源是生产环境还是灰度环境,从而发到对应环境的消费者;
步骤2,每个环境(开发环境、测试环境、灰度环境、生产环境)部署的生产者在发送消息的时候会在所发送的消息的标签(tag)中添加当前环境标识(生产环境除外,灰度:h、测试:t、开发:d),再将消息发出;
步骤3,对应环境部署的消费者程序只消费指定了标签的消息(tag)和消费者id(当有多个消费者程序的时候,这个id用来指定它们同属一个组),这样确保一个环境的生产者所发送的消息只会被同一个环境消费者消费(ex.灰度环境的生产者所发的消息只会被灰度环境的消费者接受到);
步骤4,当对应环境的消费者接收到消息之后,会将消息的tag后缀去除(如果有),因为消费程序需要最初的那个tag信息;
步骤5,完成一个消息从生产者到消费者的完整流程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811426879.0A CN111221565B (zh) | 2018-11-27 | 2018-11-27 | 一种软件应用程序的阶梯灰度发布控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811426879.0A CN111221565B (zh) | 2018-11-27 | 2018-11-27 | 一种软件应用程序的阶梯灰度发布控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111221565A true CN111221565A (zh) | 2020-06-02 |
CN111221565B CN111221565B (zh) | 2023-12-19 |
Family
ID=70827121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811426879.0A Active CN111221565B (zh) | 2018-11-27 | 2018-11-27 | 一种软件应用程序的阶梯灰度发布控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111221565B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913738A (zh) * | 2020-08-19 | 2020-11-10 | 工银科技有限公司 | 访问请求的处理方法、装置、计算设备和介质 |
CN112560721A (zh) * | 2020-12-21 | 2021-03-26 | 平安银行股份有限公司 | 无感知模型切换方法、装置、电子设备及存储介质 |
CN112988572A (zh) * | 2021-02-09 | 2021-06-18 | 中国工商银行股份有限公司 | 多环境多渠道多版本模拟测试方法及装置 |
CN113507527A (zh) * | 2021-07-20 | 2021-10-15 | 上海万物新生环保科技集团有限公司 | 一种基于网关转发的代码数据访问方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095743A (zh) * | 2011-10-28 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种灰度发布的处理方法及系统 |
CN103176790A (zh) * | 2011-12-26 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 应用发布方法和系统 |
CN105975270A (zh) * | 2016-05-04 | 2016-09-28 | 北京思特奇信息技术股份有限公司 | 一种基于http请求转发的灰度发布方法及系统 |
WO2017193285A1 (zh) * | 2016-05-10 | 2017-11-16 | 华为技术有限公司 | 软件管理方法及装置 |
-
2018
- 2018-11-27 CN CN201811426879.0A patent/CN111221565B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095743A (zh) * | 2011-10-28 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种灰度发布的处理方法及系统 |
CN103176790A (zh) * | 2011-12-26 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 应用发布方法和系统 |
CN105975270A (zh) * | 2016-05-04 | 2016-09-28 | 北京思特奇信息技术股份有限公司 | 一种基于http请求转发的灰度发布方法及系统 |
WO2017193285A1 (zh) * | 2016-05-10 | 2017-11-16 | 华为技术有限公司 | 软件管理方法及装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913738A (zh) * | 2020-08-19 | 2020-11-10 | 工银科技有限公司 | 访问请求的处理方法、装置、计算设备和介质 |
CN111913738B (zh) * | 2020-08-19 | 2024-04-30 | 中国工商银行股份有限公司 | 访问请求的处理方法、装置、计算设备和介质 |
CN112560721A (zh) * | 2020-12-21 | 2021-03-26 | 平安银行股份有限公司 | 无感知模型切换方法、装置、电子设备及存储介质 |
CN112560721B (zh) * | 2020-12-21 | 2023-12-08 | 平安银行股份有限公司 | 无感知模型切换方法、装置、电子设备及存储介质 |
CN112988572A (zh) * | 2021-02-09 | 2021-06-18 | 中国工商银行股份有限公司 | 多环境多渠道多版本模拟测试方法及装置 |
CN112988572B (zh) * | 2021-02-09 | 2024-02-09 | 中国工商银行股份有限公司 | 多环境多渠道多版本模拟测试方法及装置 |
CN113507527A (zh) * | 2021-07-20 | 2021-10-15 | 上海万物新生环保科技集团有限公司 | 一种基于网关转发的代码数据访问方法及设备 |
CN113507527B (zh) * | 2021-07-20 | 2023-05-30 | 上海万物新生环保科技集团有限公司 | 一种基于网关转发的代码数据访问方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111221565B (zh) | 2023-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111221565A (zh) | 一种软件应用程序的阶梯灰度发布控制方法 | |
CN108632374B (zh) | 软件灰度发布方法及装置 | |
US10700947B2 (en) | Life cycle management method and device for network service | |
US9697066B2 (en) | Method for processing data quality exceptions in a data processing system | |
CN106878045B (zh) | 业务调用方法及装置 | |
US10621651B2 (en) | Automatic recharge system and method, and server | |
US9772834B2 (en) | Exportable encoded identifications of networked machines | |
CN108769118B (zh) | 一种分布式系统中主节点的选取方法及装置 | |
CN110336874A (zh) | 一种访问服务的方法、装置、服务器及存储介质 | |
CN107277188B (zh) | 一种确定ip地址归属信息的方法、客户端、服务器及业务系统 | |
CN111694682B (zh) | 多层级租户的管理方法、装置、设备及存储介质 | |
US10320894B2 (en) | Method and apparatus for allocating availability zone | |
CN110716730B (zh) | 灰度发布方法、装置、设备及计算机可读存储介质 | |
US20170139808A1 (en) | Method and dispatcher node for server processing management | |
CN109857629B (zh) | 一种扫描检测方法及装置 | |
CN116126372A (zh) | 一种应用程序升级方法、装置、电子设备和存储介质 | |
CN115016821A (zh) | 回调数据的灰度分发方法、装置、计算机设备和存储介质 | |
CN111625866B (zh) | 一种权限管理方法、系统、设备及存储介质 | |
CN113032188B (zh) | 确定主服务器的方法、装置、服务器及存储介质 | |
CN113839783A (zh) | 一种任务处理方法、装置及设备 | |
CN106936643A (zh) | 一种设备联动方法以及终端设备 | |
CN112395119A (zh) | 异常数据处理方法、装置、服务器及存储介质 | |
CN111459737A (zh) | 问题定位方法、装置、计算机设备及存储介质 | |
CN114035931A (zh) | 一种任务调度处理方法及装置 | |
CN111338752B (zh) | 容器调整方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |