CN111740926B - 服务的最大承载流量确定方法、部署方法、装置和服务器 - Google Patents
服务的最大承载流量确定方法、部署方法、装置和服务器 Download PDFInfo
- Publication number
- CN111740926B CN111740926B CN202010594161.3A CN202010594161A CN111740926B CN 111740926 B CN111740926 B CN 111740926B CN 202010594161 A CN202010594161 A CN 202010594161A CN 111740926 B CN111740926 B CN 111740926B
- Authority
- CN
- China
- Prior art keywords
- service
- flow
- maximum
- target path
- determining
- 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
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/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/80—Actions related to the user profile or the type of traffic
- H04L47/803—Application aware
-
- 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
Abstract
本申请提供了一种服务的最大承载流量确定方法、部署方法、装置和服务器,涉及云计算领域。该方法包括:首先根据预设的服务网络中每两个相邻的功能服务之间的剩余流量,从服务网络中确定目标路径;根据该剩余流量确定目标路径能够通过的最大流量;根据该最大流量更新目标路径中每两个相邻的功能服务之间的剩余流量和数据服务的最大承载流量;继续从服务网络中确定目标路径,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值。该方式基于服务网络中包含的所有目标路径中的每两个相邻的功能服务之间的剩余流量,可准确计算出数据服务的最大承载流量,进而有利于后续合理部署数据服务,同时避免了数据服务异常和服务资源的浪费。
Description
技术领域
本申请涉及数据处理技术领域,尤其是涉及一种服务的最大承载流量确定方法、部署方法、装置和服务器。
背景技术
内容识别技术通常采用微服务架构实现,微服务架构的拓扑结构较为复杂,通常包括多种功能服务,如图像识别服务、音频识别服务、视频识别服务、通用检索服务、人脸模型服务、声纹识别模型服务等等;根据服务之间的相互调用关系,这些服务组成多条线路,每条线路中连接一部分服务,一个服务可能处在多条线路中。客户端发送的数据经微服务架构中的服务进行内容识别后,将识别结果发送至数据收集服务。因此,该数据收集服务具有较大的数据流量,为了合理地部署数据收集服务,需要预测数据收集服务的最大承载流量。
相关技术中,通常是在测试环境中,采用压力测试的方式预测数据收集服务应承受的最大承载流量;但是,由于微服务架构中各个服务的线路分布较为复杂,因此,这种压力测试的方式预测出的数据收集服务的最大承载流量准确度较低,不利于合理地部署数据收集服务,当数据收集服务分配的资源较少时,如果接收到过高的数据流量易导致数据收集服务异常,如果数据收集服务分配的资源过多,易导致服务资源的浪费。
发明内容
本申请的目的在于提供一种服务的最大承载流量确定方法、部署方法、装置和服务器,以准确计算数据收集服务的最大承载流量,以便于后续合理地部署数据收集服务。
第一方面,本申请实施例提供一种服务的最大承载流量确定方法,该方法应用于运行有数据服务的服务器;该数据服务连接预设的服务网络;该服务网络包括多个功能服务;该数据服务的最大承载流量预设有初始值;该方法包括:根据服务网络中各个功能服务之间的剩余流量,从该服务网络中确定目标路径;该目标路径中,每两个相邻的功能服务之间均存在剩余流量;根据该目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量;根据该最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量;继续执行从服务网络中确定目标路径的步骤,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值。
在可选的实施方式中,上述根据服务网络中各个功能服务的剩余流量,从服务网络中确定目标路径的步骤,包括:按照服务网络中数据流量的流动方向,从服务网络中确定预设目标路径中的初始功能服务,将该初始功能服务确定为当前服务;获取在服务网络中,该当前服务所连接的后续服务;从后续服务中确定一个没有被遍历过的目标后续服务;如果当前服务与目标后续服务之间的剩余流量大于零,将目标后续服务确定为目标路径中的服务;将目标后续服务确定为更新的当前服务,继续执行获取在服务网络中,当前服务所连接的后续服务的步骤,直至目标后续服务为数据服务,得到目标路径。
在可选的实施方式中,上述从后续服务中确定一个没有被遍历过的目标后续服务的步骤,包括:如果当前服务所连接的后续服务包括多个,逐一获取后续服务对应的服务标识;该服务标识用于指示后续服务是否被遍历,如果服务被遍历,该服务标识还用于指示被遍历的后续服务连接的前续服务;如果获取到的后续服务的服务标识指示后续服务没有被遍历,将后续服务确定为目标后续服务。
在可选的实施方式中,上述方法还包括:如果当前服务与目标后续服务之间的剩余流量等于零,继续执行从后续服务中确定一个没有被遍历过的目标后续服务的步骤,直至获取到的目标后续服务与当前服务之间的剩余流量大于零。
在可选的实施方式中,上述根据目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量的步骤,包括:获取目标路径中每两个相邻的功能服务之间的剩余流量的最小值;将最小值的剩余流量,确定为目标路径能够通过的最大流量。
在可选的实施方式中,上述根据最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量的步骤,包括:针对目标路径中每两个相邻的功能服务,将当前两个相邻的功能服务之间的剩余流量与最大流量的差值,确定为当前两个相邻的功能服务之间的更新的剩余流量。
在可选的实施方式中,上述根据最大流量,更新数据服务的最大承载流量的步骤,包括:获取数据服务的当前的最大承载流量,将当前的最大承载流量与最大流量的和,确定为数据服务的更新的最大承载流量。
在可选的实施方式中,上述从服务网络中确定目标路径的步骤之前,上述方法还包括:获取服务网络中各个功能服务之间的当前连接关系,以及每两个相互连接的功能服务之间的当前最大承载流量和当前已消耗流量;其中,各个功能服务之间的当前连接关系,根据各个功能服务之间的当前调用关系确定;针对每两个相互连接的功能服务,计算当前两个相互连接的功能服务的当前最大承载流量和当前已消耗流量的差值,将差值确定为当前两个相互连接的功能服务之间的剩余流量。
在可选的实施方式中,上述针对每两个相互连接的功能服务,计算当前两个相互连接的功能服务的当前最大承载流量和当前已消耗流量的差值的步骤,包括:从预设的服务中获取预先存储的历史服务网络中各个功能服务之间的历史连接关系,以及每两个相互连接的功能服务之间的历史最大承载流量;如果服务网络中各个功能服务之间的当前连接关系与历史连接关系不同,或者每两个相互连接的功能服务之间的当前最大承载流量与历史最大承载量不同,执行针对每两个相互连接的功能服务,计算当前两个相互连接的功能服务的当前最大承载流量和当前已消耗流量的差值的步骤。
在可选的实施方式中,如果服务网络中各个功能服务之间的当前连接关系与历史连接关系不同,或者每两个相互连接的功能服务之间的当前最大承载流量与历史最大承载量不同,将该服务网络中的各个功能服务之间的当前连接关系以及每两个相互连接的功能服务之间的当前最大承载流量发送至预设的服务中,以使该预设的服务更新历史服务网络。
在可选的实施方式中,预设数据服务集群中部署有多个数据服务的服务节点;服务器中运行有数据服务的至少一个服务节点;上述从服务网络中确定目标路径的步骤,上述方法还包括:向预设的服务发送访问权限的获取请求;其中,如果多个服务节点向预设的服务发送获取请求,预设的服务将访问权限发放至接收到的第一个获取请求对应的服务节点;如果服务器中运行的服务节点获取到预设的服务发放的访问权限,执行从服务网络中确定目标路径的步骤。
在可选的实施方式中,上述访问权限包括原子锁;上述预设的服务将访问权限发放至接收到的第一个获取请求对应的服务节点的步骤包括:预设的服务将原子锁发放至接收到第一个获取请求对应的服务节点。
第二方面,本申请实施例提供一种服务的部署方法,该方法应用于运行有数据服务的服务器;数据服务连接预设的服务网络;服务网络包括多个功能服务;数据服务的最大承载流量预设有初始值;该方法包括:根据服务网络中各个功能服务之间的剩余流量,从服务网络中确定目标路径;该目标路径中,每两个相邻的功能服务之间均存在剩余流量;根据目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量;根据最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量;继续执行从服务网络中确定目标路径的步骤,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值;根据数据服务的最大承载流量的最终值,部署数据服务。
在可选的实施方式中,上述根据数据服务的最大承载流量的最终值,部署数据服务的步骤,包括:计算数据服务的最大承载流量的最终值与数据服务的单节点承载流量的商值,将该商值确定为数据服务的待部署节点量;根据该待部署节点量,部署数据服务。
第三方面,本申请实施例提供一种服务的最大承载流量确定装置,该装置设置于运行有数据服务的服务器;该数据服务连接预设的服务网络;该服务网络包括多个功能服务;该数据服务的最大承载流量预设有初始值;该装置包括:目标路径确定模块,用于根据服务网络中各个功能服务之间的剩余流量,从服务网络中确定目标路径;该目标路径中,每两个相邻的功能服务之间均存在剩余流量;最大流量确定模块,用于根据目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量;流量更新模块,用于根据最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量;承载流量确定模块,用于继续执行从服务网络中确定目标路径的步骤,直至服务网络中不存在所述目标路径,得到数据服务的最大承载流量的最终值。
第四方面,本申请实施例提供一种服务的部署装置,该装置设置于运行有数据服务的服务器;数据服务连接预设的服务网络;服务网络包括多个功能服务;数据服务的最大承载流量预设有初始值;该装置包括:目标路径确定模块,用于根据服务网络中各个功能服务之间的剩余流量,从服务网络中确定目标路径;该目标路径中,每两个相邻的功能服务之间均存在剩余流量;最大流量确定模块,用于根据目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量;流量更新模块,用于根据最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及所数据服务的最大承载流量;承载流量确定模块,用于继续执行从服务网络中确定目标路径的步骤,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值;服务部署模块,用于根据数据服务的最大承载流量的最终值,部署数据服务。
第五方面,本申请实施例提供一种服务器,包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现上述服务的最大承载流量确定方法或者上述服务的部署方法。
第六方面,本申请实施例提供一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述服务的最大承载流量确定方法或者上述服务的部署方法。
本申请实施例带来了以下有益效果:
本申请实施例提供的一种服务的最大承载流量确定方法、部署方法、装置和服务器,首先运行有数据服务的服务器根据预设的服务网络中各个功能服务之间的剩余流量,从服务网络中确定每两个相邻的功能服务之间均存在剩余流量的目标路径;再根据目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量;进而根据该最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量;继续执行从服务网络中确定目标路径,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值。该方式基于服务网络中包含的所有目标路径中的每两个相邻的功能服务之间的剩余流量,可准确计算出数据服务的最大承载流量,进而有利于后续合理部署数据服务,同时避免了数据服务异常和服务资源的浪费。
本申请的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本申请的上述技术即可得知。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的内容识别的微服务架构的结构示意图;
图2为本申请实施例提供的一种服务的最大承载流量确定方法的流程图;
图3为本申请实施例提供的另一种服务的最大承载流量确定方法的流程图;
图4为本申请实施例提供的另一种服务的最大承载流量确定方法的流程图;
图5为本申请实施例提供的另一种服务的最大承载流量确定方法的流程图;
图6为本申请实施例提供的一种服务网络的示意图;
图7为本申请实施例提供的另一种服务网络的示意图;
图8为本申请实施例提供的一种服务的部署方法的流程图;
图9为本申请实施例提供的一种服务的最大承载流量确定装置的结构示意图;
图10为本申请实施例提供的一种服务的部署装置的结构示意图;
图11为本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
内容识别技术通常采用微服务架构实现,微服务架构的拓扑结构较为复杂,通常包括多种功能服务,如图像识别服务、音频识别服务、视频识别服务、通用检索服务、人脸模型服务、声纹识别模型服务等等;根据服务之间的相互调用关系,这些服务组成多条线路,每条线路中连接一部分服务,一个服务可能处在多条线路中,而且不同线路中的不同服务有着不同的承载流量,如图1所示为一种内容识别的微服务架构的结构示意图。客户端发送的数据经微服务架构中的服务进行内容识别后,将识别结果发送至数据收集服务。因此,该数据收集服务具有较大的数据流量,为了合理地部署数据收集服务,需要预测数据收集服务的最大承载流量。
相关技术中,通常是在测试环境中,采用压力测试的方式预测数据收集服务应承受的最大承载流量,但是,由于微服务架构中各个服务的线路分布较为复杂,因此,这种压力测试的方式预测出的数据收集服务的最大承载流量准确度较低,不利于合理地部署数据收集服务。该方式通常在部署时通常会预先分配一定的资源,以减少计算误差,但是当数据收集服务分配的资源较少时,如果接收到过高的数据流量易导致数据收集服务异常,如果数据收集服务分配的资源过多,易导致服务资源的浪费。
由于机器测试成本高,且测试环境资源有限,上述压力测试方式通常适用于小数据量的模拟测试,但即使是小数据量的压力测试,由于拓扑结构的复杂性,依然会耗费大量测试机器成本,同时也会消耗大量的测试人力成本。
基于此,本申请实施例提供了一种服务的最大承载流量确定方法、部署方法、装置和服务器,该技术可以应用于服务最大承载流量的计算和服务实时部署的场景中。为了便于对本申请实施例进行理解,首先对本申请实施例所公开的一种服务的最大承载流量确定方法进行详细介绍,该方法应用于运行有数据服务的服务器;该数据服务连接预设的服务网络;该服务网络包括多个功能服务;该数据服务的最大承载流量预设有初始值;如图2所示,该方法包括如下具体步骤:
步骤S202,根据服务网络中各个功能服务之间的剩余流量,从服务网络中确定目标路径;该目标路径中,每两个相邻的功能服务之间均存在剩余流量。
上述预设的服务网络可以根据预设的微服务架构确定,该服务网络中包括多个功能服务、各个功能服务之间的连接关系,以及每两个相互连接的功能服务之间的最大承载流量、已消耗流量和剩余流量;上述功能服务是图1中所示的图像识别服务、音频识别服务、视频识别服务、通用检索服务、长音频服务等等,也即是图1中每一个椭圆圈都可以表示一个功能服务。图1中带箭头的线可以表示功能服务的数据流量的流动方向,也可以表示各个功能服务之间的连接关系或者互相调用关系;这些功能服务可以组成多条从客户端到数据服务(相当于图1中的数据收集服务)的路径,该数据服务是一种特殊的功能服务,用于接收所有路径上的服务结果,并对该服务结果进行相应的处理。
在具体实现时,可以从上述服务网络的路径中,选取每两个相邻的功能服务之间存在剩余流量的路径,也即是每两个相邻的功能服务之间能够通过的流量大于零的路径,作为目标路径。
步骤S204,根据上述目标路径中每两个相邻的功能服务之间的剩余流量,确定该目标路径能够通过的最大流量。
该目标路径除包含客户端和数据服务外,还至少包括一个功能服务;当目标路径中包含有一个功能服务时,可以将该功能服务与数据服务之间的剩余流量确定为该目标路径能够通过的最大流量;当目标路径中包含有多个功能服务时,每两个相邻的功能服务之间的剩余流量可能相同,也可能不同,因此需要根据剩余流量的较小值,确定目标路径能够通过的最大流量。
步骤S206,根据上述最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量。
目标路径能够通过的最大流量表征了该目标路径中每两个相邻的功能服务之间当前可通过的流量,该流量通常小于或者等于每两个相邻的功能服务之间的剩余流量;可以将目标路径中每两个相邻的功能服务之间的剩余流量分别减去上述最大流量值,得到更新后的每两个相邻的功能服务之间的剩余流量,并将该最大流量值计入数据服务的最大承载流量中,以便后续得到数据服务的最大承载量的最终值。
步骤S208,继续执行从服务网络中确定目标路径的步骤,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值。
在具体实现时,需要遍历服务网络中的每一条路径,以得到服务网络中所有的目标路径。如果服务网络中只有一条目标路径,那么数据服务的最大承载流量的最终值为该目标路径能够通过的最大流量加上数据服务的最大承载流量的预设值;如果服务网络中包含有多条目标路径,那么数据服务的最大承载流量的最终值为多条目标路径能够通过的最大流量的加和,加上数据服务的最大承载流量的预设值。
在一些实施例中,可以根据数据服务的最大承载流量的最终值对数据服务进行部署,也即是根据数据服务的最大承载流量,确定该数据服务处理数据所需的资源,根据所需资源对数据服务的节点进行释放或者扩容。
本申请实施例提供的一种服务的最大承载流量确定方法,首先根据预设的服务网络中各个功能服务之间的剩余流量,从服务网络中确定每两个相邻的功能服务之间均存在剩余流量的目标路径;再根据目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量;进而根据该最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量;继续执行从服务网络中确定目标路径,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值。该方式基于服务网络中包含的所有目标路径中的每两个相邻的功能服务之间的剩余流量,可准确计算出数据服务的最大承载流量,进而有利于后续合理部署数据服务,同时避免了数据服务异常和服务资源的浪费。
对应于上述实施例,本申请实施例还提供了另一种服务的最大承载流量确定方法,该方法在上述实施例所述方法的基础上实现;该方法重点描述根据服务网络中各个功能服务的剩余流量,从服务网络中确定目标路径的具体过程(通过下述步骤S302-S316实现);如图3所示,该服务的最大承载流量确定方法包括如下步骤:
步骤S302,按照服务网络中数据流量的流动方向,从服务网络中确定预设目标路径中的初始功能服务,将该初始功能服务确定为当前服务。
上述服务网络中的数据流量可以从客户端流经由功能服务组成的路径,最终达到数据服务,因此,上述预设目标路径中的初始功能服务可以认定为客户端,将该客户端确定为当前服务。
步骤S304,获取在服务网络中,上述当前服务所连接的后续服务。
根据服务网络中各个功能服务的连接关系,可以确定当前服务所连接的后续服务(也可称为下级服务)。在具体实现时,上述当前服务所连接的后续服务可以包含一个或者多个功能服务。例如,如图1中所示,当当前服务为客户端时,该当前服务的后续服务包括3个,分别为图像识别服务、音频识别服务和视频识别服务;当当前服务为视频识别服务时,后续服务为离线视频服务和直播流服务。
步骤S306,从后续服务中确定一个没有被遍历过的目标后续服务。
在具体实现时,需要从后续服务中确定一个之前没有被遍历过的功能服务,为目标后续服务。在具体实现时,如果当前服务所连接的后续服务包括多个,上述步骤S306可以通过下述步骤10-11实现:
步骤10,逐一获取后续服务对应的服务标识;该服务标识用于指示后续服务是否被遍历,如果服务被遍历,该服务标识还用于指示被遍历的后续服务连接的前续服务。
每个功能服务都预先设置有序号,以及相应的服务标识,序号可以是数字(例如,1、2、3等)或者字符(例如,v1、v2等),该服务标识可以是数字或者字符等。在具体实现时,每个后续服务在没有被遍历时的服务标识是预先设置好的,该服务标识可以是统一的数值或者字符,例如-1;当后续服务服务被遍历过时,该服务标识被更新为该后续服务连接的前续服务的序号,以指示遍历过的后续服务的前续服务,从而可以根据服务标识确定后续服务是否被遍历过。
步骤11,如果获取到的后续服务的服务标识指示后续服务没有被遍历,将该后续服务确定为目标后续服务。
步骤S308,判断当前服务与目标后续服务之间的剩余流量是否大于零;如果是,执行步骤S310;如果否,执行步骤S306。
当前服务与目标后续服务之间的剩余流量大于零,表示这两个服务之间存在可通过的流量;当前服务与目标后续服务之间的剩余流量等于零(通常不会出现小于零的情况),表示这两个服务之间不存在可通过的流量,也即是这两个服务之间的流量已耗尽;在具体实现时,如果当前服务与目标后续服务之间的剩余流量等于零,需要继续执行从后续服务中确定一个没有被遍历过的目标后续服务的步骤,直至获取到的目标后续服务与当前服务之间的剩余流量大于零,从而可以保证目标路径中的每两个相邻的功能服务之间存在剩余流量。
步骤S310,将上述目标后续服务确定为目标路径中的服务;执行步骤S312。
如果当前服务与目标后续服务之间的剩余流量大于零,也即是相邻的两个功能服务之间存在剩余流量,此时,可以将当前服务和目标后续服务均确定为目标路径中的服务。
步骤S312,判断上述目标后续服务是否为数据服务;如果否,执行步骤S314;如果是,执行步骤S316。
在具体实现时,每个功能服务预先设置有对应的服务名称,因此,可以判断目标后续服务的服务名称是否与数据服务的服务名称一致,如果是,确定目标后续服务为数据服务。
步骤S314,将上述目标后续服务确定为更新的当前服务,继续执行步骤S304。
步骤S316,根据上述目标路径中的服务确定目标路径。
上述数据服务为目标路径中的最后一个服务,判断目标后续服务是否为数据服务,也即是判断是否达到最后一个服务,如果是,则将确定的目标路径中的服务,组成的路径为目标路径;如果不是,需要将目标后续服务确定为新的当前服务,继续获取在服务网络中,新的当前服务所连接的后续服务,直到目标后续服务为数据服务。
步骤S318,根据上述目标路径中每两个相邻的功能服务之间的剩余流量,确定该目标路径能够通过的最大流量。
步骤S320,根据上述最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量。
从服务网络中确定出目标路径后,需要根据最大流量更新本次得到的目标路径中每两个相邻的功能服务之间的剩余流量,也即是将该目标路径中每两个相邻的功能服务之间当前的剩余流量减去该目标路径能够通过的最大流量,得到更新后的剩余流量,该过程也可以理解为更新了服务网络中的剩余流量。在具体实现时,还可以将该目标路径通过的最大流量值加上上次得到的目标路径能够通过的最大流量,得到更新的数据服务的最大承载流量。
步骤S322,判断服务网络中是否还存在目标路径,如果是,执行步骤S306;否则,执行步骤S324。
在服务网络中本次得到的目标路径的剩余流量更新后,需要判断服务网络中是否还存在其他的目标路径,在具体实现时,如果在当前服务对应的后续服务中的所有服务均被遍历过后,还是没有确定出目标路径,则说明此时服务网络中已经不存在目标路径了。
步骤S324,将上述更新的数据服务的最大承载流量,确定为数据服务的最大承载流量的最终值。
为了便于对本实施例进行理解,下面对本实施例进行举例介绍:
在从服务网络中确定目标路径之前,首先可以声明一个先进先出队列queue和数组pre[],其中queue中存储待遍历的功能服务,按照服务网络中数据流量的流动方向,从服务网络中确定预设目标路径中的初始功能服务,该初始功能服务最先进入队列queue中,也即是最先被遍历到;初始时queue中只含有初始功能服务。
上述pre[]为服务网络中的路径数组,大小为n,n为服务网络中功能服务的个数,其中,pre[i](i为功能服务的序号,0<=i<n)的值可以成为功能服务的服务标识,当该功能服务没有被遍历到时,pre[i]的值默认为-1,也即是服务标识为-1时,指示该功能服务没有被遍历过;当功能服务被遍历过后,pre[i]的值将被更新为该功能服务的前续服务的序号,用于指示该功能服务对应的前续服务。
在确定目标路径时,取出queue中初始功能服务,将初始功能服务确定为当前服务,在服务网络中获取该当前服务的数据流量流向的所有后续服务的集合B,集合B大小为m,也即是后续服务的集合B中保存有m个功能服务Bj(1≤j<m);依次判断pre[Bj]的值是否等于-1,若不等于-1,说明Bj已被加入过queue中(也可以理解为被遍历过),不再重复遍历;继续判断集合B中该Bj的下一个功能服务的值是否等于-1,直到从集合B中找到没有被遍历过的后续服务。若pre[Bj]的值等于-1,判断服务网络中从当前服务至后续服务Bj可流经的流量是否大于0(当前服务与目标后续服务之间的剩余流量是否大于零);如果等于0,说明这两个服务之间的流量已耗尽不可通过,继续判断集合B中的下一后续服务;如果大于0,更新pre[Bj]的值为当前服务的序号(该当前服务也即是后续服务的前续服务),并判断后续服务Bj是否为数据服务,如果是,则说明找到从起始点(相当于上述客户端)到结束点(相当于上述数据服务)的一条流量路径Pathi(相当于上述目标路径),返回Pathi,也即是得到目标路径;如果否,则将Bj加入到queue中,等待下次确定目标路径时,将该Bj确定为新的当前服务;如果直到遍历结束仍未找到一条从起始点到终止点的路径,则返回null。
如果返回目标路径Pathi,从该目标路径中,确定每两个相邻的功能服务之间的剩余流量的最小值,即为该目标路径上可以通过的最大流量flow。将该目标路径可通过的最大流量flow计入数据服务的最大承载流量中,并将该目标路径中每两个相邻的功能服务的剩余流量减去最大流量flow,以更新服务网络。然后继续从queue中确定当前服务,找出服务网络中所有可以从起始点点到终点的目标路径,直到返回结果null,即服务网络中不存在任何目标路径。当服务网络中不存在任何目标路径时,将计入数据服务的最大承载流量中每条目标路径对应的最大流量flow的加和,确定为数据服务的最大承载流量的最终值。
上述服务的最大承载流量确定方法,可以遍历到服务网络中的所有目标路径,不受服务网络的拓扑结构复杂度的影响,可以准确计算出数据服务的最大承载流量,而且该方式无需增加额外的机器计算数据服务的最大承载流量,数据服务对应的服务器本身可以自动完成,从而也节省大量的人力资源和物力资源。
对应于上述实施例,本申请实施例还提供了另一种服务的最大承载流量确定方法,该方法在上述实施例所述方法的基础上实现;该方法重点描述根据目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量的具体过程(通过下述步骤S404-S406实现),以及根据最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量和数据服务的最大承载流量的具体过程(通过下述步骤S408-S410实现);如图4所示,该服务的最大承载流量确定方法包括如下步骤:
步骤S402,根据服务网络中各个功能服务之间的剩余流量,从服务网络中确定目标路径;该目标路径中,每两个相邻的功能服务之间均存在剩余流量。
在具体实现时,通常预设数据服务集群中部署有多个数据服务的服务节点;服务器中运行有该数据服务的至少一个服务节点;在一些实施例中,需要从多个数据服务的服务节点中,确定需要计算最大承载流量的数据服务的服务节点;因此,上述步骤S402可以通过下述步骤20-21实现:
步骤20,向预设的服务发送访问权限的获取请求;其中,如果多个服务节点向预设的服务发送获取请求,该预设的服务将访问权限发放至接收到的第一个获取请求对应的服务节点。
在具体实现时,上述每个数据服务的服务节点上都部署有一个定时任务器,该定时任务器可以每隔固定时长或者第一次服务启动时进行触发,当该定时任务器触发时,会向预设的服务对应的服务器发送访问权限的获取请求。具体地,上述访问权限可以包括原子锁,该原子锁也可以称为原子访问,该原子锁可以保证获取到该原子锁的服务节点可以执行某些操作(例如,执行从服务网络中确定目标路径的操作),而未获取到原子锁的服务节点不可执行该操作。当访问权限为原子锁时,该获取请求可以设置为SET lockKey 1NXEX 30。
在具体实现时,上述预设的服务可以为redis(Remote Dictionary Server,远程字典服务)服务,该redis服务通常是一个支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的接口的系统。该redis服务底层实现机制是单线程的,所有获取请求到达后会排队处理,因此不会出现并发问题导致同时多个服务节点获得原子锁,也即是如果多个服务节点向redis服务发送获取请求,该redis服务将原子锁发放给接收到的第一个获取请求对应的服务节点。
在具体实现时,获取到访问权限的服务节点接收到的返回数据为1,没有接收到访问权限的服务节点的接收到的返回数据为0,数据服务节点可以根据接收到的返回数据判断自身是否获得了访问权限。
步骤21,如果上述服务器中运行的服务节点获取到预设的服务发放的访问权限,执行从服务网络中确定目标路径的步骤。
在具体实现时,获取到访问权限的服务节点需要计算数据服务的最大承载流量,也可以将获取到访问权限的服务节点称为领导者节点,在后续步骤中由领导者节点从服务网络中确定目标路径。其他没有获取到访问权限的服务节点不参与本次确定数据服务的最大承载流量的计算过程,该数据服务的最大承载流量也可以理解为数据服务集群的最大承载流量。
步骤S404,获取上述目标路径中每两个相邻的功能服务之间的剩余流量的最小值。
在具体实现时,需要从目标路径中确定每两个相邻的功能服务之间的剩余量,比较这些剩余流量的大小,从中选取剩余流量的最小值。
步骤S406,将上述最小值的剩余流量,确定为目标路径能够通过的最大流量。
目标路径中每两个相邻的功能服务之间的剩余流量的最小值,也即是该目标路径能够通过的最大流量。
步骤S408,针对上述目标路径中每两个相邻的功能服务,将当前两个相邻的功能服务之间的剩余流量与最大流量的差值,确定为当前两个相邻的功能服务之间的更新的剩余流量。
针对当前确定的目标路径中能够通过的最大流量,可以更新服务网络中该目标路径中每两个相邻的功能服务之间的剩余流量的剩余流量。在具体实现时,在目标路径中,可以使每两个相邻的功能服务之间的剩余流量分别减去最大流量,得到每两个相邻的功能服务之间的更新的剩余流量。更新后,该目标路径中,通常至少有一个两个相邻的功能服务之间的剩余余量为零。
步骤S410,获取上述数据服务的当前的最大承载流量,将当前的最大承载流量与最大流量的和,确定为数据服务的更新的最大承载流量。
将当前确定的目标路径中能够通过的最大流量加上当前的最大承载流量,得到更新后的最大承载流量。如果该目标路为从服务网络中获取到第一个目标路径时,该当前的最大承载流量为预设的初始值;如果该目标路径不是从服务网络中获取到的第一个目标路径,该当前的最大承载流量为根据上一个目标路径能够通过的最大流量更新后的数据服务的最大承载流量。
步骤S412,继续执行从服务网络中确定目标路径的步骤,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值。
上述服务的最大承载流量确定方法,可以从服务网络中依次获得所有的每两个相邻的功能服务之间存在剩余流量的目标路径,以根据目标路径能够通过的最大流量,准确计算出数据服务的最大承载流量,以便于后续数据服务的服务节点的合理部署。
对应于上述实施例,本申请实施例还提供了另一种服务的最大承载流量确定方法,该方法在上述实施例所述方法的基础上实现;该方法重点描述确定预设的服务网络中各个功能服务之间的剩余流量的具体过程;如图5所示,该方法包括如下具体步骤:
步骤S502,获取服务网络中各个功能服务之间的当前连接关系,以及每两个相互连接的功能服务之间的当前最大承载流量和当前已消耗流量;其中,各个功能服务之间的当前连接关系,根据各个功能服务之间的当前调用关系确定。
在具体实现时,上述步骤S502可以由上述领导者节点执行。该领导者节点可以向服务网络中的各个功能服务发送数据获取请求,以获取到服务网络中各个功能服务之间的当前调用关系、各个功能服务目前所连接的后续服务及其与后续服务的流控值,和每两个相互连接的功能服务之间的当前已消耗流量。该流控值也即是两个相互连接的功能服务之间可通过的最大流量,可称为两个相互连接的功能服务之间的当前最大承载流量。
步骤S504,从预设的服务中获取预先存储的历史服务网络中各个功能服务之间的历史连接关系,以及每两个相互连接的功能服务之间的历史最大承载流量。在具体实现时,上述预设的服务可以为redis服务。
上述预设的服务中保存有上次领导者节点完成数据服务的最大承载流量的计算后的服务网络,也即是历史服务网络。该历史服务网络中保存有上次计算时,各个功能服务之间的连接关系,以及每两个相互连接的功能服务之间的历史最大承载流量(也可称为流控制)。
步骤S506,判断服务网络中各个功能服务之间的当前连接关系与历史连接关系,以及每两个相互连接的功能服务之间的当前最大承载流量与历史最大承载量是否均相同;如果否,执行步骤S508,如果是,结束。
在从当前实时获取的服务网络中的确定目标路径之前,需要判断历史服务网络与当前的服务网络是否一致,如果一致,将不需要计算数据服务的最大承载流量,也即是服务网络没有发生变化,数据服务的最大承载流量也没有发生变化,同时也不需要对数据服务进行重新部署;如果一致,需要执行下述步骤S508,得到数据服务的最大承载流量。
在具体实现时,如果服务网络中各个功能服务之间的当前连接关系与历史连接关系不同,或者每两个相互连接的功能服务之间的当前最大承载流量与历史最大承载量不同,将服务网络中的各个功能服务之间的当前连接关系以及每两个相互连接的功能服务之间的当前最大承载流量发送至预设的服务中,以使预设的服务更新历史服务网络。也可以理解为将当前历史服务网络更新为实时获取到的服务网络,以便下一次计算数据服务时使用。
步骤S508,针对每两个相互连接的功能服务,计算当前两个相互连接的功能服务的当前最大承载流量和当前已消耗流量的差值,将差值确定为当前两个相互连接的功能服务之间的剩余流量。
在一些实施例中,上述服务网络可以为容量网络,该容量网络可以用有向权重图表示。该容量网络可以将每个功能服务抽象为一个顶点,各个顶点可以通过“边”实现彼此的连接,当两个顶点彼此连接时,表示这两个顶点有关联,而且该容量网络中每条边是有方向的,同时每条边都有与之对应的最大承载流量,即为权重,该最大承载流量也是上述两个相互连接的功能服务的最大承载流量。在具体实现时,考虑到功能服务间的容量网络是一个稀疏图,因此可采用邻接表的方式来存储该容量网络。
针对每两个相互连接的功能服务,根据获取到的当前两个相互连接的功能服务的当前已消耗流量和容量网络中当前两个相互连接的功能服务的当前最大承载流量,得到当前两个相互连接的功能服务之间的剩余流量。
在一些实施例中,上述服务网络还可以是在上述容量网络的基础上建立的残量网络。该残量网络在容量网络的基础之上,添加每条边对应的反向边形成残量,正向边上存储当前该边经过的流量值(相当于上述已消耗流量),反向边上存储剩余可通过的流量值(相当于上述剩余流量)。在具体实现时,残量网络正向边和反向边上的值会在后续计算过程中不断被修改。具体地,与容量网络一致,该残量网络也是一个有向权重图,可以用一个邻接表进行存储。
步骤S510,根据服务网络中每两个相互连接的功能服务之间的剩余流量,从服务网络中确定目标路径;该目标路径中,每两个相邻的功能服务之间均存在剩余流量。
步骤S512,根据上述目标路径中每两个相邻的功能服务之间的剩余流量,确定该目标路径能够通过的最大流量。
步骤S514,根据上述最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量。
步骤S516,继续执行从服务网络中确定目标路径的步骤,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值。
在一些实施例中,可以根据最大流量最小割定理,得到数据服务的最大承载流量的最终值。该最大流最小割定理是网络流理论的重要定理,通常是指在一个网络流(相当于上述服务网络)中,能够从源点(相当于上述客户端)到达汇点(相当于上述数据服务)的最大流量(相当于数据服务的最大承载流量)等于如果从网络中移除就能够导致网络流中断的边的集合的最小容量和,即在任何网络中,最大流的值等于最小割的容量;其中割通常是网络中定点的一个划分,它把网络中的所有顶点划分成两个顶点集合S和T,其中源点s∈S,汇点t∈T,记为CUT(S,T)。
在最大流量最小定理中下面三个条件是等价的:
1、流f是服务网络的最大流。
2、服务网络中不存在增广路径(相当于服务网络中不存在目标路径)。
3、对于服务网络的某一个CUT(S,T),此时f=C(S,T)。
以图6所示的服务网络的结构示意图为例分析上述三个条件;图6中是表示源点,t表示汇点,v1、v2、v3和v4均表示功能服务,边上标注的值为已消耗流量/最大承载流量,即11/16表示从源点s到功能服务v1(也即是源点s与功能服务v1之间)的最大承载流量为16、已消耗流量为11、剩余流量为5。图6中v1和v2、v2和v3、v3和v4、以及v4与t之间的为割CUT(S,T),此时图6中所有服务被割CUT(S,T)划分为S和T两个集合,S为s、v1、v2、v4,T为v3、t,流f为穿过割CUT(S,T)的流量之和。
对比上述三个条件:
1.流f=f(v1,v3)+f(v2,v3)+f(v3,v4)+f(v4,t)=12+(-4)+7+4=19。
2.上图的服务网络存在增广路径,也即是还存在目标路径,也即是存在图7所示的服务网络中阴影箭头表示的路径(由s、v2、v3、t组成的路径)。
3.对于割,C(S,T)=c(v1,v3)+c(v3,v4)+c(v4,t)=12+7+4=23,f不等于C(S,T)。
基于上述分析,可以得到图6中的割已为最小割,因此图6中不存在某一割使得f=C(S,T),因此,此时流f不是最大流,需要继续遍历服务网络直到不存在增光路经时,得到流f,也即是得到数据服务的最大承载流量。
上述服务的最大承载流量确定方法,可以得到服务网络中所有的可以从客户端到达数据服务的目标路径,从而根据每条目标路径中的最大流量,准确计算出数据服务的最大承载流量,有利于后续的数据服务部署。
针对于上述服务的最大承载流量确定方法的实施例,本申请提供了一种服务的部署方法,该方法应用于运行有数据服务的服务器;该数据服务连接预设的服务网络;该服务网络包括多个功能服务;该数据服务的最大承载流量预设有初始值;如图8所示,该方法包括如下步骤:
步骤S802,根据服务网络中各个功能服务之间的剩余流量,从服务网络中确定目标路径;该目标路径中,每两个相邻的功能服务之间均存在剩余流量。
步骤S804,根据上述目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量。
步骤S806,根据上述最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量。
步骤S808,继续执行从服务网络中确定目标路径的步骤,直至服务网络中不存在目标路径,得到该数据服务的最大承载流量的最终值。
步骤S810,根据上述数据服务的最大承载流量的最终值,部署该数据服务。
在具体实现时,上述数据服务的最大承载流量的最终值也即是当前数据服务需要支持的最大吞吐率,也可以称为数据服务集群的当前最大承载流量,该数据服务集群中部署有多个数据服务的服务节点,因此,可以通过数据服务集群的最大承载流量对数据服务进行部署,也可以理解为部署数据服务的服务节点。当该数据服务的最大承载流量超过数据服务集群中当前部署的服务节点所能承受的流量范围时,需要增加所需数量的服务节点,来满足当前最大承载量;当该数据服务的最大承载量低于数据服务集群中当前部署的服务节点所能承受的流量范围时,可以释放多余的服务节点,以节省资源。
在具体实现时,上述步骤S810以通过下述步骤30-31实现:
步骤30,计算数据服务的最大承载流量的最终值与数据服务的单节点承载流量的商值,将该商值确定为数据服务的待部署节点量。
上述单节点承载流量可以理解为数据服务集群中单个数据服务的服务节点的最大承载流量。在具体实现时,数据服务集群中每个服务节点的最大承载流量是一个固定值,在数据服务上线时,可以通过压力测试的方法得到;也即是数据服务集群能够承受的流量是一个定值,但是上线时,需要承受的最大流量(相当于上述最大承载流量)是需要计算的;因此,当计算得到数据服务集群的最大承载流量时,可以用该最大承载流量除以数据服务中单个数据服务节点的最大承载流量,得到商值,如果计算得到商值不为整数,可以以向上取整的方式得到待部署节点量,例如,该商值为30.67时,待部署节点量为31。
步骤31,根据上述待部署节点量,部署数据服务。
在具体实现时,如果当前数据服务集群中已经部署的服务节点的节点量大于待部署节点量,需要计算出多余的节点量,以通过kubernetes(简称K8S)命令对多余的服务节点进行释放;如果当前数据服务集群中已经部署的服务节点的节点量小于待部署节点量,需要计算出需要增加的节点量,以通过kubernetes命令根据需要增加的节点量对数据服务集群进行扩容,从而完成数据服务的部署。
上述kubernetes通常是一个开源容器编排引擎,用于容器化应用的自动化部署、扩展和管理,内建强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制,以及多粒度的资源配额管理能力。
上述服务的部署方法,基于服务网络中包含的所有目标路径中的每两个相邻的功能服务之间的剩余流量,可准确计算出数据服务的最大承载流量,进而根据该最大承载流量对数据服务服务进行合理部署,同时该方式可以实时计算数据服务的最大承载流量,在系统上线后,如果功能服务进行扩容时,数据收集服务也可进行准确扩容,从而避免了数据服务异常和服务资源的浪费。
对应于上述图2至图5所示的方法实施例,本申请实施例提供了一种服务的最大承载流量确定装置,该装置设置于运行有数据服务的服务器;该数据服务连接预设的服务网络;该服务网络包括多个功能服务;该数据服务的最大承载流量预设有初始值;如图9所示,该装置包括:
目标路径确定模块90,用于根据服务网络中各个功能服务之间的剩余流量,从服务网络中确定目标路径;该目标路径中,每两个相邻的功能服务之间均存在剩余流量。
最大流量确定模块91,用于根据目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量。
流量更新模块92,用于根据最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量。
承载流量确定模块93,用于继续执行从服务网络中确定目标路径的步骤,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值。
上述服务的最大承载流量确定装置,首先根据预设的服务网络中各个功能服务之间的剩余流量,从服务网络中确定每两个相邻的功能服务之间均存在剩余流量的目标路径;再根据目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量;进而根据该最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量;继续执行从服务网络中确定目标路径,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值。该方式基于服务网络中包含的所有目标路径中的每两个相邻的功能服务之间的剩余流量,可准确计算出数据服务的最大承载流量,进而有利于后续合理部署数据服务,同时避免了数据服务异常和服务资源的浪费。
进一步地,上述目标路径确定模块90,包括:初始服务确定单元,用于按照服务网络中数据流量的流动方向,从服务网络中确定预设目标路径中的初始功能服务,将初始功能服务确定为当前服务;目标后续服务确定单元,用于获取在服务网络中,当前服务所连接的后续服务;从后续服务中确定一个没有被遍历过的目标后续服务;流量判定单元,用于如果当前服务与目标后续服务之间的剩余流量大于零,将目标后续服务确定为目标路径中的服务;目标路径获得单元,用于将目标后续服务确定为更新的当前服务,继续执行获取在服务网络中,当前服务所连接的后续服务的步骤,直至目标后续服务为数据服务,得到目标路径。
具体地,上述目标后续服务确定单元,还用于:如果当前服务所连接的后续服务包括多个,逐一获取后续服务对应的服务标识;该服务标识用于指示后续服务是否被遍历,如果服务被遍历,该服务标识还用于指示被遍历的后续服务连接的前续服务;如果获取到的后续服务的服务标识指示后续服务没有被遍历,将后续服务确定为目标后续服务。
在具体实现时,如果当前服务与目标后续服务之间的剩余流量等于零,继续执行从后续服务中确定一个没有被遍历过的目标后续服务的步骤,直至获取到的目标后续服务与当前服务之间的剩余流量大于零。
进一步地,上述最大流量确定模块91,用于:获取目标路径中每两个相邻的功能服务之间的剩余流量的最小值;将最小值的剩余流量,确定为目标路径能够通过的最大流量。
进一步地,上述流量更新模块92,用于针对目标路径中每两个相邻的功能服务,将当前两个相邻的功能服务之间的剩余流量与最大流量的差值,确定为当前两个相邻的功能服务之间的更新的剩余流量。
进一步地,上述流量更新模块92,还用于获取数据服务的当前的最大承载流量,将当前的最大承载流量与最大流量的和,确定为数据服务的更新的最大承载流量。
进一步地,上述装置还包括剩余流量计算模块,用于:获取服务网络中各个功能服务之间的当前连接关系,以及每两个相互连接的功能服务之间的当前最大承载流量和当前已消耗流量;其中,各个功能服务之间的当前连接关系,根据各个功能服务之间的当前调用关系确定;针对每两个相互连接的功能服务,计算当前两个相互连接的功能服务的当前最大承载流量和当前已消耗流量的差值,将该差值确定为当前两个相互连接的功能服务之间的剩余流量。
具体地,上述剩余流量计算模块,还用于:从预设的服务中获取预先存储的历史服务网络中各个功能服务之间的历史连接关系,以及每两个相互连接的功能服务之间的历史最大承载流量;如果服务网络中各个功能服务之间的当前连接关系与所述历史连接关系不同,或者每两个相互连接的功能服务之间的当前最大承载流量与历史最大承载量不同,执行针对每两个相互连接的功能服务,计算当前两个相互连接的功能服务的当前最大承载流量和当前已消耗流量的差值。
进一步地,上述装置还包括数据发送模块,用于如果服务网络中各个功能服务之间的当前连接关系与历史连接关系不同,或者每两个相互连接的功能服务之间的当前最大承载流量与历史最大承载量不同,将当前网络中的各个功能服务之间的当前连接关系以及每两个相互连接的功能服务之间的当前最大承载流量发送至预设的服务中,以使预设的服务更新历史服务网络。
具体地,上述预设数据服务集群中部署有多个数据服务的服务节点;该服务器中运行有数据服务的至少一个服务节点;上述目标路径确定模块90,还用于:向预设的服务发送访问权限的获取请求;其中,如果多个服务节点向预设的服务发送获取请求,该预设的服务将访问权限发放至接收到的第一个获取请求对应的服务节点;如果服务器中运行的服务节点获取到预设的服务发放的访问权限,执行从服务网络中确定目标路径的步骤。
在具体实现时,上述访问权限包括原子锁;上述目标路径确定模块90,还用于:预设的服务将原子锁发放至接收到第一个获取请求对应的服务节点。
本申请实施例所提供的服务的最大承载流量确定装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
对应于上述图8所示的方法实施例,本申请实施例提供了一种服务的部署装置,该装置设置于运行有数据服务的服务器;该数据服务连接预设的服务网络;该服务网络包括多个功能服务;该数据服务的最大承载流量预设有初始值;如图10所示,该装置包括:
目标路径确定模块90,用于根据服务网络中各个功能服务之间的剩余流量,从服务网络中确定目标路径;该目标路径中,每两个相邻的功能服务之间均存在剩余流量。
最大流量确定模块91,用于根据目标路径中每两个相邻的功能服务之间的剩余流量,确定目标路径能够通过的最大流量。
流量更新模块92,用于根据最大流量,更新目标路径中每两个相邻的功能服务之间的剩余流量,以及数据服务的最大承载流量。
承载流量确定模块93,用于继续执行从服务网络中确定目标路径的步骤,直至服务网络中不存在目标路径,得到数据服务的最大承载流量的最终值。
服务部署模块1000,用于根据数据服务的最大承载流量的最终值,部署所述数据服务。
进一步地,上述服务部署模块1000,还用于:计算数据服务的最大承载流量的最终值与数据服务的单节点承载流量的商值,将该商值确定为数据服务的待部署节点量;根据该待部署节点量,部署数据服务。
上述服务的部署装置,基于服务网络中包含的所有目标路径中的每两个相邻的功能服务之间的剩余流量,可准确计算出数据服务的最大承载流量,进而根据该最大承载流量对数据服务服务进行合理部署,同时该方式可以实时计算数据服务的最大承载流量,在系统上线后,如果功能服务进行扩容时,数据收集服务也可进行准确扩容,从而避免了数据服务异常和服务资源的浪费。
本申请实施例还提供了一种服务器,用于运行上述服务的最大承载流量确定方法和服务的部署方法,参见图11所示,该服务器包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器101执行机器可执行指令以实现上述服务的最大承载流量确定方法或者上述服务的部署方法。
进一步地,图11所示的服务器还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本申请实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述服务的最大承载流量确定方法或者上述服务的部署方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和/或电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (15)
1.一种服务的最大承载流量确定方法,其特征在于,所述方法应用于运行有数据服务的服务器;所述数据服务连接预设的服务网络;所述服务网络包括多个功能服务;所述数据服务的最大承载流量预设有初始值;所述方法包括:
根据所述服务网络中各个所述功能服务之间的剩余流量,从所述服务网络中确定目标路径;所述目标路径中,每两个相邻的功能服务之间均存在剩余流量;
根据所述目标路径中每两个相邻的功能服务之间的剩余流量,确定所述目标路径能够通过的最大流量;
根据所述最大流量,更新所述目标路径中每两个相邻的功能服务之间的剩余流量,以及所述数据服务的最大承载流量;
继续执行从所述服务网络中确定目标路径的步骤,直至所述服务网络中不存在所述目标路径,得到所述数据服务的最大承载流量的最终值;
所述根据所述目标路径中每两个相邻的功能服务之间的剩余流量,确定所述目标路径能够通过的最大流量的步骤,包括:
获取所述目标路径中每两个相邻的功能服务之间的剩余流量的最小值;将所述最小值的剩余流量,确定为所述目标路径能够通过的最大流量;
所述根据所述最大流量,更新所述目标路径中每两个相邻的功能服务之间的剩余流量,以及所述数据服务的最大承载流量的步骤,包括:
针对所述目标路径中每两个相邻的功能服务,将当前两个相邻的功能服务之间的剩余流量与所述最大流量的差值,确定为所述当前两个相邻的功能服务之间的更新的剩余流量;
获取所述数据服务的当前的最大承载流量,将所述当前的最大承载流量与所述最大流量的和,确定为所述数据服务的更新的最大承载流量。
2.根据权利要求1所述的方法,其特征在于,根据所述服务网络中各个所述功能服务的剩余流量,从所述服务网络中确定目标路径的步骤,包括:
按照所述服务网络中数据流量的流动方向,从所述服务网络中确定预设目标路径中的初始功能服务,将所述初始功能服务确定为当前服务;
获取在所述服务网络中,所述当前服务所连接的后续服务;从所述后续服务中确定一个没有被遍历过的目标后续服务;
如果所述当前服务与所述目标后续服务之间的剩余流量大于零,将所述目标后续服务确定为所述目标路径中的服务;
将所述目标后续服务确定为更新的当前服务,继续执行获取在所述服务网络中,所述当前服务所连接的后续服务的步骤,直至所述目标后续服务为所述数据服务,得到所述目标路径。
3.根据权利要求2所述的方法,其特征在于,从所述后续服务中确定一个没有被遍历过的目标后续服务的步骤,包括:
如果所述当前服务所连接的后续服务包括多个,逐一获取所述后续服务对应的服务标识;所述服务标识用于指示所述后续服务是否被遍历,如果所述后续服务被遍历,所述服务标识还用于指示被遍历的所述后续服务连接的前续服务;
如果获取到的后续服务的服务标识指示所述后续服务没有被遍历,将所述后续服务确定为目标后续服务。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
如果所述当前服务与所述目标后续服务之间的剩余流量等于零,继续执行从所述后续服务中确定一个没有被遍历过的目标后续服务的步骤,直至获取到的目标后续服务与所述当前服务之间的剩余流量大于零。
5.根据权利要求1所述的方法,其特征在于,从所述服务网络中确定目标路径的步骤之前,所述方法还包括:
获取所述服务网络中各个功能服务之间的当前连接关系,以及每两个相互连接的所述功能服务之间的当前最大承载流量和当前已消耗流量;其中,所述各个功能服务之间的当前连接关系,根据所述各个功能服务之间的当前调用关系确定;
针对每两个相互连接的所述功能服务,计算当前两个相互连接的所述功能服务的当前最大承载流量和当前已消耗流量的差值,将所述差值确定为当前两个相互连接的所述功能服务之间的剩余流量。
6.根据权利要求5所述的方法,其特征在于,针对每两个相互连接的所述功能服务,计算当前两个相互连接的所述功能服务的当前最大承载流量和当前已消耗流量的差值的步骤,包括:
从预设的服务中获取预先存储的历史服务网络中各个功能服务之间的历史连接关系,以及每两个相互连接的功能服务之间的历史最大承载流量;
如果所述服务网络中各个功能服务之间的当前连接关系与所述历史连接关系不同,或者每两个相互连接的所述功能服务之间的当前最大承载流量与所述历史最大承载量不同,执行针对每两个相互连接的所述功能服务,计算当前两个相互连接的所述功能服务的当前最大承载流量和当前已消耗流量的差值的步骤。
7.根据权利要求6所述的方法,其特征在于,
如果所述服务网络中各个功能服务之间的当前连接关系与所述历史连接关系不同,或者每两个相互连接的所述功能服务之间的当前最大承载流量与所述历史最大承载量不同,将所述服务网络中的各个功能服务之间的当前连接关系以及每两个相互连接的所述功能服务之间的当前最大承载流量发送至所述预设的服务中,以使所述预设的服务更新所述历史服务网络。
8.根据权利要求1所述的方法,其特征在于,预设数据服务集群中部署有多个数据服务的服务节点;所述服务器中运行有所述数据服务的至少一个服务节点;
所述从所述服务网络中确定目标路径的步骤,所述方法还包括:
向预设的服务发送访问权限的获取请求;其中,如果多个所述服务节点向所述预设的服务发送所述获取请求,所述预设的服务将所述访问权限发放至接收到的第一个获取请求对应的服务节点;
如果所述服务器中运行的服务节点获取到所述预设的服务发放的访问权限,执行从所述服务网络中确定目标路径的步骤。
9.根据权利要求8所述的方法,其特征在于,所述访问权限包括原子锁;所述预设的服务将所述访问权限发放至接收到的第一个获取请求对应的服务节点的步骤包括:所述预设的服务将所述原子锁发放至接收到第一个获取请求对应的服务节点。
10.一种服务的部署方法,其特征在于,所述方法应用于运行有数据服务的服务器;所述数据服务连接预设的服务网络;所述服务网络包括多个功能服务;所述数据服务的最大承载流量预设有初始值;所述方法包括:
根据所述服务网络中各个所述功能服务之间的剩余流量,从所述服务网络中确定目标路径;所述目标路径中,每两个相邻的功能服务之间均存在剩余流量;
根据所述目标路径中每两个相邻的功能服务之间的剩余流量,确定所述目标路径能够通过的最大流量;
根据所述最大流量,更新所述目标路径中每两个相邻的功能服务之间的剩余流量,以及所述数据服务的最大承载流量;
继续执行从所述服务网络中确定目标路径的步骤,直至所述服务网络中不存在目标路径,得到所述数据服务的最大承载流量的最终值;
根据所述数据服务的最大承载流量的最终值,部署所述数据服务;
所述根据所述目标路径中每两个相邻的功能服务之间的剩余流量,确定所述目标路径能够通过的最大流量的步骤,包括:
获取所述目标路径中每两个相邻的功能服务之间的剩余流量的最小值;将所述最小值的剩余流量,确定为所述目标路径能够通过的最大流量;
所述根据所述最大流量,更新所述目标路径中每两个相邻的功能服务之间的剩余流量,以及所述数据服务的最大承载流量的步骤,包括:
针对所述目标路径中每两个相邻的功能服务,将当前两个相邻的功能服务之间的剩余流量与所述最大流量的差值,确定为所述当前两个相邻的功能服务之间的更新的剩余流量;
获取所述数据服务的当前的最大承载流量,将所述当前的最大承载流量与所述最大流量的和,确定为所述数据服务的更新的最大承载流量。
11.根据权利要求10所述的方法,其特征在于,根据所述数据服务的最大承载流量的最终值,部署所述数据服务的步骤,包括:
计算所述数据服务的最大承载流量的最终值与所述数据服务的单节点承载流量的商值,将所述商值确定为所述数据服务的待部署节点量;
根据所述待部署节点量,部署所述数据服务。
12.一种服务的最大承载流量确定装置,其特征在于,所述装置设置于运行有数据服务的服务器;所述数据服务连接预设的服务网络;所述服务网络包括多个功能服务;所述数据服务的最大承载流量预设有初始值;所述装置包括:
目标路径确定模块,用于根据所述服务网络中各个功能服务之间的剩余流量,从所述服务网络中确定目标路径;所述目标路径中,每两个相邻的功能服务之间均存在剩余流量;
最大流量确定模块,用于根据所述目标路径中每两个相邻的功能服务之间的剩余流量,确定所述目标路径能够通过的最大流量;
流量更新模块,用于根据所述最大流量,更新所述目标路径中每两个相邻的功能服务之间的剩余流量,以及所述数据服务的最大承载流量;
承载流量确定模块,用于继续执行从所述服务网络中确定目标路径的步骤,直至所述服务网络中不存在所述目标路径,得到所述数据服务的最大承载流量的最终值;
所述最大流量确定模块,还用于:获取所述目标路径中每两个相邻的功能服务之间的剩余流量的最小值;将所述最小值的剩余流量,确定为所述目标路径能够通过的最大流量;
所述流量更新模块,还用于:
针对所述目标路径中每两个相邻的功能服务,将当前两个相邻的功能服务之间的剩余流量与所述最大流量的差值,确定为所述当前两个相邻的功能服务之间的更新的剩余流量;
获取所述数据服务的当前的最大承载流量,将所述当前的最大承载流量与所述最大流量的和,确定为所述数据服务的更新的最大承载流量。
13.一种服务的部署装置,其特征在于,所述装置设置于运行有数据服务的服务器;所述数据服务连接预设的服务网络;所述服务网络包括多个功能服务;所述数据服务的最大承载流量预设有初始值;所述装置包括:
目标路径确定模块,用于根据所述服务网络中各个功能服务之间的剩余流量,从所述服务网络中确定目标路径;所述目标路径中,每两个相邻的功能服务之间均存在剩余流量;
最大流量确定模块,用于根据所述目标路径中每两个相邻的功能服务之间的剩余流量,确定所述目标路径能够通过的最大流量;
流量更新模块,用于根据所述最大流量,更新所述目标路径中每两个相邻的功能服务之间的剩余流量,以及所述数据服务的最大承载流量;
承载流量确定模块,用于继续执行从所述服务网络中确定目标路径的步骤,直至所述服务网络中不存在目标路径,得到所述数据服务的最大承载流量的最终值;
服务部署模块,用于根据所述数据服务的最大承载流量的最终值,部署所述数据服务;
所述最大流量确定模块,还用于:获取所述目标路径中每两个相邻的功能服务之间的剩余流量的最小值;将所述最小值的剩余流量,确定为所述目标路径能够通过的最大流量;
所述流量更新模块,还用于:针对所述目标路径中每两个相邻的功能服务,将当前两个相邻的功能服务之间的剩余流量与所述最大流量的差值,确定为所述当前两个相邻的功能服务之间的更新的剩余流量;获取所述数据服务的当前的最大承载流量,将所述当前的最大承载流量与所述最大流量的和,确定为所述数据服务的更新的最大承载流量。
14.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1-9任一项所述的服务的最大承载流量确定方法或者权利要求10-11任一项所述的服务的部署方法。
15.一种机器可读存储介质,其特征在于,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使处理器实现1-9任一项所述的服务的最大承载流量确定方法或者权利要求10-11任一项所述的服务的部署方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010594161.3A CN111740926B (zh) | 2020-06-24 | 2020-06-24 | 服务的最大承载流量确定方法、部署方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010594161.3A CN111740926B (zh) | 2020-06-24 | 2020-06-24 | 服务的最大承载流量确定方法、部署方法、装置和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111740926A CN111740926A (zh) | 2020-10-02 |
CN111740926B true CN111740926B (zh) | 2022-04-22 |
Family
ID=72651211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010594161.3A Active CN111740926B (zh) | 2020-06-24 | 2020-06-24 | 服务的最大承载流量确定方法、部署方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111740926B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014236364A (ja) * | 2013-06-03 | 2014-12-15 | 日本電信電話株式会社 | ネットワーク制御装置、および、ネットワーク制御プログラム |
CN105959138A (zh) * | 2016-04-29 | 2016-09-21 | 深圳前海大数点科技有限公司 | 基于云计算的微服务动态部署的系统及方法 |
CN108259376A (zh) * | 2018-04-24 | 2018-07-06 | 北京奇艺世纪科技有限公司 | 服务器集群业务流量的控制方法及相关设备 |
CN111027736A (zh) * | 2019-07-30 | 2020-04-17 | 中国人民解放军国防科技大学 | 多目标优化下的微服务组合部署与调度方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107770084B (zh) * | 2016-08-19 | 2020-03-20 | 华为技术有限公司 | 一种数据流量的管理方法及装置 |
US10467039B2 (en) * | 2017-08-07 | 2019-11-05 | Open Data Group Inc. | Deployment and management platform for model execution engine containers |
US10911332B2 (en) * | 2018-12-17 | 2021-02-02 | Cisco Technology, Inc. | Time sensitive networking in a microservice environment |
-
2020
- 2020-06-24 CN CN202010594161.3A patent/CN111740926B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014236364A (ja) * | 2013-06-03 | 2014-12-15 | 日本電信電話株式会社 | ネットワーク制御装置、および、ネットワーク制御プログラム |
CN105959138A (zh) * | 2016-04-29 | 2016-09-21 | 深圳前海大数点科技有限公司 | 基于云计算的微服务动态部署的系统及方法 |
CN108259376A (zh) * | 2018-04-24 | 2018-07-06 | 北京奇艺世纪科技有限公司 | 服务器集群业务流量的控制方法及相关设备 |
CN111027736A (zh) * | 2019-07-30 | 2020-04-17 | 中国人民解放军国防科技大学 | 多目标优化下的微服务组合部署与调度方法 |
Non-Patent Citations (1)
Title |
---|
基于进化多目标优化的微服务组合部署与调度策略;马武彬等;《系统工程与电子技术》;20200131;第42卷(第01期);第90-98页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111740926A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107360206B (zh) | 一种区块链共识方法、设备及系统 | |
US10805363B2 (en) | Method, device and system for pushing file | |
CN115328663B (zh) | 基于PaaS平台进行资源调度的方法、装置、设备和存储介质 | |
CN114780225B (zh) | 一种分布式模型训练系统、方法及装置 | |
CN112465146B (zh) | 一种量子与经典混合云平台以及任务执行方法 | |
CN108574645B (zh) | 一种队列调度方法及装置 | |
CN114253695A (zh) | 一种计算节点资源信息更新方法、节点和存储介质 | |
CN113067875B (zh) | 基于微服务网关动态流控的访问方法和装置以及设备 | |
CN111966289A (zh) | 基于Kafka集群的分区优化方法和系统 | |
CN112231108A (zh) | 任务处理方法、装置、计算机可读存储介质及服务器 | |
CN108390914B (zh) | 一种服务更新方法及装置、系统 | |
CN113835865A (zh) | 一种任务部署方法和装置、电子设备和存储介质 | |
CN111740926B (zh) | 服务的最大承载流量确定方法、部署方法、装置和服务器 | |
CN114489985A (zh) | 数据处理方法、设备及存储介质 | |
CN111090401B (zh) | 存储设备性能预测方法及装置 | |
CN108073460B (zh) | 分布式系统中的全局锁抢占方法、装置及计算设备 | |
CN111831447A (zh) | 一种基于性能监控的应用弹性扩容方法及装置 | |
CN116107753A (zh) | 一种任务节点分配方法、装置、电子设备及存储介质 | |
CN115576682A (zh) | 一种算力共享方法、装置及系统 | |
CN111857992B (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
CN111376953B (zh) | 一种为列车下发计划的方法及系统 | |
CN110209853B (zh) | 车辆的图片搜索方法、装置和设备 | |
CN108809916B (zh) | 一种业务处理方法及装置 | |
CN109460296B (zh) | 一种处理器的资源分配方法、装置和存储介质 | |
CN112905699A (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 |