CN108319468B - 灰度发布方法、装置、系统及电子设备 - Google Patents
灰度发布方法、装置、系统及电子设备 Download PDFInfo
- Publication number
- CN108319468B CN108319468B CN201710030432.0A CN201710030432A CN108319468B CN 108319468 B CN108319468 B CN 108319468B CN 201710030432 A CN201710030432 A CN 201710030432A CN 108319468 B CN108319468 B CN 108319468B
- Authority
- CN
- China
- Prior art keywords
- gray
- user
- server
- service
- formal
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 235000014510 cooky Nutrition 0.000 claims abstract description 53
- 238000012545 processing Methods 0.000 claims description 7
- 238000007726 management method Methods 0.000 claims 2
- 238000004590 computer program Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000010079 rubber tapping Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 101001094649 Homo sapiens Popeye domain-containing protein 3 Proteins 0.000 description 1
- 101000608234 Homo sapiens Pyrin domain-containing protein 5 Proteins 0.000 description 1
- 101000578693 Homo sapiens Target of rapamycin complex subunit LST8 Proteins 0.000 description 1
- 102100027802 Target of rapamycin complex subunit LST8 Human genes 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000009466 transformation Effects 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Library & Information Science (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种灰度发布方法及系统,所述方法包括:自定义灰度规则,生成灰度规则文件,在从客户端接收到用户对初始页面的访问请求时,引用所述灰度规则文件,根据所述灰度规则文件中的灰度规则来设置所述用户的cookie中的灰度标识位,并将所述cookie返回所述客户端,以及当从所述客户端接收到用户对服务的请求时,根据所述用户的cookie中的灰度标识位分别调用灰度服务或正式服务。
Description
技术领域
本发明涉及网络技术领域,特别是涉及一种灰度发布方法、装置、系统及电子设备。
背景技术
灰度发布是指在软件发布过程中,能够平滑过渡的一种发布方式。例如,假设当前软件的版本有新旧两个版本,当用户向服务器发送该软件的请求消息时,服务器控制一部分用户继续使用旧版本,另一部分用户使用新版本。如果用户在使用新版本的过程中没有什么异常,那么逐渐扩大新版本的发布范围,最终把所有用户迁移到新版本。互联网产品迭代更新快,每一次升级都伴随着各种各样的风险。灰度发布可以保证整体系统的稳定,在初始灰度的时候可以发现、调整问题,以减小风险。
现有技术中,为了实现灰度发布,一般采用如下方法:1)通过Nginx服务器配置灰度规则,利用Nginx服务器根据灰度规则将用户请求发送到新版本服务器或旧版本服务器;2)在正式应用服务器外单独部署一套服务器,并在这些服务器上部署灰度版本应用,灰度体验完成后,再对正式应用服务器进行常规的部署发布。发明人在实现本发明的过程中,发现现有技术存在如下问题:现有技术中的方法配置规则固定,缺乏业务灵活性,不能平滑地将灰度推广到所有用户。
发明内容
本发明提供了一种灰度发布方法,包括:
自定义灰度规则,生成灰度规则文件;
在从客户端接收到用户对初始页面的访问请求时,引用该灰度规则文件,并根据所述灰度规则文件中的灰度规则来设置所述用户的cookie中的灰度标识位,并将所述cookie返回所述客户端;
当从所述客户端接收到用户对服务的请求时,根据所述用户的cookie中的灰度标识位分别调用灰度服务或正式服务。
本发明还提供了一种灰度发布装置,包括:
规则生成模块,用于自定义灰度规则,生成灰度规则文件;
标识设置模块,用于在从客户端接收到用户对初始页面的访问请求时,引用所述灰度规则文件,根据所述灰度规则文件中的灰度规则设置所述用户cookie中的灰度标识位,并将所述cookie返回客户端;
分流模块,用于从所述客户端接收到用户对服务的请求时,根据所述用户的cookie中的灰度标识位分别调用灰度服务或正式服务。
本发明还提供了一种灰度发布系统,包括:
配置后台管理端,根据自定义灰度规则,生成灰度规则文件,并将灰度规则文件发布到前端文件服务器;
前端文件服务器,存放由所述配置后台管理端发布的灰度规则文件,所述前端文件服务器在从客户端接收到用户对初始页面的访问请求时,引用该灰度规则文件,并根据所述灰度规则文件中的灰度规则来设置所述用户的cookie中的灰度标识位,并将所述cookie返回所述客户端;
分流服务器,当从所述客户端接收到用户对服务的请求时,根据cookie中的灰度标识位将请求分流到灰度通用网关接口服务器或正式通用网关接口服务器;
灰度通用网关接口服务器,用于接收由分流服务器发出的,按照灰度标识位标记应使用灰度服务的用户的请求,并调用灰度应用服务器中的服务;
正式通用网关接口服务器,用于接收由分流服务器发出的,按照灰度标识位标记应使用正式服务的用户的请求,并调用正式应用服务器中的服务;
灰度应用服务器,用于提供灰度服务;以及
正式应用服务器,用于提供正式服务。
本发明还提供了一种灰度发布电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行自定义灰度规则,生成灰度规则文件,在从客户端接收到用户对初始页面的访问请求时,引用该灰度规则文件,并根据所述灰度规则文件中的灰度规则来设置所述用户的cookie中的灰度标识位,并将所述cookie返回所述客户端,当从所述客户端接收到用户对服务的请求时,根据所述用户的cookie中的灰度标识位分别调用灰度服务或正式服务的方法。
本发明还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于执行自定义灰度规则,生成灰度规则文件,在从客户端接收到用户对初始页面的访问请求时,引用该灰度规则文件,并根据所述灰度规则文件中的灰度规则来设置所述用户的cookie中的灰度标识位,并将所述cookie返回所述客户端,当从所述客户端接收到用户对服务的请求时,根据所述用户的cookie中的灰度标识位分别调用灰度服务或正式服务的方法。
附图说明
为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本发明实施例的一种灰度发布系统的结构框图。
图2示意性示出了根据本发明实施例的用户访问初始页面时灰度标识位设置的流程图。
图3示意性示出了根据本发明实施例的用户发出请求时分流服务器进行分流转发的流程图。
图4示意性示出了根据本发明另一实施例的一种灰度发布系统的结构框图。
图5示意性示出了根据本发明实施例的配置中心路由系统的示意图。
图6示意性示出了根据本发明实施例的一种灰度发布方法的流程图。
图7示意性示出了根据本发明实施例的一种灰度发布装置的示意图。
图8示意性示出了根据本发明实施例的分流模块的示意图。
图9示意性示出了根据本发明实施例的一种灰度发布电子设备及非暂态计算机可存储介质的示意图。
具体实施方式
根据结合附图对本发明示例性实施例的以下详细描述,本发明的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。
在本发明中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。
在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。
因此,本申请公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本申请公开的技术可以采取存储有指令的计算机可读介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用。在本申请公开的上下文中,计算机可读介质可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,计算机可读介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。计算机可读介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
互联网产品迭代更新快,每一次产品升级都伴随着各种各样的风险,新旧版本兼容的风险,用户使用习惯突然改变而造成用户流失的风险,系统宕机的风险。为了避免这些风险,很多产品都采用了灰度发布的策略,其主要思想就是把影响集中到一个点,然后再发散到一个面,出现意外情况时,很容易回退,避免造成大范围的影响。
具体来说,当增加新功能或采用改进技术的互联网产品上线发布前,如果新的发布影响面较大时,会考虑先切分部分用户流量进来,让这部分用户先体验新的互联网产品,开发人员可以根据这部分用户产生的数据对新的互联网产品进行不断优化,最终正式上线发布,然后再让所有用户使用。这种灰度发布方法降低了发布新功能的风险,实现了平滑的发布。
为便于理解,下面对本文中涉及的术语做一简要描述。
CGI(Common Gateway Interface,通用网关接口)是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。web服务器(例如Apache)用于处理接收网页访问请求(html请求),并根据网页访问请求提取相应的web服务器上存储的网络资源的资源地址(即url,Uniform Resource Locator,统一资源定位符),然后根据资源地址返回网络资源。若网页访问请求对应有需要对web服务器后端的数据库进行增加、删除、修改或查看的操作,通常需要web服务器通过CGI进行处理。因此web服务器会将接收到的访问请求转发给基于CGI的计算机程序(也叫外部应用程序),该程序接收到web服务器转发的访问请求后,则可提取访问请求中包含的业务数据。
JavaScript是一种基于对象和事件驱动,并具有安全性能的解释型脚本语言,它的解释器JavaScript引擎是浏览器的一部分,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能。其动态性体现在,它不需要经过Web服务器就可以对用户的输入做出响应,在访问一个网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作JavaScript都可以直接对这些事件给出相应的响应。另外,JavaScript还具有跨平台性,不依赖操作系统,仅需要浏览器的支持即可。
Nginx服务器是一种高性能的HTTP和反向代理服务器,同时也是IMAP/POP3/SMTP代理服务器。Nginx服务器具有安装简单、配置文件简洁、启动容易、稳定性高一级对系统资源的消耗低等优点,并且即使运行数个月也不需要重新启动。
Cookie是指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据。cookie是由服务器端生成,发送给浏览器,浏览器会将cookie的名称和值保存到某个目录下的文本文件内,下次请求同一网站时就发送该cookie给服务器(前提是浏览器设置为启用cookie)。cookie名称和值可以由服务器端开发自己定义。由上可知,若用户客户端第一次请求登录服务器,请求中的cookie信息为空,服务器将生成对应的cookie信息并发给客户端,客户端若再次请求则携带该cookie信息。
本发明公开了一种灰度发布系统100。如图1所示,该系统100包括:配置后台管理端110、前端文件服务器120、分流服务器130、灰度CGI服务器140、正式CGI服务器150、灰度应用服务器160以及正式应用服务器170。客户端200与系统100可通信地连接,使用浏览器进行网络访问。系统100经由客户端200向用户提供灰度服务或正式服务。
在下文中,灰度CGI服务器140和/或正式CGI服务器150统称为CGI服务器,灰度应用服务器160和/或正式应用服务器170统称为应用服务器。正式用户是指按照灰度规则应提供正式服务的用户,灰度用户是指按照灰度规则应提供灰度服务的用户。
如图1所示,根据本发明的实施例,通过配置后台管理端110自定义灰度规则,生成灰度规则文件并且发布规则文件到前端文件服务器120。所述灰度规则可以用于判定使用正式应用还是灰度应用响应用户请求,可根据每个应用的需求预先设定不同的灰度规则。灰度规则可以是指定用户名,或者通过对用户名采用一定的算法转化成数字,再使用一个阈值进行比较,抑或是对发送请求的IP地址根据一定的条件进行筛选等,但不限于此。可以理解的是,灰度规则不是特定的,也不局限于本段所描述的方式。相反,可以根据实际需要,以各种不同的方式设定灰度规则。选定灰度规则后,配置后台管理端110可以根据一些预设信息,自动生成灰度规则文件,当然,手动写成的规则文件应视为与本发明无本质区别。
根据本实施例,灰度文件是以JavaScript语言形式编写的。在本实施例中,JavaScript灰度规则文件实现了根据灰度规则修改用户cookie的功能。本系统还可以采用其他脚本语言,如VScript等,可以实现相同或相似的技术效果。
一般地,用户访问网站时,首先会访问初始页面,该初始页面例如可以是静态页面。用户对该初始页面的访问请求从客户端200发送到前端文件服务器120。
前端文件服务器120可以存储一些网页的网页数据,包括静态页面文件、css以及JavaScript文件等。前端文件服务器120响应于客户端对初始页面的访问请求,向客户端200返回页面数据。在客户端200接收到页面数据时,进行页面渲染,页面渲染完毕后,客户端200呈现该初始页面给用户。
在本实施例中,前端文件服务器120还可以存储由配置后台管理端110发布的JavaScript灰度规则文件。在接收到用户通过浏览器发送的网页访问请求后,前端文件服务器120引用JavaScript灰度规则文件修改用户cookie的灰度标识位,并将修改后的cookie返回客户端200。
在本实施例中,灰度标识位可以为一位二进制数字,0或者1,其中,1表示该用户应使用灰度服务器中的服务,0表示该用户应使用正式服务器中的服务。此方法不应视为对本发明的限制。当同时存在多个灰度版本时,也可以选择cookie中的多位数字作为灰度标识位,以区分应当使用不同灰度服务器中服务的用户。例如,当同时存在三个灰度版本和一个正式版本时,可以选用两位作为灰度标识位:00表示正式版本;01表示第一个灰度版本;10表示第二个灰度版本;11表示第三个灰度版本。
图2示意性示出了根据本发明实施例的前端文件服务器120在用户访问初始页面时设置灰度标识位的流程图。
该步骤开始于步骤S20。
在步骤S21,前端文件服务器120接收来自客户端200的对初始页面的访问请求。
在步骤S22,前端文件服务器120引用灰度规则文件,判断用户是否为灰度用户。如果用户是灰度用户,则去往步骤S23,如果用户不是灰度用户,则去往步骤S24。
在步骤S23,用户是灰度用户,则前端文件服务器120修改该用户cookie的灰度标识位,例如将其设置为1,然后进行步骤S25。
在步骤S24,用户不是灰度用户,则前端文件服务器120修改该用户cookie的灰度标识位,例如将其设置为0,然后进行步骤S25。
在步骤S25,前端文件服务器120将修改后的cookie发送到客户端200。
该方法在步骤S26结束。
返回参考图1,当用户通过客户端200发出访问其他动态页面或调用应用的请求时,所发送的请求中包含带有灰度标识位的cookie信息。此请求发送到分流服务器130,分流服务器130根据灰度标识位将请求转发到灰度CGI服务器140或正式CGI服务器150。根据本发明的实施例,所述分流服务器130可以为Nginx服务器。接收到请求的CGI服务器调用相应的应用服务器,以将相应服务数据返回客户端200。
图3示意性示出了根据本发明实施例的分流服务器130对用户的请求进行分流转发的流程图。
该方法开始于步骤S30。
在步骤S31,分流服务器130接收来自客户端200的请求。
在步骤S32,分流服务器130查询请求中所包含的cookie信息,根据cookie中的灰度标识位判断用户是正式用户还是灰度用户。如果用户是正式用户,则去往步骤S33,如果用户是灰度用户,则去往步骤S34。
在步骤S33,分流服务器130将请求转发到灰度CGI服务器140。
在步骤S34,分流服务器130将请求转发到正式CGI服务器150。
CGI服务器接收到请求之后,从相应的应用服务器调用相应的灰度或正式服务数据,返回给客户端200。
具体地,CGI程序存放于CGI服务器中。灰度CGI服务器140接收到分流服务器130转发的请求后,访问相应的灰度应用服务器160,并调用相关服务,返回给客户端200。正式CGI服务器150接收到分流服务器130转发的请求后,访问相应的灰度应用服务器170,并调用相关服务,返回给客户端200。
该方法在步骤S35处结束。
图4示意性示出了根据本发明另一实施例的一种灰度发布系统的结构框图。图4所示系统与图1所示系统大体相同,不同之处在于在CGI服务器和应用服务器之间,还设有配置中心路由系统180。CGI服务器在访问应用服务器时,通过配置中心路由系统180查找本机对应的应用服务器的ip地址和端口号(ip:port),通过ip:port访问相应的服务器,保证灰度环境和正式环境不相互干扰。下面具体说明配置中心路由系统180的操作,对于与图1所示系统相同的部分,则不再重复。
根据本发明的实施例,每个CGI服务器及业务服务器在配置中心路由系统有对应的配置项,每个配置项可创建多个组(set),通过indexId区分每个set,每个set可储存多个ip:port,并提供相关查询接口。CGI服务器140调用服务时,通过配置中心路由系统180查询接口查询对应配置项set_config,匹配到本机IP所在的组的参数indexId。通过本机的indexId参数,查询到对应业务服务器的配置项Svc_config里面对应的set的ip:port,根据查询到服务的ip:port,将用户请求发送到对应的服务器上。
例如,如图5所示,某项业务服务的数据信息存储在两台灰度应用服务器(例如,灰度应用服务器1和灰度应用服务器2)和两台正式应用服务器(例如,正式应用服务器1和正式应用服务器2)中,该业务服务在配置中心路由系统180有一个配置项svc_config 510,在svc_config 510下创建两个set(set1 511和set2 512,即indexId=1和indexId=2)。set1511中存放有灰度应用服务器1的ip:port 511A和灰度应用服务器2的ip:port 511B,set2512中存放有正式应用服务器1的ip:port 512A和正式应用服务器2的ip:port 512B。相应地,有两台灰度CGI服务器(例如,灰度CGI服务器1和灰度CGI服务器2)和两台正式CGI服务器(例如,正式CGI服务器1和正式CGI服务器2)。这些CGI服务器在配置中心路由系统有一个对应的配置项set_config 520。在set_config 520下创建两个set(set1521和set2 522,即indexId=1和indexId=2)。set1 521中存放有灰度CGI服务器1的ip:port 521A和灰度CGI服务器2的ip:port 521B,set2 522中存放有正式CGI服务器1的ip:port 522A和正式CGI服务器2的ip:port 522B。
当灰度CGI服务器2接到请求时,通过配置中心路由系统查询接口查询配置项set_config 520,匹配到本机IP所在的set 521的indexId参数1。通过本机indexId参数1,查询到对应服务配置项svc_config 510里面参数indexId=1的set1 511,以及set1 511下的ip:port(511A和511B),通过ip:port(511A和/或511B),调用灰度应用服务器1和/或灰度应用服务器2中的服务。
图6示意性示出了根据本发明实施例的一种灰度发布方法的流程图。该方法开始于步骤S60。
在步骤S61,自定义灰度规则,生成灰度规则文件;
在步骤S62,在从客户端接收到用户对初始页面的访问请求时,引用该灰度规则文件,并根据所述灰度规则文件中的灰度规则来设置所述用户的cookie中的灰度标识位,并将所述cookie返回所述客户端;
在步骤S63,当从所述客户端接收到用户对服务的请求时,根据所述用户的cookie中的灰度标识位分别调用灰度服务或正式服务。
该方法在步骤S64结束。
具体地,步骤S63所述的调用灰度或正式服务,可以包括:
查询对应应用服务的提供方的ip地址和端口号;以及
将用户请求发送到对应的应用服务的提供方调用相应的服务。
对于上述的灰度发布的方法实施例,其具体细节可参见图1所示系统实施例的部分,此处不再重复。
图7示意性示出了根据本发明实施例的一种灰度发布装置示意图。如图7所示,该装置包括规则生成模块710、标识设置模块720、和分流模块730。规则生成模块710被配置为用于自定义灰度规则,生成灰度规则文件。标识设置模块720被配置为用于在用户访问时,根据所述灰度规则设置所述用户cookie中的灰度标识位。分流模块730被配置为用于在用户发出请求时,根据所述用户cookie中的灰度标识位分流用户请求。
图8示意性示出了根据本发明实施例的分流模块的示意图。如图8所示,分流模块730包括查询单元731和发送单元732。查询单元731被配置为用于查询对应应用服务的提供方的ip地址和端口号,发送单元732被配置为根据查询到的信息将用户请求发送到对应的应用服务的提供方调用相应的服务。
图9示意性示出了根据本发明实施例的一种灰度发布电子设备及非暂态计算机可存储介质的示意图。一种灰度发布电子设备900包括处理器910,例如通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器910还可以包括用于缓存用途的板载存储器。处理器910可以是用于执行参考图6描述的根据本发明实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
一种灰度发布电子设备900还可以包括具有存储器形式的至少一个非暂态计算机可存储介质920,例如可以是能够包含、存储、传送、传播或传输指令的任意介质。例如,可读存储介质可以包括但不限于电、磁、光、电磁、红外或半导体系统、装置、器件或传播介质。可读存储介质的具体示例包括:磁存储装置,如磁带或硬盘(HDD);光存储装置,如光盘(CD-ROM);存储器,如随机存取存储器(RAM)或闪存;和/或有线/无线通信链路。
非暂态计算机可存储介质920包括计算机程序921,该计算机程序921包括代码/计算机可读指令,其在由处理器910执行时使得处理器910可以执行例如上面结合图6所描述的方法流程及其任何变形。
计算机程序921可被配置为具有例如包括计算机程序模块的计算机程序代码。例如,在示例实施例中,计算机程序921中的代码可以包括一个或多个程序模块,例如包括921A、模块921B、……模块921F。应当注意,模块的划分方式和个数并不是固定的,本领域技术人员可以根据实际情况使用合适的程序模块或程序模块组合,当这些程序模块组合被处理器910执行时,使得处理器910可以执行例如上面结合图6所描述的方法流程及其任何变形。
根据本发明的实施例,一种灰度发布电子设备900还可以包括用于从其他实体接收信号的输入单元930、以及用于向其他实体提供信号的输出单元940。输入单元930和输出单元940可以被布置为单一实体或者是分离的实体。输入单元930和输出单元940可以在处理器910的控制下,用于灰度发布电子设备900与客户端200之间的交互。
结合图7、图8和图9所示,根据本发明的实施例,规则生成模块710、标识设置模块720、分流模块730,以及查询单元731和发送单元732可以实现为参考图9描述的计算机程序模块,其在被处理器910执行时,可以实现上面描述的相应操作。
基于上述内容,在实际应用中,一个应用系统中可能包含多个项目应用。当其中某个项目应用增加新功能或进行技术改进时,产生相应的灰度代码,灰度代码可通过上述流程的处理方式进行灰度发布及请求处理。应用的灰度代码正式上线之前,还可能会经历多次修改,若修改该应用的灰度服务,则重新将修改后的灰度代码发布到对应的服务器上;和/或,若修改该应用的灰度规则,则重新发布修改后的灰度规则文件。
本发明的一个或多个实施例具有以下至少一个优点:
(1)利用现有系统建立一套灵活的灰度发布系统和方法,改造成本低,通过发布不同的灰度规则文件,就可以直接调整灰度人群,快速灵活控制灰度方案与灰度流量;
(2)Nginx服务器只简单判断灰度标识,灰度配置规则固定,简单易维护;
(3)灰度服务和正式服务部署在不同服务器上,可通过现有配置中心路由系统灵活配置灰度应用服务器和正式应用服务器,能将灰度平滑推广到所有用户,并且保证灰度环境和正式环境互不干扰。
当然,本发明的任一实施方式不一定需要同时达到以上所述的所有优点。
尽管已经参照本发明的特定示例性实施例示出并描述了本发明,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本发明进行形式和细节上的多种改变。因此,本发明的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。
Claims (9)
1.一种灰度发布方法,包括:
自定义灰度规则,生成灰度规则文件,其中,所述灰度规则用于判定使用正式服务还是灰度服务响应用户请求,所述灰度规则文件是以JavaScript形式编写的;
在从客户端接收到用户对初始页面的访问请求时,引用所述灰度规则文件,根据所述灰度规则文件中的灰度规则来设置所述用户的cookie中的灰度标识位,并将所述cookie返回所述客户端,其中,所述灰度标识位为至少一位二进制数字,用于表示至少两个不同的服务版本;
当从所述客户端接收到用户对服务的请求时,根据所述用户的cookie中的灰度标识位分别调用灰度服务或正式服务,包括:分流服务器接收来自所述客户端的请求,根据所述请求中所包含的cookie信息中的灰度标识位判断所述用户是正式用户还是灰度用户,如果所述用户是灰度用户,则所述分流服务器将所述请求转发至灰度通用网关接口服务器,访问相应的灰度应用服务器,以调用所述灰度服务,如果所述用户是正式用户,则所述分流服务器将所述请求转发至正式通用网关接口服务器,访问相应的正式应用服务器,以调用所述正式服务;以及
其中,所述通用网关接口服务器和所述应用服务器之间配置有配置中心路由系统,所述配置中心路由系统中配置有与所述通用网关接口服务器相关的第一配置项和与所述应用服务器相关的第二配置项,所述第一配置项和所述第二配置项中均包括多个组,所述灰度通用网关接口服务器和所述正式通用网关接口服务器各自的ip地址和端口号分别存储于所述第一配置项的不同的组中,所述灰度应用服务器和所述正式应用服务器各自的ip地址和端口号分别存储于所述第二配置项的不同的组中;
其中,所述通用网关接口服务器在调用服务时,通过所述配置中心路由系统查询与所述通用网关接口服务器相关的第一配置项,并匹配到所述第一配置项中对应的组的参数索引,通过所述参数索引查询到对应的第二配置项中对应的组的端口号,根据所述端口号,将用户请求发送到与所述端口号相对应的所述应用服务器中。
2.根据权利要求1所述的灰度发布方法,其中,所述调用灰度或正式服务,包括:
查询对应应用服务的提供方的ip地址和端口号;
将用户请求发送到对应的应用服务的提供方以调用相应的服务。
3.一种灰度发布装置,包括:
规则生成模块,被配置为用于自定义灰度规则,生成灰度规则文件,其中,所述灰度规则用于判定使用正式服务还是灰度服务响应用户请求,所述灰度规则文件是以JavaScript形式编写的;
标识设置模块,被配置为用于在从客户端接收到用户对初始页面的访问请求时,引用所述灰度规则文件,根据所述灰度规则文件中的灰度规则来设置所述用户的cookie中的灰度标识位,并将所述cookie返回所述客户端,其中,所述灰度标识位为至少一位二进制数字,用于表示至少两个不同的服务版本;
分流模块,被配置为用于当从所述客户端接收到用户对服务的请求时,根据所述用户的cookie中的灰度标识位分别调用灰度服务或正式服务,包括:分流服务器接收来自所述客户端的请求,根据所述请求中所包含的cookie信息中的灰度标识位判断所述用户是正式用户还是灰度用户,如果所述用户是灰度用户,则所述分流服务器将所述请求转发至灰度通用网关接口服务器,访问相应的灰度应用服务器,以调用所述灰度服务,如果所述用户是正式用户,则所述分流服务器将所述请求转发至正式通用网关接口服务器,访问相应的正式应用服务器,以调用所述正式服务;以及
其中,所述通用网关接口服务器和所述应用服务器之间配置有配置中心路由系统,所述配置中心路由系统中配置有与所述通用网关接口服务器相关的第一配置项和与所述应用服务器相关的第二配置项,所述第一配置项和所述第二配置项中均包括多个组,所述灰度通用网关接口服务器和所述正式通用网关接口服务器各自的ip地址和端口号分别存储于所述第一配置项的不同的组中,所述灰度应用服务器和所述正式应用服务器各自的ip地址和端口号分别存储于所述第二配置项的不同的组中;
其中,所述通用网关接口服务器在调用服务时,通过所述配置中心路由系统查询与所述通用网关接口服务器相关的第一配置项,并匹配到所述第一配置项中对应的组的参数索引,通过所述参数索引查询到对应的第二配置项中对应的组的端口号,根据所述端口号,将用户请求发送到与所述端口号相对应的所述应用服务器中。
4.根据权利要求3所述的灰度发布装置,所述分流模块还包括:
查询单元,被配置为用于查询对应应用服务的提供方的ip地址和端口号;
发送单元,被配置为将用户请求发送到对应的应用服务的提供方以调用相应的服务。
5.一种灰度发布系统,该系统包括:
配置后台管理端,根据自定义灰度规则生成灰度规则文件,并将灰度规则文件发布到前端文件服务器,其中,所述灰度规则用于判定使用正式服务还是灰度服务响应用户请求,所述灰度规则文件是以JavaScript形式编写的;
前端文件服务器,存放由所述配置后台管理端发布的灰度规则文件,所述前端文件服务器在从客户端接收到用户对初始页面的访问请求时,引用该灰度规则文件,并根据所述灰度规则文件中的灰度规则来设置所述用户的cookie中的灰度标识位,并将所述cookie返回所述客户端,其中,所述灰度标识位为至少一位二进制数字,用于表示至少两个不同的服务版本;
分流服务器,当从所述客户端接收到用户对服务的请求时,根据cookie中的灰度标识位将请求分流到灰度通用网关接口服务器或正式通用网关接口服务器;
灰度通用网关接口服务器,用于接收由分流服务器发出的,按照灰度标识位标记应使用灰度服务的用户的请求,并调用灰度应用服务器中的服务;
正式通用网关接口服务器,用于接收由分流服务器发出的,按照灰度标识位标记应使用正式服务的用户的请求,并调用正式应用服务器中的服务;
灰度应用服务器,用于提供灰度服务;以及
正式应用服务器,用于提供正式服务;
其中,所述通用网关接口服务器和所述应用服务器之间配置有配置中心路由系统,所述配置中心路由系统中配置有与所述通用网关接口服务器相关的第一配置项和与所述应用服务器相关的第二配置项,所述第一配置项和所述第二配置项中均包括多个组,所述灰度通用网关接口服务器和所述正式通用网关接口服务器各自的ip地址和端口号分别存储于所述第一配置项的不同的组中,所述灰度应用服务器和所述正式应用服务器各自的ip地址和端口号分别存储于所述第二配置项的不同的组中;
其中,所述通用网关接口服务器在调用服务时,通过所述配置中心路由系统查询与所述通用网关接口服务器相关的第一配置项,并匹配到所述第一配置项中对应的组的参数索引,通过所述参数索引查询到对应的第二配置项中对应的组的端口号,根据所述端口号,将用户请求发送到与所述端口号相对应的所述应用服务器中。
6.根据权利要求5所述的灰度发布的系统,其中,所述分流服务器为Nginx服务器。
7.根据权利要求5所述的灰度发布的系统,其中,还包括配置中心路由系统,通用网关接口服务器接收到用户请求后,通过配置中心路由系统查询对应应用服务器的ip地址和端口号,将用户请求发送到对应的应用服务器上,调用相应的服务。
8.一种灰度发布电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行根据权利要求1-2中任一项所述的方法。
9.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于执行根据权利要求1-2中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710030432.0A CN108319468B (zh) | 2017-01-16 | 2017-01-16 | 灰度发布方法、装置、系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710030432.0A CN108319468B (zh) | 2017-01-16 | 2017-01-16 | 灰度发布方法、装置、系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108319468A CN108319468A (zh) | 2018-07-24 |
CN108319468B true CN108319468B (zh) | 2021-10-15 |
Family
ID=62892482
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710030432.0A Active CN108319468B (zh) | 2017-01-16 | 2017-01-16 | 灰度发布方法、装置、系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108319468B (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189494B (zh) * | 2018-07-27 | 2022-01-21 | 创新先进技术有限公司 | 配置灰度发布方法、装置、设备及计算机可读存储介质 |
CN110798411A (zh) * | 2018-08-03 | 2020-02-14 | 阿里巴巴集团控股有限公司 | 服务调用方法、流量调度方法及装置 |
CN110830374B (zh) * | 2018-08-07 | 2022-12-02 | 北京京东尚科信息技术有限公司 | 一种基于sdk的灰度发布的方法和装置 |
CN110874227B (zh) * | 2018-08-29 | 2024-07-16 | 京东科技控股股份有限公司 | 实现于api网关的灰度发布的分流方法、系统和电子设备 |
CN109542475A (zh) * | 2018-10-22 | 2019-03-29 | 平安科技(深圳)有限公司 | 系统多版本的数据更新方法、装置、存储介质及服务器 |
CN109597643A (zh) * | 2018-11-27 | 2019-04-09 | 平安科技(深圳)有限公司 | 应用灰度发布方法、装置、电子设备及存储介质 |
CN109788029A (zh) * | 2018-12-14 | 2019-05-21 | 平安信托有限责任公司 | 微服务的灰度调用方法、装置、终端及可读存储介质 |
CN110045964B (zh) * | 2019-04-09 | 2022-10-28 | 厦门网宿有限公司 | 软件灰度发布方法、代理服务器、配置中心和系统 |
CN110120971B (zh) * | 2019-04-17 | 2022-12-06 | 北京奇艺世纪科技有限公司 | 一种灰度发布方法、装置及电子设备 |
CN110096305B (zh) * | 2019-04-25 | 2021-07-30 | 杭州数梦工场科技有限公司 | 灰度发布方法、装置、设备及存储介质 |
CN110647335B (zh) * | 2019-07-26 | 2024-06-25 | 平安科技(深圳)有限公司 | 软件灰度发布方法、装置、电子设备及存储介质 |
CN110311989B (zh) * | 2019-08-02 | 2022-01-28 | 中国工商银行股份有限公司 | 一种灰度发布方法、装置、存储介质、设备及系统 |
CN110489133A (zh) * | 2019-08-23 | 2019-11-22 | 亿企赢网络科技有限公司 | 一种灰度发布方法、系统及电子设备和存储介质 |
CN110532008A (zh) * | 2019-08-29 | 2019-12-03 | 深圳前海环融联易信息科技服务有限公司 | 一种产品灰度发布方法、装置、计算机设备及存储介质 |
CN110704483A (zh) * | 2019-09-06 | 2020-01-17 | 平安普惠企业管理有限公司 | 用户路由流程定位方法、设备、存储介质及装置 |
CN110753031B (zh) * | 2019-09-18 | 2022-03-18 | 平安科技(深圳)有限公司 | 基于微服务框架的一起灰度方法、装置和计算机设备 |
CN110704777A (zh) * | 2019-09-20 | 2020-01-17 | 阿里巴巴集团控股有限公司 | 用于实现灰度发布的方法和系统 |
CN112261072B (zh) * | 2019-10-10 | 2024-04-09 | 北京京东尚科信息技术有限公司 | 一种服务调用方法、装置、设备和存储介质 |
CN110784530A (zh) * | 2019-10-22 | 2020-02-11 | 聚好看科技股份有限公司 | 灰度的发布方法和服务器 |
CN111142963B (zh) * | 2019-11-22 | 2023-05-16 | 贵州电网有限责任公司 | 变电站仪器的端口查询方法、装置设备及存储介质 |
CN111104634B (zh) * | 2019-12-20 | 2023-08-29 | 北京达佳互联信息技术有限公司 | 灰度用户的方法、服务器及存储介质 |
CN113127023B (zh) * | 2019-12-31 | 2024-04-09 | 华为技术有限公司 | 业务升级的方法、装置和系统 |
CN111352642B (zh) * | 2020-02-27 | 2023-08-18 | 厦门网宿有限公司 | 服务设备及服务软件升级的方法 |
CN111586095B (zh) * | 2020-03-26 | 2023-09-19 | 中国平安财产保险股份有限公司 | 基于微服务灰度发布方法、装置、计算机设备及存储介质 |
CN111786885B (zh) * | 2020-06-23 | 2022-07-05 | 中国工商银行股份有限公司 | 分布式全链路灰度路由方法及装置 |
CN111858312B (zh) * | 2020-06-24 | 2024-07-12 | 亚美智联数据科技有限公司 | 应用程序的页面显示方法、装置、计算机设备和存储介质 |
CN113867775A (zh) * | 2020-06-30 | 2021-12-31 | 中兴通讯股份有限公司 | 接入请求的分发方法、服务器、可读介质、集群系统 |
CN112162774A (zh) * | 2020-09-28 | 2021-01-01 | 中国工商银行股份有限公司 | 一种软件灰度发布方法及装置 |
CN112073320B (zh) * | 2020-11-12 | 2021-02-09 | 深圳壹账通智能科技有限公司 | 基于云网关的api灰度发布方法、装置及计算机设备 |
CN113010438A (zh) * | 2021-04-27 | 2021-06-22 | 口碑(上海)信息技术有限公司 | 一种请求消息处理系统、方法、装置以及电子设备 |
CN113391823A (zh) * | 2021-06-15 | 2021-09-14 | 中国工商银行股份有限公司 | 灰度发布方法、装置及系统 |
CN113411219B (zh) * | 2021-06-29 | 2023-04-21 | 山东派盟网络科技有限公司 | 一种前端服务的发布方法、装置以及设备 |
CN114615135B (zh) * | 2022-02-18 | 2024-03-22 | 佐朋数科(深圳)信息技术有限责任公司 | 一种前端灰度发布方法、系统及存储介质 |
CN114598553A (zh) * | 2022-03-29 | 2022-06-07 | 中国工商银行股份有限公司 | 一种灰度发布方法及灰度发布装置 |
CN115022398A (zh) * | 2022-07-14 | 2022-09-06 | 中国工商银行股份有限公司 | 基于api开放平台的接口调用方法及装置、电子设备 |
CN115016824B (zh) * | 2022-08-09 | 2022-12-13 | 飞狐信息技术(天津)有限公司 | 一种服务安全更新方法及相关设备 |
CN115665162A (zh) * | 2022-10-26 | 2023-01-31 | 广州明动软件股份有限公司 | 一种用于灰度发布的智能分流引擎 |
CN117670172B (zh) * | 2023-10-27 | 2024-06-14 | 广东省电子口岸管理有限公司 | 一种外贸数据处理方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095743A (zh) * | 2011-10-28 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种灰度发布的处理方法及系统 |
CN105099988A (zh) * | 2014-04-24 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 用于支持灰度发布的方法、访问方法以及装置和系统 |
CN105791341A (zh) * | 2014-12-22 | 2016-07-20 | 华为软件技术有限公司 | 一种应用发布的处理方法、装置及系统 |
CN106096021A (zh) * | 2016-06-24 | 2016-11-09 | 合信息技术(北京)有限公司 | 一种静态页面灰度发布方法及系统 |
-
2017
- 2017-01-16 CN CN201710030432.0A patent/CN108319468B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095743A (zh) * | 2011-10-28 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种灰度发布的处理方法及系统 |
CN105099988A (zh) * | 2014-04-24 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 用于支持灰度发布的方法、访问方法以及装置和系统 |
CN105791341A (zh) * | 2014-12-22 | 2016-07-20 | 华为软件技术有限公司 | 一种应用发布的处理方法、装置及系统 |
CN106096021A (zh) * | 2016-06-24 | 2016-11-09 | 合信息技术(北京)有限公司 | 一种静态页面灰度发布方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108319468A (zh) | 2018-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108319468B (zh) | 灰度发布方法、装置、系统及电子设备 | |
US10356156B2 (en) | Method and device for loading webpage | |
US11159630B2 (en) | Third party validation of web content | |
RU2673403C2 (ru) | Способ доступа к веб-узлам, устройство и система веб-узла | |
CN108028853B (zh) | 边缘位置处的可定制的事件触发计算的系统、方法和介质 | |
US20140281918A1 (en) | Systems and methods for configuration-based optimization by an intermediary | |
US20150088969A1 (en) | Systems and methods for managing loading priority or sequencing of fragments of a web object | |
US20150207660A1 (en) | Client-side url redirection | |
CN109565518B (zh) | 用于可互换的内容取回的方法和系统 | |
CN110830374B (zh) | 一种基于sdk的灰度发布的方法和装置 | |
CN110874227A (zh) | 实现于api网关的灰度发布的分流方法、系统和电子设备 | |
CN101571876B (zh) | 脚本程序运行逻辑扩展的方法、服务器和客户端 | |
US20150271286A1 (en) | Data Transmission | |
WO2018053594A1 (en) | Emoji images in text messages | |
CN105743945A (zh) | 基于切换下载源的文件下载方法及系统 | |
KR20140143775A (ko) | 캐시 관리 기법 | |
US10749926B2 (en) | Proxy for modifying HTTP messages to comply with browser | |
CN103716319A (zh) | 一种Web访问优化的装置和方法 | |
EP3101539B1 (en) | Selection of compatible resources after updating web application servers | |
CN110674435A (zh) | 页面访问方法、服务器、终端、电子设备及可读存储介质 | |
US12028434B2 (en) | Generating early hints informational responses at an intermediary server | |
US10200488B2 (en) | Webpage loading method and apparatus | |
CN109302446B (zh) | 跨平台访问方法、装置、电子设备及存储介质 | |
US20190182336A1 (en) | Enabling multiple sessions in a single browser | |
CN106708900A (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 |