一种基于SDK的灰度发布的方法和装置制造方法及图纸

技术编号:23404560 阅读:22 留言:0更新日期:2020-02-22 16:28
本发明专利技术公开了一种基于SDK的灰度发布的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:由配置有SDK模块的Web服务器接收对服务的访问请求,其中,访问请求包括请求访问的服务的地址;响应于访问请求中具有有效的Cookie并且Cookie中包括应用名和灰度路由值,由SDK模块从灰度配置容器中获取与应用名相对应的灰度参数,其中,应用名用于标识请求访问的服务,灰度路由值包含灰度发布所需的与发出访问请求的客户端设备及其用户相关的信息;由SDK模块根据灰度参数对访问请求进行灰度路由。该实施方式通过引入SDK并设置Cookie值来实现灰度路由的技术手段简化了灰度环境的实现,大大节省了灰度发布成本。

A method and device of gray distribution based on SDK

【技术实现步骤摘要】
一种基于SDK的灰度发布的方法和装置
本专利技术涉及计算机
,尤其涉及一种基于SDK的灰度发布的方法和装置。
技术介绍
对互联网服务的用户体验的要求与日俱增,同时互联网服务的更新和扩展也越加频繁。对服务的新更新可能存在潜在的不足或问题,从而影响互联网服务的用户体验。如果对服务的新更新被直接提供给线上的全部用户,将导致全部用户都受到影响。因此需要在保持现有正式服务的同时,向部分用户群体提供具有更新内容的灰度服务,通过部分用户群体对新更新的服务的反馈可以发现潜在的不足和问题,并不断调整,从而逐渐扩大部分用户群体,最终将新更新扩展至所有现有服务。目前常用的一种灰度发布方式是采用Nginx服务器和内嵌的Lua脚本来实现分流。其基于Nginx代理服务和Lua脚本来耦合Nginx服务,Nginx服务接收到用户请求后,内嵌的Lua模块解析配置文件中的代码,之后对请求中的信息进行判断并根据判断的结果对请求进行转发从而实现分流。Nginx服务器是一种轻量级的网络服务器/反向代理服务器及电子邮件代理服务器,Lua是一种容易嵌入其它程序语言中使用的脚本语言。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:(1)在进行部署和配置时,如新增、修改和删除需要在各个Nginx服务器上都进行操作,集成和维护成本高,无法便利地实现大规模应用时对服务器的统一维护;(2)由于与业务隔离,获得业务字段难度高;(3)仅能够实现有限的路由规则,难以适用复杂业务字段的路由。专利技术内容有鉴于此,本专利技术实施例提供一种基于SDK(SoftwareDevelopmentKit,软件开发工具包)的灰度发布的方法和装置,能够通过引入SDK并设置Cookie(储存在用户本地终端上的数据)值来实现灰度路由,简化了灰度环境的实现,大大节省了灰度发布成本;引入SDK能够实现统一配置机制来对路由规则即时配置,促进了灰度发布系统的效率,并且无需上线即可修改路由规则,使灰度环境的维护成本降低且使具有灰度发布需求的服务的集成变得简便,而且能够支持复杂规则的灰度路由。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种基于SDK的灰度发布的方法。根据本专利技术实施例的基于SDK的灰度发布的方法,包括:由配置有SDK模块的Web服务器接收对服务的访问请求,其中,所述访问请求包括请求访问的服务的地址;响应于所述访问请求中具有有效的Cookie并且所述Cookie中包括应用名和灰度路由值,由所述SDK模块从灰度配置容器中获取与所述应用名相对应的灰度参数,其中,所述应用名用于标识请求访问的服务,所述灰度路由值包含判断所述访问请求是否符合灰度发布所需的与发出所述访问请求的客户端设备及其用户相关的信息;由所述SDK模块根据所述灰度参数对所述访问请求进行灰度路由。替选地,所述灰度参数包括:灰度地址列表、灰度路由值白名单、以及灰度路由值规则,其中所述灰度地址列表中记录了与所述应用名相对应的服务的一个或多个灰度服务的地址,所述灰度服务的地址不同于请求访问的服务的地址;根据所述灰度参数对所述访问请求进行灰度路由包括:由所述SDK模块在所述灰度地址列表中查询请求访问的地址,响应于未查询到请求访问的地址,由所述SDK模块针对所述灰度路由值在所述灰度路由值白名单中进行查询;以及响应于从所述灰度路由值白名单中查询到匹配所述灰度路由值的条目,由所述SDK模块根据所述灰度路由值规则来从所获得的对应灰度服务的地址中选择一个地址以用于对所述访问请求进行灰度路由。替选地,所述灰度参数进一步包括灰度端口,所述灰度端口用于与所选择的地址组合以供对所述访问请求进行灰度路由,并且所述灰度路由进一步包括以经灰度路由的地址替换所述访问请求中的地址。替选地,由所述SDK模块响应于以下条件中的一个条件而确定直接由所述Web服务器对所述访问请求进行路由:所述访问请求中不包含所述Cookie;所述Cookie无效或不包括所述应用名或不包括所述灰度路由值;在所述灰度地址列表中查询到请求访问的地址;以及在所述灰度路由值白名单中未查询到匹配所述灰度路由值的条目。替选地,构建用于灰度发布的灰度环境;其中,构建所述灰度环境包括:为具有灰度发布需求的各个服务配置对应的灰度服务以及针对相应服务设置Cookie值,其中,所述Cookie值包括标识相应服务的应用名和用于获取与相应服务相对应的灰度路由值的业务字段,在相应服务被访问时将经由相应服务获得所述Cookie值,并使得对相应服务的后续访问请求中的Cookie根据所述Cookie值而包含与相应服务相对应的应用名和灰度路由值。替选地,构建用于灰度发布的灰度环境;其中,构建所述灰度环境包括:为提供具有灰度发布需求的各个服务的服务系统的服务来配置对应的灰度服务以及针对所述服务系统设置Cookie值,其中,所述Cookie值包括标识所述服务系统的应用名和用于获取与所述服务系统相对应的灰度路由值的业务字段,在所述服务系统的服务被访问时将经由与所述服务系统相对应的Web服务器的拦截器获取所述Cookie值,并使得对所述服务系统的服务的后续访问请求中的Cookie根据所述Cookie值而包含与所述服务系统相对应的应用名和灰度路由值。替选地,针对与具有灰度发布需求的服务中的每个服务相对应的应用名,在所述灰度配置容器中维护灰度参数,维护所述灰度参数包括:在灰度地址列表的与相应应用名对应的条目中记录与相应服务对应的一个或多个灰度服务的地址;针对相应服务,在灰度端口的相应条目中记录与对应的一个或多个灰度服务的地址相对应的灰度端口信息;在灰度路由值白名单的相应条目中,根据相应服务的灰度发布需求来记录相应的灰度路由值信息;以及在灰度路由值规则的相应条目中,根据相应服务的灰度发布需求来记录相应的灰度路由值规则信息。替选地,所述访问请求是经由负载均衡服务器来路由至所述Web服务器的。根据本专利技术实施例的另一方面,提供了一种用于基于SDK的灰度发布的装置。根据本专利技术实施例的用于基于SDK的灰度发布的装置,包括:访问模块,接收对服务的访问请求,其中,所述访问请求包括请求访问的服务的地址;处理模块,响应于所述访问请求中具有有效的Cookie并且所述Cookie中包括应用名和灰度路由值,从灰度配置容器中获取与所述应用名相对应的灰度参数,其中,所述应用名用于标识请求访问的服务,所述灰度路由值包含判断所述访问请求是否符合灰度发布所需的与发出所述访问请求的客户端设备及其用户相关的信息;路由模块,根据所述灰度参数对所述访问请求进行灰度路由。替选地,所述灰度参数包括:灰度地址列表、灰度路由值白名单、以及灰度路由值规则,其中所述灰度地址列表中记录了与所述应用名相对应的服务的一个或多个灰度服务的地址,所述灰度服务的地址不同于请求访问的服务的地址;<本文档来自技高网...

【技术保护点】
1.一种基于软件开发工具包SDK的灰度发布的方法,其特征在于,包括:/n由配置有SDK模块的Web服务器接收对服务的访问请求,其中,所述访问请求包括请求访问的服务的地址;/n响应于所述访问请求中具有有效的Cookie并且所述Cookie中包括应用名和灰度路由值,由所述SDK模块从灰度配置容器中获取与所述应用名相对应的灰度参数,其中,所述应用名用于标识请求访问的服务,所述灰度路由值包含判断所述访问请求是否符合灰度发布所需的与发出所述访问请求的客户端设备及其用户相关的信息;/n由所述SDK模块根据所述灰度参数对所述访问请求进行灰度路由。/n

【技术特征摘要】
1.一种基于软件开发工具包SDK的灰度发布的方法,其特征在于,包括:
由配置有SDK模块的Web服务器接收对服务的访问请求,其中,所述访问请求包括请求访问的服务的地址;
响应于所述访问请求中具有有效的Cookie并且所述Cookie中包括应用名和灰度路由值,由所述SDK模块从灰度配置容器中获取与所述应用名相对应的灰度参数,其中,所述应用名用于标识请求访问的服务,所述灰度路由值包含判断所述访问请求是否符合灰度发布所需的与发出所述访问请求的客户端设备及其用户相关的信息;
由所述SDK模块根据所述灰度参数对所述访问请求进行灰度路由。


2.根据权利要求1所述的方法,其特征在于,所述灰度参数包括:灰度地址列表、灰度路由值白名单、以及灰度路由值规则,其中所述灰度地址列表中记录了与所述应用名相对应的服务的一个或多个灰度服务的地址,所述灰度服务的地址不同于请求访问的服务的地址;
根据所述灰度参数对所述访问请求进行灰度路由包括:
由所述SDK模块在所述灰度地址列表中查询请求访问的地址,响应于未查询到请求访问的地址,由所述SDK模块针对所述灰度路由值在所述灰度路由值白名单中进行查询;以及
响应于从所述灰度路由值白名单中查询到匹配所述灰度路由值的条目,由所述SDK模块根据所述灰度路由值规则来从所获得的对应灰度服务的地址中选择一个地址以用于对所述访问请求进行灰度路由。


3.根据权利要求2所述的方法,其特征在于,所述灰度参数进一步包括灰度端口,所述灰度端口用于与所选择的地址组合以供对所述访问请求进行灰度路由,并且所述灰度路由进一步包括以经灰度路由的地址替换所述访问请求中的地址。


4.根据权利要求1或2所述的方法,其特征在于,进一步包括:由所述SDK模块响应于以下条件中的一个条件而确定直接由所述Web服务器对所述访问请求进行路由:
所述访问请求中不包含所述Cookie;
所述Cookie无效或不包括所述应用名或不包括所述灰度路由值;
在所述灰度地址列表中查询到请求访问的地址;以及
在所述灰度路由值白名单中未查询到匹配所述灰度路由值的条目。


5.根据权利要求1所述的方法,其特征在于,进一步包括:构建用于灰度发布的灰度环境;
其中,构建所述灰度环境包括:
为具有灰度发布需求的各个服务配置对应的灰度服务以及针对相应服务设置Cookie值,
其中,所述Cookie值包括标识相应服务的应用名和用于获取与相应服务相对应的灰度路由值的业务字段,在相应服务被访问时将经由相应服务获得所述Cookie值,并使得对相应服务的后续访问请求中的Cookie根据所述Cookie值而包含与相应服务相对应的应用名和灰度路由值。


6.根据权利要求1所述的方法,其特征在于,进一步包括:构建用于灰度发布的灰度环境;
其中,构建所述灰度环境包括:
为提供具有灰度发布需求的各个服务的服务系统的服务来配置对应的灰度服务以及针对所述服务系统设置Cookie值,
其中,所述Cookie值包括标识所述服务系统的应用名和用于获取与所述服务系统相对应的灰度路由值的业务字段,在所述服务系统的服务被访问时将经由与所述服务系统相对应的Web服务器的拦截器获取所述Cookie值,并使得对所述服务系统的服务的后续访问请求中的Cookie根据所述Cookie值而包含与所述服务系统相对应的应用名和灰度路由值。


7.根据权利要求1至3中的任一项所述的方法,其特征在于,进一步包括:针对与具有灰度发布需求的服务中的每个服务相对应的应用名,在所述灰度配置容器中维护灰度参数,维护所述灰度参数包括:
在灰度地址列表的与相应应用名对应的条目中记录与相应服务对应的一个或多个灰度服务的地址;
针对相应服务,在灰度端口的相应条目中记录与对应的一个或多个灰度服务的地址相对应的灰度端口信息;
在灰度路由值白名单的相应条目中,根据相应服务的灰度发布需求来记录相应的灰度路由值信息;以及
在灰度路由值规则的相应条目中,根据相应服务的灰度发布需求来记录相应的灰度路由值规则信息。


8.根据权利要求1所述的方法,其特征在于,所述访问请求是经由负载均衡服务器来路由至所述Web服务器的。


9.一种用于基于软件开发工具包SDK的灰度发布的装置,其特征在于,包括:
访问模块,接收对服务的访问请求,其中,所述访问请求包括请求访问的服务的地址;
处理模块,响应于所述访问请求中具有有效的Cookie并且所述Coo...

【专利技术属性】
技术研发人员:龙准
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1