CN112860437B - 微服务处理方法和装置 - Google Patents
微服务处理方法和装置 Download PDFInfo
- Publication number
- CN112860437B CN112860437B CN202110199547.9A CN202110199547A CN112860437B CN 112860437 B CN112860437 B CN 112860437B CN 202110199547 A CN202110199547 A CN 202110199547A CN 112860437 B CN112860437 B CN 112860437B
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- service request
- request
- identifier
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 30
- 238000012545 processing Methods 0.000 claims abstract description 113
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 5
- 230000005540 biological transmission Effects 0.000 abstract description 5
- 230000001960 triggered effect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013480 data collection Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种微服务处理方法和装置,应用于第一微服务;所述方法包括:处理第一服务请求而生成中间处理结果;根据中间处理结果生成第二服务请求;以及,在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二服务请求;其中:所述第一服务请求为上游发送的请求;所述第二服务请求用于请求紧邻下游微服务;所述微服务选择标识用于告知下游微服务链中的第二微服务选择特定的紧邻下游微服务。基于本申请实施例提供的微服务处理方法,无需对现有的微服务架构进行修改,就实现了微服务选择标识的传递,以利用传递的微服务选择标识触发下游微服务链中的第二微服务选择特定的紧邻下游微服务。
Description
技术领域
本申请涉及计算机软件处理技术领域,具体设计一种微服务处理方法和装置。
背景技术
微服务架构是采用许多松散耦合并且可以独立部署的较小组件或服务组成的应用程序架构;因为微服务架构具有服务独立部署、可动态扩展、易优化等特性,很多互联网后台服务***采用微服务架构方式,以满足高并发、高性能和高可用性需求。
为了适应高并发、高性能需求,降低因为故障造成的影响,可以为每个微服务组件部署多个版本,并采用负载均衡方法将服务请求发送给在后微服务的某一版本。
在某些特定的情况下,特定的流量只能发布到某一微服务的特定版本中。例如,在某一微服务做了升级处理得到新版本,在新版本全面上线前,需要同时将此微服务历史版本和升级版本部署在微服务架构中,并将特定流量导流至升级版本中。
实际应用中,如果微服务架构中包括多个中间微服务,并且需要采用中间服务部署处理特定流量(例如包括处理测试流量的升级版本)时,为了能够实现特定流量的定向导流分配,需要在中间微服务之间部署用于分配流量的网关,例如,在具体应用中,微服务可采用星型网关的网络架构或者采用内部API网关的网络架构来用于特定流量的定向导流分配。但是,采用部署网关的微服务架构成本过高。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种微服务处理方法和装置。
一方面,本申请提供一种微服务处理方法,应用于第一微服务;所述方法包括:
处理第一服务请求而生成中间处理结果;
根据中间处理结果生成第二服务请求;以及,在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二服务请求;
其中:所述第一服务请求为上游发送的请求;所述第二服务请求用于请求紧邻的下游微服务;所述微服务选择标识用于告知下游微服务链中的第二微服务选择特定的紧邻下游微服务。
可选地,所述第一微服务中生成所述中间处理结果的线程与生成所述第二服务请求的线程为同一线程;
所述将微服务选择标识添加至所述第二服务请求,包括:
从线程上下文中提取所述微服务选择标识;
将所述微服选择标识添加至所述第二服务请求。
可选地,所述第一微服务包括有请求处理线程和熔断器线程;
处理第一服务请求而生成中间处理结果,包括:由所述请求处理线程处理所述第一服务请求,生成所述中间处理结果;
根据中间处理结果生成第二服务请求;以及,在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二微服请求,包括:
获取所述微服务选择标识并发送给所述熔断器线程;
由所述熔断器线程根据所述中间处理结果生成所述第二服务请求,以及将所述微服务选择标识添加至所述第二服务请求。
可选地,所述方法还包括:在所述微服务选择标识包括紧邻下游微服务标识的情况下,将所述第二服务请求发送给所述微服务选择标识对应的紧邻下游微服务。
可选地,所述方法还包括:
在所述微服务选择标识不包括紧邻的下游微服务标识的情况下,并且紧邻的下游微服务多于一个的情况下,
采用负载均衡算法选择紧邻下游微服务,并将所述第二服务请求下发给选定的所述紧邻下游微服务。
可选地,在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二微服请求,包括:
在所述第一服务请求包含特定用户标识的情况下,获取所述微服务选择标识,并将所述微服务选择标识添加至所述第二服务请求中。
可选地,在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二微服请求,包括:
在所述第一微服务请求包括特定标识的情况下,将所述特定标识作为所述微服务选择标识添加至所述第二服务请求。
另一方面,本申请提供一种微服务处理装置,应用于第一微服务,包括:
第一服务请求处理单元,用于处理第一服务请求而生成中间处理结果;
第二服务请求生成单元,用于根据中间处理结果生成第二服务请求;以及,在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二服务请求;
其中:所述第一服务请求为上游发送的请求;所述第二服务请求用于请求紧邻下游微服务;所述微服务选择标识用于告知下游微服务链中的第二微服务选择特定的紧邻下游微服务。
可选地,所述服务请求生成单元包括:
标识获取子单元,用于从线程上下文中提取所述微服务选择标识;
标识添加子单元,用于将所述微服选择标识添加至所述第二服务请求。
可选地,第二服务请求下发单元,用于在所述微服务选择标识包括紧邻下游微服务标识的情况下,将所述第二服务请求发送给所述微服务选择标识对应的紧邻下游微服务。
可选地,所述第二服务请求下发单元还用于:
在所述微服务选择标识不包括紧邻的下游微服务标识的情况下,并且紧邻的下游微服务多于一个的情况下,采用负载均衡算法选择紧邻下游微服务,并将所述第二服务请求下发给选定的所述紧邻下游微服务。
可选地,第二服务请求生成单元在所述第一服务请求包含特定用户标识的情况下,获取所述微服务选择标识,并将所述微服务选择标识添加至所述第二服务请求中。
可选地,第二服务请求生成单元,在所述第一微服务请求包括特定标识的情况下,将所述特定标识作为所述微服务选择标识添加至所述第二服务请求。
采用本申请实施例提供的微服务处理方法和装置,无需对现有的微服务架构进行修改,即不需要在微服务架构中各个微服务层之间部署用于流量分配的网关,仅需要在各个微服务的内部中增加判断步骤和标识添加步骤,就实现了微服务选择标识的传递,以利用传递的微服务选择标识触发下游微服务链中的第二微服务选择特定的紧邻下游微服务。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图;
图1是本申请实施例提供的一种微服务结构示意图;
图2是本申请实施例提供的微服务处理方法流程图;
图3是本申请实施例提供的需要灰度发布的微服务架构示意图;
图4是本申请实施例提供的微服务处理装置的结构示意图;
图5是本申请实施例提供的电子设备的结构示意图;
其中:11-第一服务请求处理单元,12-第二服务请求生成单元,13-第二服务请求下发单元,21-处理器,22-存储器,23-通信接口,24-总线***。
具体实施方式
为了能够更清楚地理解本申请的上述目的、特征和优点,下面将对本申请的方案进行进一步描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本申请,但本申请还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本申请的一部分实施例,而不是全部的实施例。
本申请实施例提供一种微服务处理方法,应用于微服务架构中的微服务,以实现微服务链中的特定微服务(也就是下文中的第二微服务)能够选择特定的紧邻下游微服务。
在对本申请实施例提供的微服务处理方法做介绍前,首先对本申请实施例中的微服务架构结构做分析,以理清微服务架构中微服务注册、特定流量的识别等准备性工作。
图1是本申请实施例提供的一种微服务结构示意图,如图1所示,本申请实施例提供的微服务架构包括注册中心、控制台、实现特定功能的微服务(图1中的微服务A、微服务B、微服务C……)。
各个微服务启动后,会将自己的地址(例如IP地址和端口号)发送给注册中心。注册中心在接收到微服务的地址后,完成微服务信息注册;在***上线后,根据微服务业务链的微服务调用顺序,在前的微服务可以从注册中心中获取在后的微服务地址,以实现相应微服务的调用。
本申请实施例的具体应用中,某一层级的微服务会包括至少两个启动的微服务版本,其中某一层级的特定微服务版本被用于处理特定的服务请求。如图1所示,本申请实施例中,微服务B和微服务C包括多个版本,其中,微服务C的版本包括C.1版本和C.2版本,C.2版本用于处理特定的服务请求。
实际应用中,根据具体情况,微服务C各个版本情况可以如下:(1)C.1版本和C.2版本实质上是相同的版本,但是具体应用中需要针对特定的流量需要进行数据归集,因此将满足特定需要的流量导入到C.2版本中,继而采用了C.1版本和C.2版本进行区分,需要注意的是,C.1版本和C.2版本是为了表述方便性而言,实际应用中,实现各个版本区分的是注册中心的注册信息;(2)C.1版本和C.2版本为不同的版本,例如C.1版本是当前版本,C.2版本是新升级并且需要上线测试(也就是灰度测试)的版本。
控制台存储有流量控制策略,其存储的流量控制策略可以下发给某一特定微服务,以使某一特定的微服务对服务请求进行划分,具体的,特定的微服务通过调用流量控制策略,根据流量中的标识和流量控制策略制定的分发规则进行流量的划分。
例如,在图1所示的实施例中,控制台存储的流量控制策略可以下发给微服务A,由微服务A根据接收到的服务请求、处理服务请求生成的处理结果,以及流量控制策略,在调用后续微服务的服务请求中添加微服务选择标识。
再如,控制台存储的流量控制策略可以下发给微服务B,由微服务B根据接收到的服务请求、处理服务请求生成的处理结果,以及流量控制策略,在调用后续微服务的服务请求中添加微服务选择标识。
图2是本申请实施例提供的微服务处理方法流程图。如图2所示,本申请实施例提供的微服务处理方法包括步骤S101-S103。
应当注意的是,下述的操作步骤是由一个具体的微服务执行的,例如可以是微服务A、微服务B的。在下文中,为方便性起见,执行处理方法的微服务被表述为第一微服务。
S101:处理第一服务请求而生成中间处理结果。
本申请实施例中,第一服务请求是发送给第一微服务、用于调用第一微服务的服务请求。
实际应用中,根据第一微服务在微服务架构的位置,第一服务请求可能是外部用户请求,也可能是微服务架构内部的微服务生成的服务请求。
例如,在第一微服务是图1中的微服务A的情况下,第一服务请求为外部用户端发送的外部用户请求。实际应用中,外部用户请求多是由客户端等设备发送的服务请求。
再如,在第一微服务是图1中的微服务B的情况下,第一服务请求为内部微服生成的服务请求。
本申请实施例中,第一微服务在接收到相应的第一服务请求后,根据自身的业务策略,处理第一服务请求而生成对应的中间处理结果。
例如,在第一服务请求为图1中的微服务A,并且微服务A是一网关微服务(例如为API-Gateway)的情况下,中间处理结果可以是选定微服务B的某一特定版本;再如,在第一服务请求为图1中的微服务B,并且微服务B是商品选择服务的情况下,中间处理结果可以是选定某些商品,累加商品价格得到的总价格。
S102:判定第一服务请求和/或中间处理结果是否满足设定要求;若是,执行S103。
在实际应用中,步骤S102执行的判定过程可能有三种情况。
(1)判断第一服务请求是否满足设定条件,例如判断第一服务请求是否包含特定的标识信息。
(2)判断中间处理结果是否满足设定条件,例如在中间处理结果为累加商品价格得到的总价格的情况下,判断累加的商品处理价格是否在一设定的价格范围内。
(3)同时判断第一服务请求和中间处理结果是否满足设定要求,即同时判断前述(1)和(2)是否满足。
S103:根据中间处理结果生成第二服务请求,并将微服务选择标识添加至第二服务请求。
本申请实施例中,第二服务请求是用于请求紧邻下游微服务的服务请求,其用于发送给紧邻下游的微服务,以实现紧邻下游微服务的调用。
例如,如果第一微服务为图1中的微服务A,则第二服务请求为发送给微服务B,以使得微服务B中的一个版本提供服务的请求;如果第一微服务为图1中的微服务B,则第二服务请求为请求微服务C,以使得微服务C中的一个版本提供服务的请求。
本申请实施例中,微服务选择标识是一表示特定的微服务的标识,其用于告知下游微服链中第二微服务选择特定的紧邻下游微服务。实际应用中,微服务选择标识可以是特定的微服务的地址(IP地址+端口号)。
以图1中的微服务架构为例,如果第一微服务为微服务A,其在判定第一服务请求满足设定条件后,确定这一服务请求对应的后续服务需要由微服务C的C.2版本执行,则将可以表征C.2版本的标识作为微服务选择标识。
根据前文描述的微服务选择标识的作用,确定收到包含C.2版本标识的微服务请求发送给微服务B后,微服务B会将调用微服务C的请求发送给C.2版本的微服务;此时,微服务B即为前文中的第二微服务。
本申请实施例中,在第一微服务中部署了基于第一服务请求和/或中间处理结果进行后续微服务选择判定的步骤,并基于判断步骤确定是否在第二服务请求中添加微服务选择标识。
在向第二服务请求添加微服务选择标识的情况下,微服务选择标识可以传递给下一层次的微服务;在连续调用的多个微服务均部署本申请实施例提供的微服务处理方法的情况下,可以在一个较长的(至少包括三层微服务)的微服务链中传递微服务选择标识,以告知特定的第二微服务调用特定的紧邻下游微服务提供服务。
采用本申请实施例提供的微服务处理方法,不需要在微服务架构中各个微服务层之间部署用于流量分配的网关,仅需要在各个微服务的内部中增加判断步骤和标识添加步骤,实现了微服务选择标识的传递,以利用传递的微服务选择标识触发下游微服务链中的第二微服务选择特定的紧邻下游微服务。基于本申请实施例提供的微服务处理方法,无需对现有的微服务架构进行修改。
本实施例具体应用中,根据第一微服务内部的服务架构的不同,步骤S103中将微服务选择标识添加至第二服务请求中的实际操作步骤也会不同,包括如下两种情况。
第一种情况:
如果第一微服务程序被设计为仅包括一个线程,即第一微服务生成中间处理结果的线程与生成第二服务请求的线程是同一线程,此时步骤S103包括步骤S1031和S1032。
S1031:从线程上下文中提取微服务选择标识。
S1032:将微服务选择标识添加至第二服务请求。
在处理第一服务请求而生成中间处理结果的线程与生成第二服务请求的线程是同一线程的情况下,微服务选择标识被存储在线程上下文变量中(当然,微服务选择标识需要通过其他数据源端获取,或者根据其他数据源端设定的判定条件进行确定,再存储至线程上下文变量中),因此需要从线程上下文中提取微服务选择标识,在将其添加至第二服务请求中。
第二种情况:
第二种情况下,第一微服务被设计为包括多个线程,第一微服务生成中间处理结果的线程与生成第二服务请求的线程并不是同一线程。
具体的,第一微服务包括请求处理线程和熔断器线程,其中,请求处理线程用于处理第一服务请求而生成中间处理结果,熔断器线程则用于生成第二服务请求。此时步骤S103包括S1033和S1034。
S1033:获取微服务选择标识并发送给熔断器线程。
S1034:由熔断器线程根据中间处理结果生成第二服务请求,并将微服务选择标识添加至第二服务请求中。
本申请实施例中,设置熔断器线程,并利用熔断器线程生成第二服务请求,同时可以利用熔断器线程的服务熔断机制限流、控流,避免出现雪崩效应等问题。
本申请实施例中,微服务处理方法除了包括前述的步骤S101-S103外,还可以包括步骤S104-S106。
S104:判断微服务选择标识是否包括紧邻下游微服务标识;若是,执行S105;若否,执行S106。
具体应用中,判断微服务选择标识是否包括紧邻下游微服务标识包括:获取第一微服务可能调动的紧邻的下游微服务的标识,并将此标识与微服务选择标识进行比较;如果二者相同,则确定微服务选择标识包括紧邻下游微服务标识。
在微服务选择标识包括紧邻下游微服务标识的情况下,则可以确定需要调用特定的紧邻下游微服务,因此执行步骤S105;而在微服务选择标识并不包括紧邻下游微服务版本标识的情况下,此时紧邻下游的微服务并不包含特定的微服务,因此执行步骤S106。
S105:将第二服务请求发送给微服务选择标识包含的紧邻下游微服务版本。
应当注意的是,在执行步骤S105时,大多数情况下紧邻的下游微服务包括至少两个微服务,其中一个是微服务选择标识包含的紧邻下游微服务,其他的是常规的应用微服务。
当然,在某些情况下,例如在某些微服务出现崩溃或者其所在的服务器网络中断的情况下,紧邻的下游微服务数量也可能仅为一个(其可能是微服务选择标识包含的微服务,也可能是微服务选择标识不包含的微服务),此时需要根据业务情况确定是否可以将第二服务请求发送给此仍在正常运行的微服务。
S106:采用负载均衡算法选择微服务选择标识未指定的紧邻下游微服务。
此处,仍以图1中所示的微服务架构做分析。假设微服务B为第一微服务,如果微服务B接收到一个第一服务请求,并且第一服务请求满足设定条件,微服务B需要将指示微服务C.2在内的微服请求标识添加至第二服务请求中。
在将第二服务请求发送给在后微服务C前,通过将所有微服务C的标识与微服务选择标识中的数据进行比对,确定紧邻的下游微服务包括C.2,因此需要将第二服务请求直接发送给微服务C.2处理。
而如果各个微服务C的标识与微服请求标识中的数据进行比对,确定微服务选择标识并不包含紧邻的下游微服务后,并且下游微服务C的数量多于一个的情况下,则可以通过负载均衡算法随机地选择微服务选择标识未指定的紧邻下游微服务,并将第二服务请求发送给此下游微服务。
本申请具体实施中,步骤S102判定第一服务请求和/或中间处理结果是否满足设定要求,具体可以为:判断第一服务请求是否包含特定用户标识。对应的,如果第一服务请求包含特定用户标识,则执行步骤S103获取微服务选择标识并添加到第二服务请求中。
第一微服务可以通过查找控制台中的流量控制策略确定特定的用户标识,以及对应的微服务选择标识。本申请实施例具体应用中,多在***中第一层微服务中采用前述的判断方法,以将微服务选择标识添加至调用后续微服务的服务请求中。
在本申请具体实施中,步骤S102判定第一服务请求和/或中间处理结果是否满足设定要求,还可以为:判断第一微服务请求是否包含特定标识。对应的,如果第一服务请求包含特定服务标识,则步骤S103将特定标识作为微服务选择标识添加至第二服务请求中。本申请实施例具体应用中,多在***中的除第一层微服外的在后微服务中选择前述的判断方法和执行步骤,以实现后续传递微服务选择标识。
在本申请实施例的一个具体应用中,前述的微服务处理方法适用于需要对某一中间微服务进行灰度发布的场景中,以下基于此灰度发布场景对前述的微服务处理方法再做说明。
图3是本申请实施例提供的需要灰度发布的微服务架构示意图。如图3所示,需要灰度发布的微服务架构包括API网关和后续微服务(包括微服务A、微服务B1.0、微服务B2.0)。
API网关是一种微服务,其主要任务是对外部用户请求的过滤,生成发送给中间微服务的第二服务请求,以及根据外部用户请求中的标识确定是否需要在第二服务请求添加微服务选择标识。具体应用中,API网关中配置的过滤规则,以及微服务选择标识可以查询灰度控制台获取得到。
基于图3中微服务架构的灰度策略为:采用测试用的外部服务请求对微服务B2.0进行测试。因此可以将外部服务请求对应的流量特征和微服务B2.0的信息写入到灰度控制台,或者直接写入到API网关中,以使得API网关可以处理流量,并适应性地在生成的调用后续微服务的服务请求中写入表征微服务B2.0标识作为为服务选择标识。
本申请实施例中,外部服务请求可以是由选定的测试用服务端发送的服务请求,在测试用服务端发送外部服务请求时,在其外部服务请求的标头信息中增加相应的流量标识特征。
在API网关接收到外部服务(也就是第一服务请求)请求后,API网关作为第一微服务对外部服务请求进行处理,生成中间处理结果,并基于中间处理结果生成第二服务请求。此时,如果API网关判定外部服务请求中包含的流量标识特征和灰度策略中的流量特征匹配,则API网关将B2.0标识信息作为微服务选择标识添加至调用微服务A的服务请求中。随后API网关判断微服务A的版本标识并不在微服务选择标识中,因此直接采用负载均衡算法选定一个微服务A的版本,并将服务请求发送给此微服务A的版本。
微服务A在接收到API网关发送的调用服务请求(在此时为第一服务请求)后,微服务A对调用服务请求进行处理,生成中间处理结果,并基于中间处理结果生成调用微服务B的服务请求。同时,微服务A对服务请求进行分析,确定其中包含特定微服务选择标识字段,因此将微服务选择标识字段添加至调用微服务B的服务请求中。随后,API网关判断B2.0的标识出现在微服务选择标识字段中,因此微服务A直接将调用微服务B的服务请求发送给微服务B2.0。
除了提供前述的微服务处理方法外,本申请实施例还提供一种与前述微服务处理方法具有相同发明构思的微服务处理装置。
图4是本申请实施例提供的微服务处理装置的结构示意图。如图4所示,本申请实施例提供的微服务处理装置包括第一服务请求处理单元11和第二服务请求生成单元12。
第一服务请求处理单元11用于处理第一服务请求而生成中间处理结果。
本申请实施例中,第一服务请求是发送给第一微服务、用于调用第一微服务的服务请求。
实际应用中,根据第一微服务在微服务架构的位置,第一服务请求可能是外部用户请求,也可能是微服务架构内部的微服务生成的服务请求。
例如,在第一微服务是图1中的微服务A的情况下,第一服务请求为外部用户端发送的外部用户请求。实际应用中,外部用户请求多是由客户端等设备发送的服务请求。再如,在第一微服务是图1中的微服务B的情况下,第一服务请求为内部微服生成的服务请求。
本申请实施例中,第一服务请求处理单元11在接收到相应的第一服务请求后,根据第一微服务的业务策略,处理第一服务请求而生成对应的中间处理结果。
例如,在第一服务请求为图1中的微服务A,并且微服务A是一网关微服务(例如为API-Gateway)的情况下,中间处理结果可以是选定微服务B的某一特定版本;再如,在第一服务请求为图1中的微服务B,并且微服务B是商品选择服务的情况下,中间处理结果可以是选定某些商品,累加商品价格得到的总价格。
第二服务请求生成单元12用于根据中间处理结果生成第二服务请求;以及,在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二服务请求。
本申请实施例中,第二服务请求是用于请求紧邻下游微服务的服务请求,其用于发送给紧邻下游的微服务,以实现紧邻下游微服务的调用。
例如,如果第一微服务为图1中的微服务A,则第二服务请求为发送给微服务B,以使得微服务B提供服务的请求;如果第一微服务为图1中的微服务B,则第二服务请求为请求微服务C、以使得微服C中的一个版本提供服务的请求。
实际应用中,第二服务请求单元判定第一服务请求和/或中间处理是否满足设定条件有三种情况。
(1)判断第一服务请求是否满足设定条件,例如判断第一服务请求是否包含特定的标识信息。
(2)判断中间处理结果是否满足设定条件,例如在中间处理结果为累加商品价格得到的总价格的情况下,判断累加的商品处理价格是否在一设定的价格范围内。
(3)同时判断第一服务请求和中间处理结果是否满足设定要求,即同时判断前述(1)和(2)是否满足。
本申请实施例中,微服务选择标识是一表示特定的微服务的标识,其用于告知下游微服链中第二微服务选择特定的紧邻下游微服务。实际应用中,微服务选择标识可以是特定的微服务的地址(IP地址+端口号)。
以图1中的微服务架构为例,如果第一微服务为微服务A,其在判定第一服务请求满足设定条件后,确定这一服务请求对应的后续服务需要由微服务C的C.2版本执行,则将可以为表征C.2版本的标识作为微服务选择标识。
确定收到包含C.2版本标识的微服务请求发送给微服务B后,微服务B会将调用微服务C的请求发送给C.2版本的微服务;此时,微服务B即为前文中的第二微服务。
本申请实施例中,在第一微服务中部署了基于第一服务请求和/或中间处理结果进行后续微服务选择判定的步骤,并基于判断步骤确定是否在第二服务请求中添加微服务选择标识。
在向第二服务请求添加微服务选择标识的情况下,微服务选择标识可以传递给下一层次的微服务;在连续调用的多个微服务均部署本申请实施例提供的微服务处理方法的情况下,可以在一个较长的(至少包括三层微服务)的微服务链中传递微服务选择标识,以告知特定的第二微服务调用特定的紧邻下游微服务提供服务。
采用本申请实施例提供的微服务处理方法,不需要在微服务架构中各个微服务层之间部署用于流量分配的网关,仅需要在各个微服务的内部中增加判断步骤和标识添加步骤,实现了微服务选择标识的传递,利用传递的微服务选择标识实现触发下游微服务链中的第二微服务选择特定的紧邻下游微服务。基于本申请实施例提供的微服务处理方法,无需对现有的微服务架构进行修改。
本申请的一个实施例中,第二服务请求生成单元12包括标识获取子单元和标识添加子单元。
标识获取子单元用于从线程上下文或者从第一服务请求中提取微服务选择标识。标识添加子单元用于将微服选择标识添加至第二服务请求。
在本申请的一个实施例中,微服务处理装置除了包括第一服务请求处理单元11和第二服务请求生成单元12外,还包括第二服务请求下发单元13。
第二服务请求下发单元13用于在微服务选择标识包括紧邻下游微服务标识的情况下,将第二服务请求发送给微服务选择标识对应的紧邻下游微服务。
具体应用中,第二服务请求下发单元13获取第一微服务可能调动的紧邻的下游微服务的标识,并将此标识与微服务选择标识进行比较;如果二者相同,则确定微服务选择标识包括紧邻下游微服务标识,此时将第二服务请求发送给微服务选择标识包含的紧邻下游微服务。
应当注意的是,在此情况下,大多数情况下紧邻的下游微服务包括至少两个微服务版本,其中一个是微服务选择标识包含的紧邻下游微服务,其他的是常规的微服务。
当然,在某些情况下,例如在某些微服务出现崩溃或者其所在的服务器网络中断的情况下,紧邻的下游微服务数量也可能仅为一个(其可能是微服务选择标识包含的微服务,也可能是微服务选择标识不包含的微服务),此时需要根据业务情况确定是否可以将第二服务请求发送给此仍在正常运行的微服务。
第二服务请求下发单元13还用于在微服务选择标识不包括紧邻的下游微服务标识的情况下,并且紧邻的下游微服务多于一个的情况下,采用负载均衡算法选择紧邻下游微服务,并将第二服务请求下发给选定的紧邻下游微服务。
此处,仍以图1中所示的微服务架构做分析。假设微服务B为第一微服务,如果微服务B版本接收到一个第一服务请求,并且第一服务请求满足设定条件时,则需要将包含C.2在内的微服请求标识添加至第二服务请求中。
在将第二服务请求发送给在后微服务C版本前,通过将所有微服务C版本的标识与微服务选择标识中的数据进行比对,确定紧邻的下游微服务包括C.2版本,因此需要将第二服务请求直接发送给C.2版本的微服务处理。
而如果所有微服务C的标识与微服请求标识中的数据进行比对,确定微服务选择标识并不包含紧邻的下游微服务后,则可以通过负载均衡算法随机地选择微服务选择标识未指定的紧邻下游微服务,并将第二服务请求发送给此下游微服务。
如此,可以基于第二服务请求中信息确定如何传输第二服务请求,保证将包含微服务选择标识的服务请求发送给指定的微服务,而将不包含微服务选择标识的服务请求发送给未指定的微服务。
本申请实施例具体应用中,第二服务请求生成单元12将微服务选择标识添加至第二服务请求的方法包括如下两种:(1)在第一服务请求包含特定用户标识的情况下,获取微服务标识并将微服务标识添加至第二服务请求中;本申请实施例具体应用中,多在微服务架构中第一层微服务中采用前述的判断方法,以将微服务选择标识添加至调用后续微服务的服务请求中。
(2)在第一微服务请求包括特定标识的情况下,将特定标识作为微服务选择标识添加至第二服务请求。多在微服务架构中的除第一层微服外的在后微服务中选择前述的操作,以实现后续传递微服务选择标识。
除了提供前述的微服务的处理方法和装置外,本申请实施例还提供一种电子设备。
图5是本申请实施例提供的电子设备的结构示意图。如图5所示,电子设备包括至少一个处理器21、至少一个存储器22和至少一个通信接口23。
本实施例中的存储器22可以是易失性存储器或非易失性存储器,或是前述的二者的结合。在一些具体实施方式中,存储器22存储了如下的元素:可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作***和应用程序。其中,操作***,包含各种***程序,例如框架层、核心库层、驱动层等,用于实现各种基础任务以及处理基于硬件的任务。应用程序,包含各种应用任务的应用程序。实现本申请实施例提供的微服务的处理方法的程序可以包含在应用程序中。
在本申请实施例中,处理器21通过调用存储器22存储的程序或指令(具体的,可以是应用程序中存储的程序或指令),以执行微服务处理方法的各个步骤,具体执行:处理第一服务请求而生成中间处理结果;判定第一服务请求和/或中间处理结果是否满足设定要求,若满足要求,根据中间处理结果生成第二服务请求,并将微服务选择标识添加至第二服务请求。
在一个应用中,处理器还执行:判断微服务选择标识是否包括紧邻下游微服务标识;在包括紧邻下游微服务标识的情况下,将第二服务请求发送给微服务选择标识包含的紧邻下游微服务版本;在不包括紧邻下游微服务的情况下,采用负载均衡算法选择微服务选择标识未指定的紧邻下游微服务。
本申请实施例中,处理器21可以是通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(FieldProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请实施例提供的微服务处理方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器22,处理器21读取存储器22中的信息,结合其硬件完成方法的步骤。
通信接口23用于实现智能驾驶控制***与外部设备之间的信息传输,例如以获得各种车辆传感器数据,以及生成相应的控制指令并下发给车辆的执行机构。
电子设备中的存储器、处理器组件通过总线***24耦合在一起,总线***24用于实现这些组件之间的连接通信。本申请实施例中,总线***可以为CAN总线,也可以是其他类型的总线。总线***234除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但为了清楚说明起见,在图5中将各种总线都标为总线***24。
本申请实施例还提出一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储程序或指令,程序或指令使计算机执行如前的微服务的处理方法实施例的步骤,为避免重复描述,在此不再赘述。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种微服务处理方法,其特征在于,应用于第一微服务;所述方法包括:
处理第一服务请求而生成中间处理结果;
根据中间处理结果生成第二服务请求;以及,在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二服务请求;包括:在生成所述中间处理结果的线程与生成所述第二服务请求的线程为同一线程的情况下,从线程上下文中提取微服务选择标识,将所述微服选择标识添加至所述第二服务请求;或者,在生成所述中间处理结果的线程为请求处理线程并且生成所述第二服务请求的线程为熔断器线程的情况下,由所述熔断器线程根据所述中间处理结果生成所述第二服务请求,以及将所述微服务选择标识添加至所述第二服务请求;
其中:所述第一服务请求为上游发送的请求;所述第二服务请求用于请求紧邻的下游微服务;所述微服务选择标识用于告知下游微服务链中的第二微服务选择特定的紧邻下游微服务,不通过负载均衡算法随机地选择微服务选择标识未指定的其他紧邻下游微服务,所述微服务选择标识指定的紧邻下游微服务和所述其他紧邻下游微服务的服务类型相同但是版本不同。
2.根据权利要求1所述微服务处理方法,其特征在于,还包括:
在所述微服务选择标识包括紧邻下游微服务标识的情况下,将所述第二服务请求发送给所述微服务选择标识对应的紧邻下游微服务。
3.根据权利要求2所述微服务处理方法,其特征在于,还包括:
在所述微服务选择标识不包括紧邻下游微服务标识的情况下,并且紧邻的下游微服务多于一个的情况下,
采用负载均衡算法选择紧邻下游微服务,并将所述第二服务请求下发给选定的所述紧邻下游微服务。
4.根据权利要求1所述微服务处理方法,其特征在于,
在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二服务请求,包括:
在所述第一服务请求包含特定用户标识的情况下,获取所述微服务选择标识,并将所述微服务选择标识添加至所述第二服务请求中。
5.根据权利要求1所述微服务处理方法,其特征在于,
在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二微服请求,包括:
在所述第一微服务请求包括特定标识的情况下,将所述特定标识作为所述微服务选择标识添加至所述第二服务请求。
6.一种微服务处理装置,其特征在于,应用于第一微服务,包括:
第一服务请求处理单元,用于处理第一服务请求而生成中间处理结果;
第二服务请求生成单元,用于根据中间处理结果生成第二服务请求;以及,在判定所述第一服务请求和/或所述中间处理结果满足设定要求的情况下,将微服务选择标识添加至所述第二服务请求,包括:包括:在生成所述中间处理结果的线程与生成所述第二服务请求的线程为同一线程的情况下,从线程上下文中提取微服务选择标识,将所述微服选择标识添加至所述第二服务请求;或者,在生成所述中间处理结果的线程为请求处理线程并且生成所述第二服务请求的线程为熔断器线程的情况下,由所述熔断器线程根据所述中间处理结果生成所述第二服务请求,以及将所述微服务选择标识添加至所述第二服务请求;
其中:所述第一服务请求为上游发送的请求;所述第二服务请求用于请求紧邻下游微服务;所述微服务选择标识用于告知下游微服务链中的第二微服务选择特定的紧邻下游微服务,不通过负载均衡算法随机地选择微服务选择标识未指定的其他紧邻下游微服务,所述微服务选择标识指定的紧邻下游微服务和所述其他紧邻下游微服务的服务类型相同但是版本不同。
7.根据权利要求6所述微服务处理装置,其特征在于,还包括:
第二服务请求下发单元,用于在所述微服务选择标识包括紧邻下游微服务标识的情况下,将所述第二服务请求发送给所述微服务选择标识对应的紧邻下游微服务。
8.根据权利要求7所述微服务处理装置,其特征在于,所述第二服务请求下发单元还用于:
在所述微服务选择标识不包括紧邻的下游微服务标识的情况下,并且紧邻的下游微服务多于一个的情况下,采用负载均衡算法选择紧邻下游微服务,并将所述第二服务请求下发给选定的所述紧邻下游微服务。
9.根据权利要求6所述微服务处理装置,其特征在于,
第二服务请求生成单元在所述第一服务请求包含特定用户标识的情况下,获取所述微服务选择标识,并将所述微服务选择标识添加至所述第二服务请求中。
10.根据权利要求6所述微服务处理装置,其特征在于,
第二服务请求生成单元,在所述第一微服务请求包括特定标识的情况下,将所述特定标识作为所述微服务选择标识添加至所述第二服务请求。
11.一种电子设备,其特征在于,包括处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1至5任一项所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110199547.9A CN112860437B (zh) | 2021-02-22 | 2021-02-22 | 微服务处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110199547.9A CN112860437B (zh) | 2021-02-22 | 2021-02-22 | 微服务处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112860437A CN112860437A (zh) | 2021-05-28 |
CN112860437B true CN112860437B (zh) | 2023-10-03 |
Family
ID=75989870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110199547.9A Active CN112860437B (zh) | 2021-02-22 | 2021-02-22 | 微服务处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112860437B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113918193A (zh) * | 2021-10-29 | 2022-01-11 | 平安普惠企业管理有限公司 | 适用于微服务的灰度调用方法、装置、设备及存储介质 |
CN115589307B (zh) * | 2022-09-07 | 2024-07-16 | 支付宝(杭州)信息技术有限公司 | 分布式***的风险监测方法和装置 |
CN115834497A (zh) * | 2022-11-28 | 2023-03-21 | 天翼数字生活科技有限公司 | 一种微服务版本发布的流量验证方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109922158A (zh) * | 2019-03-22 | 2019-06-21 | 泰康保险集团股份有限公司 | 基于微服务的数据处理方法、装置、介质及电子设备 |
CN111970198A (zh) * | 2020-08-13 | 2020-11-20 | 北京金山云网络技术有限公司 | 一种服务路由方法、装置、电子设备及介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10412154B2 (en) * | 2017-04-17 | 2019-09-10 | Red Hat, Inc. | Configuration recommendation for a microservice architecture |
US11057487B2 (en) * | 2019-05-17 | 2021-07-06 | Citrix Systems, Inc. | Systems and methods for recording metadata about microservices for requests to the microservices |
-
2021
- 2021-02-22 CN CN202110199547.9A patent/CN112860437B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109922158A (zh) * | 2019-03-22 | 2019-06-21 | 泰康保险集团股份有限公司 | 基于微服务的数据处理方法、装置、介质及电子设备 |
CN111970198A (zh) * | 2020-08-13 | 2020-11-20 | 北京金山云网络技术有限公司 | 一种服务路由方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112860437A (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112860437B (zh) | 微服务处理方法和装置 | |
CN107948314B (zh) | 基于规则文件的业务处理方法、装置及服务器 | |
CN112087325B (zh) | 灰度发布方法、装置、设备及可读存储介质 | |
US8627293B2 (en) | Detecting applications in a virtualization environment | |
CN110474903B (zh) | 可信数据获取方法、装置及区块链节点 | |
CN109657434B (zh) | 应用访问方法及装置 | |
CN111752770A (zh) | 服务请求的处理方法、***、计算机设备和存储介质 | |
CN111858083B (zh) | 一种远程服务的调用方法、装置、电子设备及存储介质 | |
CN111527389A (zh) | 一种车辆诊断方法及一种车辆诊断设备和存储介质 | |
CN108632085B (zh) | 灰度用户管理方法、装置、平台及存储介质 | |
US20160261620A1 (en) | System, method, and computer program product for dynamically configuring a virtual environment for identifying unwanted data | |
CN109150720B (zh) | 业务链报文转发方法、装置、设备及计算机可读存储介质 | |
CN111061637A (zh) | 接口测试方法、接口测试装置及存储介质 | |
CN110166272B (zh) | 提供终端设备指标仲裁服务的方法、装置及*** | |
CN110930163A (zh) | 一种房源委托业务的实现方法、***及存储介质 | |
CN113596105B (zh) | 内容的获取方法、边缘节点及计算机可读存储介质 | |
CN112003885B (zh) | 内容传输设备及内容传输方法 | |
CN110069731B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN110768957B (zh) | 网络安全协同处理方法、***以及存储介质 | |
CN110162415B (zh) | 用于处理数据请求的方法、服务器、装置及存储介质 | |
CN110769020B (zh) | 一种资源请求处理方法、装置、设备及*** | |
CN101437028A (zh) | 一种多地址生成方法、***和装置 | |
CN111367634A (zh) | 信息处理方法、信息处理装置及终端设备 | |
CN112487323A (zh) | 网页实验方法及服务器 | |
CN115277694B (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 |