CN108848092B - 基于调用链的微服务灰度发布的处理方法及装置 - Google Patents
基于调用链的微服务灰度发布的处理方法及装置 Download PDFInfo
- Publication number
- CN108848092B CN108848092B CN201810639678.2A CN201810639678A CN108848092B CN 108848092 B CN108848092 B CN 108848092B CN 201810639678 A CN201810639678 A CN 201810639678A CN 108848092 B CN108848092 B CN 108848092B
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- gray
- called
- http request
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000003672 processing method Methods 0.000 claims abstract description 20
- 230000005540 biological transmission Effects 0.000 claims abstract description 14
- 238000012546 transfer Methods 0.000 claims description 2
- 230000000977 initiatory effect Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 238000013461 design Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241001270131 Agaricus moelleri Species 0.000 description 1
- 241001167556 Catena Species 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供一种基于调用链的微服务灰度发布的处理方法及装置,该方法包括:获取客户端发起的HTTP请求,HTTP请求包括灰度发布HTTP请求头;根据HTTP请求,确定响应HTTP请求的目标微服务调用链;根据HTTP请求头在目标微服务调用链上的透传,以及HTTP请求头与各微服务对应的灰度标签的匹配结果,进行相应的微服务灰度发布的处理。通过HTTP请求头在目标微服务调用链的透传,使得一条微服务调用链中所有微服务在一次调用期间都可以获取相同的HTTP请求头,以实现复杂微服务调用链中多微服务的灰度发布,解决了现有技术只能实现微服务调用链中首个微服务灰度发布的问题。
Description
技术领域
本申请涉及微服务技术领域,尤其涉及一种基于调用链的微服务灰度发布的处理方法及装置。
背景技术
微服务是一个新兴的软件架构,即把一个大型的单个应用程序和服务拆分为数十个支持微服务,一个微服务的策略可以让工作变得更为简便,它可以扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
基于微服务的上述优点,微服务逐渐成为当前的热门话题,并且被越来越多的企业推广。在微服务架构中,灰度发布为快速迭代的微服务不停机平稳升级提供有效的保障。灰度发布是一种服务平滑过渡升级的发布方式。现有的灰度发布技术,灰度策略为按比例访问时,灰度范围不能根据用户特征划分,灰度策略受到服务URL路径参数限制,并且与服务设计密切相关。
从客户端前台页面发起一个业务请求,通常会伴随多个微服务的调用,这样就会生成一条微服务调用链,若要灰度发布这条微服务调用链上的首个微服务,调测它的最新版本,则只要转发器做到精确的通过检测到的HTTP请求头匹配新版本的首个微服务即可。然而,很多时候,需要调测的新版本微服务不是在调用链的最顶端,通过上述方式则不能实现新版本的微服务的调测。因此,如何有效实现基于调用链的微服务灰度发布成为亟需解决的技术问题。
发明内容
本申请提供一种基于调用链的微服务灰度发布的处理方法及装置,以解决现有技术只能实现微服务调用链中首个微服务灰度发布等缺陷。
本申请第一个方面提供一种基于调用链的微服务灰度发布的处理方法,包括:
获取客户端发起的超文本传输协议HTTP(HyperText Transfer Protocol)请求,所述HTTP请求包括灰度发布HTTP请求头;
根据所述HTTP请求,确定响应所述HTTP请求的目标微服务调用链;
根据所述HTTP请求头在所述目标微服务调用链上的透传,以及所述HTTP请求头与各微服务对应的灰度标签的匹配结果,进行相应的微服务灰度发布的处理。
本申请的另一个方面提供一种基于调用链的微服务灰度发布的处理装置,包括:
获取模块,用于获取客户端发起的HTTP请求,所述HTTP请求包括灰度发布HTTP请求头;
确定模块,用于根据所述HTTP请求,确定响应所述HTTP请求的目标微服务调用链;
处理模块,用于根据所述HTTP请求头在所述目标微服务调用链上的透传,以及所述HTTP请求头与各微服务对应的灰度标签的匹配结果,进行相应的微服务灰度发布的处理。
本申请提供的基于调用链的微服务灰度发布的处理方法及装置,通过HTTP请求头在目标微服务调用链的透传,使得一条微服务调用链中所有微服务在一次调用期间都可以获取相同的HTTP请求头,以实现复杂微服务调用链中多微服务的灰度发布,解决了现有技术只能实现微服务调用链中首个微服务灰度发布的问题。且采用HTTP Header作为灰度发布策略依据,而不是服务路径,消除服务路径策略受限导致灰度分流策略与服务接口设计密切相关的窘迫性,解决灰度维度太少、灰度分流策略不灵活等问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的基于调用链的微服务灰度发布的处理方法的流程示意图;
图2为本申请一实施例提供的调用链透传HTTP请求头的示意图;
图3为本申请一实施例提供的一条调用链上灰度发布多个服务的调用链示意图;
图4为本申请另一实施例提供的基于调用链的微服务灰度发布的处理方法的流程示意图;
图5为本申请一实施例提供的Java-agent示意图;
图6为本申请一实施例提供的改造后的反向代理服务器的内部示意图;
图7为本申请一实施例提供的一条调用链上灰度发布一个服务的调用链示意图;
图8为本申请一实施例提供的两条调用链上灰度发布一个服务的调用链示意图;
图9为本申请一实施例提供的基于调用链的微服务灰度发布的处理装置的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请所涉及的名词进行解释:
微服务:微服务是一个新兴的软件架构,即把一个大型的单个应用程序和服务拆分为数十个支持微服务,一个微服务的策略可以让工作变得更为简便,它可以扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
灰度发布:是一种服务平滑过渡升级的发布方式,在其上可以进行A/Btesting,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体***的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
调用链:指在客户端前台页面发起一个业务请求,通常会伴随多个微服务的调用,这样就会生成一条微服务调用链。比如,当用户发起一个业务请求时,首先到达首个A服务,然后分别对B服务和C服务进行调用。B服务处理完给A做出响应,但是C服务还需要和后端的D服务和E服务交互之后再返还给A服务,即C服务还需要调用D服务和E服务,之后再返还给A服务,最后由A服务来响应用户的请求。
实施例一
本实施例提供一种基于调用链的微服务灰度发布的处理方法,用于微服务调用链的微服务灰度发布的处理。本实施例的执行主体为基于调用链的微服务灰度发布的处理装置(以下简称装置)。
如图1所示,为本实施例提供的基于调用链的微服务灰度发布的处理方法的流程示意图,该方法包括:
步骤101,获取客户端发起的HTTP请求,HTTP请求包括灰度发布HTTP请求头。
具体的,用户可以在客户端前台页面发起HTTP请求,该装置则可以获取客户端发起的HTTP请求,该HTTP请求包括灰度发布HTTP请求头。
需要说明的是,为了实现HTTP请求头包含在客户端发起的HTTP请求中,需要对现有的客户端进行改造,需要修改一些客户端代码。请求头的Key(键)可自定义,客户端开发改造时需要设计灰度HTTP请求头的维度标记,即通过设计HTTP请求头的Value(值)使Value中包含以特定符号分隔的不同的Key-Value参数对(例如:GRAY-Header:a=?$b=?$c=?,可以从a、b、c三个维度标记用户发起请求的行为,其中连接符$可以任意字符,保证与灰度标签约定一致),这样就可以通过填充多个参数在多维度标记请求,使灰度专用HTTP请求头包含多维度信息,能够体现用户本次发起的请求在不同维度上的显著特征,例如操作员,营业厅,用户号码等维度特征,均可在请求头的value中设计成参数对。这些参数对的值可以由界面上输入的各个参数填充,例如前台界面提交的表单数据等,也可以通过客户端特征参数填充,例如客户端ip地址等。
步骤102,根据HTTP请求,确定响应HTTP请求的目标微服务调用链。
具体的,在获取到客户端发起的HTTP请求后,则可以根据该HTTP请求确定响应HTTP请求的目标微服务调用链,即确定响应用户请求所需要的首个微服务以及首个微服务需要调用的子微服务,各子微服务也可能还需要再次调用其他微服务等等,最终确定能够响应HTTP请求的完整的微服务调用链,即为目标微服务调用链。可以理解的,目标微服务调用链可以是一条也可以是多条,本实施例不做限定。
步骤103,根据HTTP请求头在目标微服务调用链上的透传,以及HTTP请求头与各微服务对应的灰度标签的匹配结果,进行相应的微服务灰度发布的处理。
具体的,在确定了相应HTTP请求的目标微服务调用链后,则可以将该HTTP请求发送到目标微服务调用链的首个微服务。即调用首个微服务来响应HTTP请求。首个微服务功能的实现可能需要调用一个或多个第二微服务。
在将HTTP请求发送到首个微服务后,则可以根据所述HTTP请求头在所述目标微服务调用链上的透传,以及所述HTTP请求头与各微服务对应的灰度标签的匹配结果,进行相应的微服务灰度发布的处理。
示例性的,如图2所示,为本实施例提供的调用链透传HTTP请求头(也可称HTTPHeader,简称Header)的示意图。在一条完整调用链:服务A->服务B->服务C上透传HeaderA,其中灰度发布服务B、C。客户端发起请求(即HTTP请求)携带HeaderA,通过转发负载均衡器到达服务A上,***拦截HeaderA,在服务A调用服务B时,***将HeaderA发出,转发负载均衡器将灰度标签匹配HeaderA,成功则调用到新服务B(即服务B的灰度版本),否则调用到服务B,同理,服务B调用服务C时,携带HeaderA发送给服务C,转发负载均衡器将灰度标签匹配HeaderA,匹配成功调用到新服务C,否则调用到服务C。本申请中,“服务”也即“微服务”。
本申请提供的基于调用链的微服务灰度发布的处理方法,可以适用于图3所示的一条调用链上灰度发布多个服务的调用链示意图。如图3所示,一条调用链上灰度发布多个微服务。为了便于说明,可以将原微服务称为正式微服务,将原微服务的灰度版本称为灰度微服务。需要说明的是,图3所示的调用链仅为示例性的说明,并非对本申请的限定。本申请提供的方法还可以适用于一条调用链上灰度发布一个微服务的情况,即本申请的方法可适用于一条调用链上灰度发布一个或多个微服务的情况,多个指两个或两个以上。本申请的方法还可以适用于两条调用链上灰度发布一个或多个微服务的情况,以此类推,本申请提供的方法可以适用于复杂调用链中多个微服务同时灰度的情景。
采用HTTP Header作为灰度发布策略依据,而不是服务路径,消除服务路径策略受限导致灰度分流策略与服务接口设计密切相关的窘迫性,解决灰度维度太少、灰度分流策略不灵活等问题。
本实施例提供的基于调用链的微服务灰度发布的处理方法,通过HTTP请求头在目标微服务调用链的透传,使得一条微服务调用链中所有微服务在一次调用期间都可以获取相同的HTTP请求头,以实现复杂微服务调用链中多微服务的灰度发布,解决了现有技术只能实现微服务调用链中首个微服务灰度发布的问题。且采用HTTP Header作为灰度发布策略依据,而不是服务路径,消除服务路径策略受限导致灰度分流策略与服务接口设计密切相关的窘迫性,解决灰度维度太少、灰度分流策略不灵活等问题。
实施例二
本实施例对实施例一提供的基于调用链的微服务灰度发布的处理方法做进一步补充说明。
如图4所示,为本实施例提供的基于调用链的微服务灰度发布的处理方法的流程示意图。
作为一种可实施的方式,在上述实施例一的基础上,可选地,步骤103具体包括:
步骤1031,确定当前的待调用微服务,待调用微服务为目标微服务调用链上当前待调用的微服务。
步骤1032,将HTTP请求头发送到待调用微服务。
步骤1033,获取待调用微服务对应的灰度标签。
步骤1034,将待调用微服务对应的灰度标签与HTTP请求头进行匹配。
步骤1035,根据匹配结果进行相应的微服务灰度发布的处理。转步骤1031,直至所述目标微服务调用链中所有微服务均被调用。
具体的,当某微服务需要调用当前待调用微服务时,则将HTTP请求头透传到当前待调用微服务,并将当前待调用微服务对应的灰度标签与HTTP请求头进行匹配,若匹配成功则调用当前待调用微服务对应的灰度微服务,即当前待调用微服务的灰度版本,若匹配不成功则调用当前待调用微服务的旧版本(即当前微服务的当前版本,也称正式版本或正式微服务)。待调用微服务为目标微服务调用链上当前待调用的微服务,每次调用都进行上述匹配过程,并根据匹配结果确定调用版本,直至目标微服务调用链中所有微服务均被调用,从而实现了目标微服务调用链中所有微服务的灰度发布的处理。
作为另一种可实施的方式,在上述实施例一的基础上,可选地,HTTP请求头包括一个或多个维度参数对,维度参数对包括维度参数及维度参数对应的值,客户端发起HTTP请求时,动态填充HTTP请求头的各维度参数的值。
可选地,当HTTP请求头中的维度参数对满足待调用微服务对应的灰度标签的标记特征时,确定匹配结果为成功;
当HTTP请求头中的维度参数对不满足待调用微服务对应的灰度标签的标记特征时,确定匹配结果为失败。
作为再一种可实施的方式,在上述实施例一的基础上,可选地,
获取所述待调用微服务对应的灰度标签,将所述待调用微服务对应的灰度标签与所述HTTP请求头进行匹配,包括:
调用微服务框架的API获取所述待调用微服务注册的最新状态;
根据所述待调用微服务注册的最新状态发现新发布的所述待调用微服务对应的灰度微服务;
获取所述灰度微服务的服务发布配置文件以及服务地址;
从所述服务发布配置文件中获取所述灰度微服务的灰度标签;
解析所述灰度微服务的灰度标签,生成一条或多条所述灰度微服务的转发规则;
采用所述转发规则与所述HTTP请求头进行匹配。
具体的,本申请技术方案的实现除上述客户端的改造外还需要Java-agent开发以及对现有的反向代理服务器进行改造,具体如下:
一、Java-agent开发
从客户端前台页面发起一个业务请求一般会伴随多个微服务的调用,这样就会生成一条服务调用链路,假如现在要灰度发布这条调用链上的首个微服务,调测它的最新版本,那么只要转发器做到精确的通过检测到的HTTP请求头匹配新版本的首个微服务就足够了。然而很多时候可能我们需要调测的新版本微服务不是在调用链的最顶端,那么就需要让客户端发起的请求中所包含的自定义的灰度发布专用HTTP请求头能够透传到这次业务请求所在同一条调用链路上的所有微服务,然后再由转发器将请求转发到与请求头相匹配的新版本微服务。
如图2所示,在一条完整调用链:服务A->服务B->服务C上透传HeaderA,其中灰度发布服务B、C。客户端发起请求(即HTTP请求)携带HeaderA,通过转发负载均衡器到达服务A上,***拦截HeaderA,在服务A调用服务B时,***将HeaderA发出,转发负载均衡器将灰度标签匹配HeaderA,成功则调用到新服务B(即服务B的灰度版本),否则调用到服务B,同理,服务B调用服务C时,携带HeaderA发送给服务C,转发负载均衡器将灰度标签匹配HeaderA,匹配成功调用到新服务C,否则调用到服务C。
如图5所示,为本实施例提供的Java-Agent示意图。是Java-Agent(也称javaagent)利用Bycode Instrumentation技术干预代码的基本原理。JAVA(Java或java)是面向对象编程语言。首先是微服务开发者写的源代码,是向百度官网发送一个HTTP请求。想要运行这段代码需要先编译为class(类)文件再由JVM(Java Virtual Machine,Java虚拟机,也称jvm)加载运行。改造开发后的Java-Agent能够做到的就是,对JVM上的程序进行检测,在加载class文件时对已经编译好的class文件的字节码做修改,再将修改后的class文件传入JVM,达到动态注入代码的效果,动态改变程序的输出。本发明就是利用java-agent做到能够捕捉微服务程序接收到的由Tomcat服务器发送到该微服务的请求,在监测到org.apache.catlina.connector.Request这个class文件时,对相应的javax.servlet.ServletRequest方法进行转换,使其能够提取灰度发布专用的HTTP请求头存到Java-Agent类变量缓存中,接下来再拦截程序内部发送HTTP请求的方法,例如在检测到org.apache.HTTP.protocol.HTTPRequestExecutor类文件的org.apache.HTTP.HTTPRequest方法,对其进行转换,添加所存的灰度发布专用HTTP请求头到即将发送给调用链中下一个微服务的HTTP请求中,这样就做到了HTTP请求头在整个调用链中的透传。本发明利用Java-Agent和java的instrumentation特性,实现了不需要开发者参与的灰度发布HTTP请求头的透传。简化了灰度发布流程,减少了开发人员的时间学习成本,达到了可以同时灰度发布同一个调用链中的多个微服务。
二、反向代理服务器改造
搭建反向代理服务器(Haproxy、Nginx、Apache等)具有反向代理、负载均衡、服务发现等功能。
在搭建反向代理服务器过程中,在原有的服务发现程序基础上,改造主要包括服务发现程序改造、转发控制器重启脚本改造和零停机脚本编写,即增加获取并解析灰度标签生成访问控制规则部分和增加应用Linux TC控制SYN包的阻塞与释放实现转发控制器重启零停机部分。这里改造点中提到的灰度标签概念,灰度标签为反向代理服务器转发请求策略生成的标识符,表现为多个key-value参数对,代表不同维度的灰度范围,在服务部署时填写在服务的启动配置文件里。如图6所示,为本实施例提供的改造后的反向代理服务器的内部示意图。
在微服务部署到微服务框架后产生事件流,触发反向代理服务器中服务发现程序,该程序可以调用微服务框架的API获取微服务注册的最新状态,快速发现新发布微服务,获取服务发布的配置文件以及服务地址。从服务发布的配置文件中取得灰度标签CBSS_MS_GRAY(可自定义),该标签包含灰度策略维度条件以及反向代理服务器在转发请求时用到的逻辑运算,或、且等(例如CBSS_MS_GRAY:a=?$b=?b=!,其中“空格”表示“或”运算,“$”表示“且”运算)。解析灰度标签CBSS_MS_GRAY时按逻辑运算生成一条或多条微服务的转发规则,灰度标签包含的逻辑运算具有优先级,多维度之间是且的关系,同维度的不同范围值为或关系,且的优先级比或高,即为多维度逻辑运算高于单维度逻辑运算。渲染配置文件模板将存储转发规则写入转发控制器的配置文件里。同时将服务地址写入配置文件作为转发规则生效后转发到服务真实后端服务器。灰度标签生成的转发规则用于校验HTTPHeader,当有用户请求到反向代理服务器时,转发控制器将获取含有用户特征信息的HTTPHeader,解析规则后,连接微服务所在后端服务器处理请求,并将处理结果返回给用户。例如当灰度标签CBSS_MS_GRAY:a=?&b=?b=!时,表示当请求头CBSS-MS-GRAY的值里含有a=?且b=?或者b=!(请求头CBSS-MS-GRAY:a=?&b=?&c=?或者CBSS-MS-GRAY:a=?&b=!&c=?),按转发规则校验(即匹配)请求头后转发到灰度服务所在服务器。
需要说明的是,灰度标签及请求头中的“?”在实际应用时可以为一定的实际参数值,这里为统一说明,具体可参见后续的示例。
在生成新的反向代理服务器的配置文件之后,重启反向代理服务器转发控制器组件使新配置文件生效。转发控制器组件重启过程避免丢失少量数据包,在重启前缓存SYN包,重载后释放所有SYN包。使用Linux中的QoS支持模块TC(Traffic Control)在网络流量入口(Ingress)部分建立plug排队规则(qdisc),结合Linux工具iptables过滤和标识SYN包,在重启前使用nl-qdisc-add将标识的SYN包缓存,重启后nl-qdisc-add将标识的SYN包释放。Linux队列原则是用来管理Linux内核处理网络数据包的方式。具体地说,可以控制数据包是如何入队和出队,这样提供了速率限制,优先级控制和指定输出数据包的能力。
此外,反向代理服务器具有对微服务定时健康检查能力,以及在微服务多实例情况下具有负载均衡能力。
在改造后的应用上,给出应用示例。本示例使用的微服务框架为Marathon、Mesos、DC/OS,搭建反向代理服务器组件使用Marathon-lb,调用链追踪使用Pinpoint。按以上改造过程,改造了客户端程序,使其调用微服务时,填充用于灰度HTTP Header字段值;改造了调用链追踪Pinpoint的java-agent程序实现了HTTP Header在调用链上透传;改造了转发器组件Marathon-lb实现支持HTTP Header灰度标签解析为转发规则。下面将以三种具有一定代表性的调用链作为灰度的情景举例:
1、调用链上一个服务灰度发布
(1)当一条调用链上有一个服务在灰度发布时,如图7所示,为本实施例提供的一条调用链上灰度发布一个服务的调用链示意图。一条调用链上有三个服务调用关系为A->B->C。客户端请求携带HTTP Header为CBSS-MS-GRAY:staffid=XXX$departid=XXX$cityid=XXX…,其中字段staffid、departid、cityid等的具体值在调用服务A时被客户端程序根据本次请求用户特征动态填充。灰度服务的访问控制规则在灰度服务部署时修改启动配置文件里的灰度标签里填充。
在上图所示的调用链中服务B含有灰度版本,这时,若灰度服务B配置的灰度标签为CBSS_MS_GRAY:staffid=Amy$departid=99时,若客户端请求携带HTTP Header中的值里含有staffid=Amy和departid=99特征时(例如请求头CBSS-MS-GRAY:staffid=Amy$departid=99$cityid=01…时),请求被灰度服务B处理,否则请求被正式服务B处理(例如请求头是CBSS-MS-GRAY:staffid=Jam$departid=66$cityid=01…时)。
2、调用链上多个服务灰度发布
如图3所示,一条调用链上有三个服务调用关系为A->B->C。服务B和服务C分别具有灰度版本服务。
情况一:灰度服务B与灰度服务C代码间互不影响,灰度服务B、C正常配置合适灰度标签即可。
若灰度服务B灰度标签配置为CBSS_MS_GRAY:staffid=Amy$departid=99,灰度服务C灰度标签配置为CBSS_MS_GRAY:staffid=Jam$departid=66时:
(1)若客户端请求携带HTTP Header中的值里含有staffid=Amy且departid=99特征时(例如请求头CBSS-MS-GRAY:staffid=Amy$departid=99$cityid=01…时),则调用链为正式服务A->灰度服务B->正式服务C。
(2)若客户端请求携带HTTP Header中的值里含有staffid=Jam且departid=66特征时(例如请求头CBSS-MS-GRAY:staffid=Jam$departid=66$cityid=01…时),则调用链为正式服务A->正式服务B->灰度服务C。
(3)若客户端请求携带HTTP Header中的值里不含有灰度服务B/C灰度标签标记特征时(例如请求头CBSS-MS-GRAY:staffid=Susan$departid=23$cityid=02…时),则调用链为正式服务A->正式服务B->正式服务C。
情况二:灰度服务B调用服务C时必须调用灰度服务C才能正确处理。此时,灰度服务B和灰度服务C配置的灰度标签保持一致即可。
若灰度服务B与灰度服务C灰度标签配置为CBSS_MS_GRAY:staffid=Amy$departid=99时:
(1)若客户端请求携带HTTP Header中的值里含有staffid=Amy且departid=99特征时(例如请求头CBSS-MS-GRAY:staffid=Amy$departid=99$cityid=01…时),则调用链为正式服务A->灰度服务B->灰度服务C。
(2)若客户端请求携带HTTP Header中的值里不含有灰度服务B/C灰度标签标记特征时(例如请求头CBSS-MS-GRAY:staffid=Susan$departid=23$cityid=02…时),则调用链为正式服务A->正式服务B->正式服务C。
3、多条调用链上某个服务灰度发布
如图8所示,为本实施例提供的两条调用链上灰度发布一个服务的调用链示意图。其中一条为A->B->C,另一条为D->B->E。这时,服务B同时存在于两条调用链上且有灰度版本上线。这时调用链的情况根据客户端传递的Header不同而不同。
情况一:调用A和D的客户端字段有所不同,灰度服务B的标签只能限制A(或D)服务调用。即灰度服务B只会出现在一条调用链上。若灰度服务B灰度标签配置为CBSS_MS_GRAY:staffid=Amy$departid=99时:
(1)第一条调用链的HTTP Header含有staffid=Amy且departid=99特征而第二条不含有此特征时,第一条调用链为正式服务A->灰度服务B->正式服务C,第二条为正式服务D->正式服务B->正式服务C。同理第二条含有灰度标签特征而第一条不含有时,第一条调用链为正式服务A->正式服务B->正式服务C,第二条为正式服务D->灰度服务B->正式服务C。
(2)第一条调用链和第二条调用链的HTTP Header都不含有staffid=Amy且departid=99特征时,第一条调用链为正式服务A->正式服务B->正式服务C,第二条为正式服务D->正式服务B->正式服务C。
情况二:调用A和D的客户端字段有所不同,灰度服务B的标签能同时限制A和D服务调用。即灰度服务B可能同时出现在两条调用链上。若灰度服务B灰度标签配置为CBSS_MS_GRAY:staffid=Amy$departid=99,那么:
(1)第一条调用链的HTTP Header含有staffid=Amy且departid=99特征而第二条也含有此特征时,第一条调用链为正式服务A->灰度服务B->正式服务C,第二条为正式服务D->灰度服务B->正式服务C。
(2)第一条调用链和第二条调用链的HTTP Header都不含有staffid=Amy且departid=99特征时,第一条调用链为正式服务A->正式服务B->正式服务C,第二条为正式服务D->正式服务B->正式服务C。
从上面三个具有代表性的例子来看,本申请提供的基于调用链的微服务灰度发布的处理方法适合复杂调用链里多服务同时灰度的情景。
本申请提供的基于调用链的微服务灰度发布的处理方法,支持灰度范围按用户特征划分,提出HTTP Header灰度,将灰度策略与服务URL路径参数解除相关性,在HTTPHeader中定义灰度维度,根据实际需求可扩展。为了使调用链上服务无差别的使用HTTPHeader灰度方法,以微服务调用链追踪技术,字节码编入技术(BytecodeInstrumentation)为基础,将客户端的HTTP Header在调用链上透传。将请求***与服务设计解耦,实现调用链透传HTTP Header的自动化与服务设计透明性;将灰度策略与服务设计脱离,设置在服务启动配置文件里,以服务发现技术为基础,将灰度策略解析为转发器可识别的规则,实现灰度策略的自动化解析与灰度发布范围的灵活限定。在微服务架构复杂调用链场景下,基于HTTP Header可在开发者零参与情况下自动透传到整个服务调用链的技术,本方法的灰度方式表现出脱离服务设计相关性,灰度维度可动态扩展,灰度范围灵活可控等优点。
本申请提供的基于调用链的微服务灰度发布的处理方法,不局限于各实施例中提到的微服务框架、搭建反向代理服务器所用组件以及调用链追踪组件,本申请适用于任何技术实现。在复杂调用链情景下,HTTP Header灰度表现出灰度维度扩展性良好,灰度策略灵活多变,灰度范围多维度可控等优秀特性,为微服务灰度发布提供可靠保障。
需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本申请不做限定。
本实施例提供的基于调用链的微服务灰度发布的处理方法,通过HTTP请求头在目标微服务调用链的透传,使得一条微服务调用链中所有微服务在一次调用期间都可以获取相同的HTTP请求头,以实现复杂微服务调用链中多微服务的灰度发布,解决了现有技术只能实现微服务调用链中首个微服务灰度发布的问题。且采用HTTP Header作为灰度发布策略依据,而不是服务路径,消除服务路径策略受限导致灰度分流策略与服务接口设计密切相关的窘迫性,解决灰度维度太少、灰度分流策略不灵活等问题。通过客户端发起请求时,动态填充请求头CBSS-MS-GRAY中包含字段的值,字段具有维度含义,字段值可标记请求在不同维度上的特征,可以根据实际需求动态扩展。转发控制器通过解析微服务启动配置文件中的灰度标签生成转发控制规则,并将其存入转发控制器的配置文件里,值可以标记微服务的灰度范围,实现了在灰度范围逐步扩大过程中服务零停机。
实施例三
本实施例提供一种基于调用链的微服务灰度发布的处理装置,用于执行上述实施例一的基于调用链的微服务灰度发布的处理方法。
如图9所示,为本实施例提供的基于调用链的微服务灰度发布的处理装置的结构示意图。该基于调用链的微服务灰度发布的处理装置30包括获取模块31、确定模块32和处理模块33。
其中,获取模块31用于获取客户端发起的HTTP请求,HTTP请求包括灰度发布HTTP请求头;确定模块32用于根据HTTP请求,确定响应HTTP请求的目标微服务调用链;处理模块33用于根据HTTP请求头在目标微服务调用链上的透传,以及HTTP请求头与各微服务对应的灰度标签的匹配结果,进行相应的微服务灰度发布的处理。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是,本实施例中各模块仅是逻辑功能的划分,每个模块可以包括多个子模块,各子模块可以承载于不同的实体中,比如转发负责均衡器、反向代理服务器等,本申请不做限定。各模块实际功能的实现基于上述方法实施例中所描述的具体过程,在此不再赘述。
根据本实施例提供的基于调用链的微服务灰度发布的处理装置,通过HTTP请求头在目标微服务调用链的透传,使得一条微服务调用链中所有微服务在一次调用期间都可以获取相同的HTTP请求头,以实现复杂微服务调用链中多微服务的灰度发布,解决了现有技术只能实现微服务调用链中首个微服务灰度发布的问题。且采用HTTP Header作为灰度发布策略依据,而不是服务路径,消除服务路径策略受限导致灰度分流策略与服务接口设计密切相关的窘迫性,解决灰度维度太少、灰度分流策略不灵活等问题。
实施例四
本实施例对上述实施例三提供的基于调用链的微服务灰度发布的处理装置做进一步补充说明。
作为一种可实施的方式,在上述实施例三的基础上,可选地,处理模块33具体用于:
确定当前的待调用微服务,待调用微服务为目标微服务调用链上当前待调用的微服务;
将HTTP请求头发送到待调用微服务,并获取待调用微服务对应的灰度标签,将待调用微服务对应的灰度标签与HTTP请求头进行匹配,并根据匹配结果进行相应的微服务灰度发布的处理;
返回执行确定当前的待调用微服务的步骤,直至目标微服务调用链中所有微服务均被调用。
可选地,处理模块33具体用于:
若匹配结果为成功,则调用待调用微服务对应的灰度微服务,待调用微服务对应的灰度微服务为待调用微服务的灰度版本;
若匹配结果为失败,则调用当前版本的待调用微服务。
可选地,HTTP请求头包括一个或多个维度参数对,维度参数对包括维度参数及维度参数对应的值,客户端发起HTTP请求时,动态填充HTTP请求头的各维度参数的值。
可选地,处理模块33具体用于:
当HTTP请求头中的维度参数对满足待调用微服务对应的灰度标签的标记特征时,确定匹配结果为成功;
当HTTP请求头中的维度参数对不满足待调用微服务对应的灰度标签的标记特征时,确定匹配结果为失败。
可选地,处理模块33具体用于:
调用微服务框架的API获取待调用微服务注册的最新状态;
根据待调用微服务注册的最新状态发现新发布的待调用微服务对应的灰度微服务;
获取灰度微服务的服务发布配置文件以及服务地址;
从服务发布配置文件中获取灰度微服务的灰度标签;
解析灰度微服务的灰度标签,生成一条或多条灰度微服务的转发规则;
采用转发规则与HTTP请求头进行匹配。
关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是,本实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本申请不做限定。
根据本实施例提供的基于调用链的微服务灰度发布的处理装置,通过HTTP请求头在目标微服务调用链的透传,使得一条微服务调用链中所有微服务在一次调用期间都可以获取相同的HTTP请求头,以实现复杂微服务调用链中多微服务的灰度发布,解决了现有技术只能实现微服务调用链中首个微服务灰度发布的问题。且采用HTTP Header作为灰度发布策略依据,而不是服务路径,消除服务路径策略受限导致灰度分流策略与服务接口设计密切相关的窘迫性,解决灰度维度太少、灰度分流策略不灵活等问题。通过客户端发起请求时,动态填充请求头CBSS-MS-GRAY中包含字段的值,字段具有维度含义,字段值可标记请求在不同维度上的特征,可以根据实际需求动态扩展。转发控制器通过解析微服务启动配置文件中的灰度标签生成转发控制规则,并将其存入转发控制器的配置文件里,值可以标记微服务的灰度范围,实现了在灰度范围逐步扩大过程中服务零停机。
本申请实施例中,“第一”、“第二”、“第三”仅用于区分描述,并不用于限定顺序。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种基于调用链的微服务灰度发布的处理方法,其特征在于,包括:
获取客户端发起的超文本传输协议HTTP请求,所述HTTP请求包括灰度发布HTTP请求头;
根据所述HTTP请求,确定响应所述HTTP请求的目标微服务调用链;
确定当前的待调用微服务,所述待调用微服务为所述目标微服务调用链上当前待调用的微服务;
将所述HTTP请求头发送到所述待调用微服务,并获取所述待调用微服务对应的灰度标签,将所述待调用微服务对应的灰度标签与所述HTTP请求头进行匹配,并根据匹配结果进行相应的微服务灰度发布的处理;
返回执行所述确定当前的待调用微服务的步骤,直至所述目标微服务调用链中所有微服务均被调用。
2.根据权利要求1所述的方法,其特征在于,所述根据匹配结果进行相应的微服务灰度发布的处理,包括:
若所述匹配结果为成功,则调用所述待调用微服务对应的灰度微服务,所述待调用微服务对应的灰度微服务为所述待调用微服务的灰度版本;
若所述匹配结果为失败,则调用当前版本的所述待调用微服务。
3.根据权利要求2所述的方法,其特征在于,所述HTTP请求头包括一个或多个维度参数对,所述维度参数对包括维度参数及维度参数对应的值,所述客户端发起HTTP请求时,动态填充所述HTTP请求头的各维度参数的值。
4.根据权利要求3所述的方法,其特征在于,当所述HTTP请求头中的维度参数对满足所述待调用微服务对应的灰度标签的标记特征时,确定所述匹配结果为成功;
当所述HTTP请求头中的维度参数对不满足所述待调用微服务对应的灰度标签的标记特征时,确定所述匹配结果为失败。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述获取所述待调用微服务对应的灰度标签,将所述待调用微服务对应的灰度标签与所述HTTP请求头进行匹配,包括:
调用微服务框架的API获取所述待调用微服务注册的最新状态;
根据所述待调用微服务注册的最新状态发现新发布的所述待调用微服务对应的灰度微服务;
获取所述灰度微服务的服务发布配置文件以及服务地址;
从所述服务发布配置文件中获取所述灰度微服务的灰度标签;
解析所述灰度微服务的灰度标签,生成一条或多条所述灰度微服务的转发规则;
采用所述转发规则与所述HTTP请求头进行匹配。
6.一种基于调用链的微服务灰度发布的处理装置,其特征在于,包括:
获取模块,用于获取客户端发起的HTTP请求,所述HTTP请求包括灰度发布HTTP请求头;
确定模块,用于根据所述HTTP请求,确定响应所述HTTP请求的目标微服务调用链;
处理模块,用于根据所述HTTP请求头在所述目标微服务调用链上的透传,以及所述HTTP请求头与各微服务对应的灰度标签的匹配结果,进行相应的微服务灰度发布的处理;
所述处理模块,具体用于:
确定当前的待调用微服务,所述待调用微服务为所述目标微服务调用链上当前待调用的微服务;
将所述HTTP请求头发送到所述待调用微服务,并获取所述待调用微服务对应的灰度标签,将所述待调用微服务对应的灰度标签与所述HTTP请求头进行匹配,并根据匹配结果进行相应的微服务灰度发布的处理;
返回执行所述确定当前的待调用微服务的步骤,直至所述目标微服务调用链中所有微服务均被调用。
7.根据权利要求6所述的装置,其特征在于,所述处理模块,具体用于:
若所述匹配结果为成功,则调用所述待调用微服务对应的灰度微服务,所述待调用微服务对应的灰度微服务为所述待调用微服务的灰度版本;
若所述匹配结果为失败,则调用当前版本的所述待调用微服务。
8.根据权利要求7所述的装置,其特征在于,所述HTTP请求头包括一个或多个维度参数对,所述维度参数对包括维度参数及维度参数对应的值,所述客户端发起HTTP请求时,动态填充所述HTTP请求头的各维度参数的值。
9.根据权利要求8所述的装置,其特征在于,所述处理模块,具体用于:
当所述HTTP请求头中的维度参数对满足所述待调用微服务对应的灰度标签的标记特征时,确定所述匹配结果为成功;
当所述HTTP请求头中的维度参数对不满足所述待调用微服务对应的灰度标签的标记特征时,确定所述匹配结果为失败。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述处理模块,具体用于:
调用微服务框架的API获取所述待调用微服务注册的最新状态;
根据所述待调用微服务注册的最新状态发现新发布的所述待调用微服务对应的灰度微服务;
获取所述灰度微服务的服务发布配置文件以及服务地址;
从所述服务发布配置文件中获取所述灰度微服务的灰度标签;
解析所述灰度微服务的灰度标签,生成一条或多条所述灰度微服务的转发规则;
采用所述转发规则与所述HTTP请求头进行匹配。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810639678.2A CN108848092B (zh) | 2018-06-20 | 2018-06-20 | 基于调用链的微服务灰度发布的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810639678.2A CN108848092B (zh) | 2018-06-20 | 2018-06-20 | 基于调用链的微服务灰度发布的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108848092A CN108848092A (zh) | 2018-11-20 |
CN108848092B true CN108848092B (zh) | 2021-02-26 |
Family
ID=64203074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810639678.2A Active CN108848092B (zh) | 2018-06-20 | 2018-06-20 | 基于调用链的微服务灰度发布的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108848092B (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109671140B (zh) * | 2018-12-26 | 2024-02-02 | 上海赞奇文化科技有限公司 | 一种采用微服务的云渲染服务处理方法 |
CN109739552A (zh) * | 2019-01-04 | 2019-05-10 | 深圳壹账通智能科技有限公司 | 微服务灰度发布方法、装置、计算机设备和存储介质 |
CN109871320A (zh) * | 2019-01-21 | 2019-06-11 | 上海德启信息科技有限公司 | 一种数据处理方法、装置、应用服务器及存储介质 |
CN110798502B (zh) * | 2019-09-18 | 2022-06-17 | 平安科技(深圳)有限公司 | 基于微服务框架的灰度发布方法、装置和计算机设备 |
CN110673941B (zh) * | 2019-09-27 | 2020-07-17 | 掌阅科技股份有限公司 | 多机房中微服务的迁移方法、电子设备及存储介质 |
CN110784409B (zh) * | 2019-10-31 | 2022-08-09 | 长沙水羊网络科技有限公司 | 一种基于Spring Cloud的微服务灰度发布方法 |
CN110958314A (zh) * | 2019-11-28 | 2020-04-03 | 盛业信息科技服务(深圳)有限公司 | 服务的灰度发布方法、装置和计算机设备 |
CN111478935B (zh) * | 2019-12-16 | 2021-03-30 | 马上消费金融股份有限公司 | 资源访问方法、网间连接装置、***和装置 |
CN113055723A (zh) * | 2019-12-27 | 2021-06-29 | 中兴通讯股份有限公司 | 一种版本调测及升级的方法、装置、设备以及存储介质 |
CN111586095B (zh) * | 2020-03-26 | 2023-09-19 | 中国平安财产保险股份有限公司 | 基于微服务灰度发布方法、装置、计算机设备及存储介质 |
CN111736872B (zh) * | 2020-06-22 | 2023-07-14 | 平安健康保险股份有限公司 | 灰度发布升级方法、装置、计算机***及可读存储介质 |
CN111953780B (zh) * | 2020-08-13 | 2022-10-21 | 中国工商银行股份有限公司 | 微服务灰度发布方法、装置、设备、***及存储介质 |
CN112087325B (zh) * | 2020-08-21 | 2021-07-20 | 烽火通信科技股份有限公司 | 灰度发布方法、装置、设备及可读存储介质 |
CN112052016B (zh) * | 2020-09-10 | 2023-09-12 | 中国工商银行股份有限公司 | 一种面向交易链路的灰度发布方法及信息*** |
CN112130892A (zh) * | 2020-09-23 | 2020-12-25 | 平安科技(深圳)有限公司 | 产品灰度发布方法、装置、设备及存储介质 |
CN112966056B (zh) * | 2021-04-19 | 2022-04-08 | 马上消费金融股份有限公司 | 一种信息处理方法、装置、设备、***及可读存储介质 |
CN113422732A (zh) * | 2021-06-22 | 2021-09-21 | 康键信息技术(深圳)有限公司 | 基于全站灰度的版本更新方法、装置、设备及存储介质 |
CN113301168A (zh) * | 2021-07-23 | 2021-08-24 | 浩鲸云计算科技股份有限公司 | 一种动态策略灰度发布引擎实现请求精准分流方法及*** |
CN113660118B (zh) * | 2021-08-12 | 2023-06-27 | 中国工商银行股份有限公司 | 一种自动化网络变更方法、装置、设备及存储介质 |
CN113794705B (zh) * | 2021-09-02 | 2023-08-04 | 百融至信(北京)科技有限公司 | 基于TTL的多header链路灰度发布方法及*** |
CN114500662B (zh) * | 2021-12-23 | 2024-04-30 | 中国电信股份有限公司 | 微服务灰度发布方法及装置、电子设备、可读存储介质 |
CN114363343B (zh) * | 2021-12-30 | 2024-04-30 | 上海浦东发展银行股份有限公司 | 基于微服务架构的请求数据处理方法、装置、计算机设备 |
CN114726785A (zh) * | 2022-04-07 | 2022-07-08 | 深圳市铱云云计算有限公司 | 一种基于请求标签表达式定向路由调试机制 |
CN114884915B (zh) * | 2022-04-19 | 2024-03-26 | 阿里巴巴(中国)有限公司 | 基于灰度发布的消息处理方法、装置以及设备 |
CN115208869A (zh) * | 2022-07-20 | 2022-10-18 | 康键信息技术(深圳)有限公司 | 一种灰度发布的处理方法、装置、设备及介质 |
CN115237818A (zh) * | 2022-09-26 | 2022-10-25 | 浩鲸云计算科技股份有限公司 | 一种基于全链路标识实现多环境复用的方法及*** |
CN116432243B (zh) * | 2023-06-15 | 2023-08-25 | 恺恩泰(南京)科技有限公司 | 一种线上商城的数据脱敏方法、装置、设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102497454B (zh) * | 2011-12-31 | 2014-06-11 | 北京新媒传信科技有限公司 | 一种在应用服务平台***中对应用进行灰度发布的方法 |
US10320879B2 (en) * | 2015-07-09 | 2019-06-11 | Verizon Patent And Licensing Inc. | Software service discovery and service evolution management |
CN105975270A (zh) * | 2016-05-04 | 2016-09-28 | 北京思特奇信息技术股份有限公司 | 一种基于http请求转发的灰度发布方法及*** |
CN106257894A (zh) * | 2016-08-29 | 2016-12-28 | 北京海誉动想科技股份有限公司 | 基于微服务的灰度发布方法 |
CN107872334B (zh) * | 2016-09-23 | 2022-05-20 | 中兴通讯股份有限公司 | 一种微服务架构***中灰度升级的方法及装置 |
CN107145347A (zh) * | 2017-04-27 | 2017-09-08 | 努比亚技术有限公司 | 一种应用灰度发布方法、设备及存储介质 |
CN106998369A (zh) * | 2017-05-26 | 2017-08-01 | 努比亚技术有限公司 | 灰度发布方法、网关***及计算机可读存储介质 |
CN107341008A (zh) * | 2017-06-22 | 2017-11-10 | 上海艾融软件股份有限公司 | 微服务灰度发布方法 |
-
2018
- 2018-06-20 CN CN201810639678.2A patent/CN108848092B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108848092A (zh) | 2018-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108848092B (zh) | 基于调用链的微服务灰度发布的处理方法及装置 | |
US10061684B2 (en) | Enhanced service validation | |
US11755919B2 (en) | Analytics for an automated application testing platform | |
US9785452B2 (en) | Framework for dependency management and automatic file load in a network environment | |
EP1576487B1 (en) | Web server hit multiplier and redirector | |
US8516451B2 (en) | System and method for creating virtual callback objects | |
US20150286737A1 (en) | System and method to share content utilizing universal link format | |
CN110365724B (zh) | 任务处理方法、装置及电子设备 | |
CN112767133A (zh) | 业务决策方法及装置、存储介质、计算机设备 | |
CN112767135A (zh) | 规则引擎的配置方法及装置、存储介质、计算机设备 | |
CN109344062A (zh) | 页面跨域跳转测试的方法及终端设备 | |
US8972968B1 (en) | Alternate service for applications | |
US11232019B1 (en) | Machine learning based test coverage in a production environment | |
CN107193834A (zh) | 用于浏览页面的计算设备、装置及方法 | |
Kemp | Programming frameworks for distributed smartphone computing | |
CN111159033B (zh) | 一种软件测试方法及装置 | |
CN115022036B (zh) | 一种攻击流量生成方法、***及网络安全测试*** | |
CN113420288B (zh) | 一种容器镜像敏感信息检测***及方法 | |
CN109510735A (zh) | 一种报文测试的方法及装置 | |
US9176797B1 (en) | Workflow processing and methods for auditing and playback of data | |
US11689630B2 (en) | Request processing method and apparatus, electronic device, and computer storage medium | |
US9038028B1 (en) | Dynamic creation and use of software testing stubs | |
CN115016995A (zh) | 接口测试方法、计算机设备及计算机存储介质 | |
GB2522433A (en) | Efficient decision making | |
CN112000313A (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 |