具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。另外,虽然在装置示意图中进行了功能模块的划分,但是在某些情况下,可以以不同于装置示意图中的模块划分。
本申请的实施例提供了一种微服务集群的调度方法、装置、计算机设备及计算机可读存储介质。用于对微服务集群中的微服务分配合理的系统资源及任务,以实现微服务集群的负载均衡。示例性的,在微服集群的实际应用中,若不对微服务集群的系统资源及任务进行合理调度,可能会出现部分微服务应用被分配了过多的任务,而部分无任务执行的微服务应用被分配了过多的系统资源,微服务集群的性能和效率大幅降低,可以根据本申请实施例的微服务集群的调度方法,实现根据微服务应用的性能对微服务集群的系统资源进行合理分配以及根据各微服务应用被分配的系统资源中任务存储区的存储空间对微服务集群的任务进行合理分配,以实现微服务集群的负载均衡,从而提升微服务集群的性能和效率。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1及图2,图1是本申请实施例提供的一种微服务集群的调度方法的示意流程图,图2是本申请一实施例提供的一种微服务集群的调度方法的场景示意图。
如图1所示,该微服务集群的调度方法可以包括以下步骤S110-步骤S150。
步骤S110、获取微服务集群的微服务应用的性能指标。
微服务应用的性能指标是用于指示微服务应用的非功能特性的指标,它关注的不是微服务应用能否完成特定的功能,而是完成功能时展示出来的及时性,用于指示微服务应用的性能的指标有响应时间、资源使用率及吞吐量等指标。
示例性的,所述微服务应用的性能指标包括所述微服务应用当前的吞吐量,获取所述微服务应用当前的吞吐量,以获得所述微服务应用的软件性能指标。所述微服务应用的吞吐量,是指所述微服务应用单位时间内能够处理请求的数量。可以理解的,所述微服务应用的性能指标还可以包括响应时间、资源使用率等其他用于指示微服务应用的性能的指标。
步骤S120、根据所述性能指标,为所述微服务应用分配对应规模的系统资源,所述系统资源包括所述微服务集群的任务存储区中的存储空间。
示例性的,步骤S120具体包括步骤S121-S122。
S121、根据所述微服务应用当前的吞吐量,确定所述微服务应用的资源分配权重。
示例性的,步骤S121具体包括:若所述微服务应用当前的吞吐量达到了预设的参考指标,根据所述微服务应用当前的吞吐量与所述参考指标之比,确定所述微服务应用的资源分配权重。例如,将所述性能指标与所述参考指标之比确定为所述资源分配权重。
示例性的,步骤S121具体还包括:若所述微服务应用当前的吞吐量未达到所述参考指标,确定所述微服务应用的资源分配权重为0。例如,参考指标为吞吐量=100请求/秒,对于任何当前吞吐量小于100请求/秒的微服务应用,对应的资源分配权重均为0。
S122、根据所述资源分配权重,为所述微服务应用分配所述系统资源。
示例性的,根据每个所述微服务应用的资源分配权重在所有所述微服务应用的资源分配权重中的占比,为每个所述微服务应用分配对应规模的所述系统资源。
在一些实施方式中,步骤S120具体还包括:根据所述性能指标,确定所述微服务集群的循环队列中对应数目的存储单元为所述微服务应用对应的存储空间。如图2所示,所述任务存储区包括若干所述循环队列,所述存储空间包括若干所述循环队列的若干存储单元。
例如,将所述微服务应用的资源分配权重在所有所述微服务应用的资源分配权重中的占比与所有所述循环队列的存储单元总数相乘,以确定所述微服务应用被分配的存储单元数。可以理解的,若微服务应用的资源分配权重为0,该微服务被分配的所述存储单元的数量为0,直至该微服务应用的软件性能指标恢复至达到所述参考指标,该微服务才会被分配有效的存储空间;所述微服务应用的资源分配权重越高,所述微服务应用被分配的所述存储单元就越多,所述微服务应用被分配的存储空间的容量越大。
队列是一种操作受限的存储结构,只允许在队列的出口(前端)进行删除操作,在队列的入口(后端)进行添加操作,即最先进入队列的元素才能最先从队列中删除,队列又称为先进先出线性表。循环队列是存储单元循环使用的一种队列,可以把循环队列视为一个环形空间。
示例性的,所述循环队列被所有所述微服务应用共享。由于所述循环队列是被所有所述微服务应用共享的,当调整所述微服务应用对应的存储空间的容量时,不会造成所述微服务消费方调用的任务的数据丢失。例如,某一微服务应用调整为更小容量的存储空间时,并不需要在队列中删除多余的存储单元,只需将多余的存储单元在逻辑上与其他微服务应用关联对应即可。
示例性的,所述循环队列可用于实现虚拟通道(virtual channel),所述虚拟通道用于将所述微服务消费方调用的任务由所述微服务集群的调度平台传输至所述微服务应用。
示例性的,所述微服务应用被分配的存储单元在所述循环队列中的位置可以是连续分布的,也可以是分散分布。
在另外的一些实施方式中,所述任务存储区也可以是其他存储结构,例如所述任务存储可以是操作自由的存储结构,需要实现先进先出等队列的功能时,可以通过自定义的方式实现。
示例性的,所述系统资源还包括网络带宽,例如,对于吞吐量小的微服务应用,资源分配权重具有较小值,所述微服务应用被分配较小的网络带宽,这样可以动态降低网络带宽的消耗;对于吞吐量大的微服务应用,资源分配权重具有较大值,所述微服务应用被分配较大的网络带宽,线程会得到更大限度的调度,避免出现线程饥饿。
示例性的,由微服务集群的调度平台按预设的时间周期执行步骤S110-S120,以定期更新所述微服务应用的系统资源。
可以理解的,步骤S110-S120与步骤S13O-S140的执行步骤不是固定的,既可以在步骤S110-S120之后执行步骤S130-S140,也可以在步骤S110-S120之前执行步骤S130-S140。
步骤S130、根据微服务消费方的服务请求,确定所述微服务消费方调用的任务。
在计算机领域,任务(job)是执行计算机程序的基本工作单位。例如,如图2所示,微服务集群接收所述微服务消费方的服务请求后,微服务集群对服务请求进行响应,可对应得到所述微服务消费方调用的任务。
步骤S140、将所述微服务消费方调用的任务存储至所述任务存储区中。
所述任务存储区可以为所述任务提供调度的缓存,并对微服务集群的线程起到高峰限流的作用。
示例性的,步骤S140具体包括S141-S142:
S141、在所述循环队列的当前入口添加所述微服务消费方调用的任务;
例如,循环队列Q的当前入口的指针为r,将所述任务存入指针为r的存储单元Q(r)。
S142、将所述循环队列的入口调整为所述循环队列中所述当前入口的下一个未存有数据的存储单元。
例如,Q(r)的下一个存储单元的指针为r_new=(r+1)%MAXSIZE,其中MAXSIZE为循环队列Q的存储单元个数,若指针为r_new的存储单元Q(r_new)中未存有数据,则将Q(r_new)确定为循环队列Q的入口。
步骤S150、根据所述任务所在的存储空间,将所述任务分配给所述存储空间对应的微服务应用执行。
示例性的,步骤S150具体包括步骤S151-S155。
S151、确定所述循环队列当前出口对应的微服务应用;
例如,若所述队列当前出口属于其中一个微服务应用被分配的所述存储空间中的一个存储单元,则所述微服务应用与所述当前出口对应。
S152、在所述循环队列的当前出口读取所述任务;
示例性的,所述任务存储区包括多个所述循环队列,可以通过并行的方式在各循环队列的出口读取所述任务,以提高效率。
S153、将读取的所述任务分配给所述当前出口对应的微服务应用执行;
示例性的,所述微服务应用执行被分配的所述任务后,将得到的相应数据返回给微服务消费方。
可以理解的,微服务应用被分配的所述存储空间的容量越大,即被分配的所述存储单元越多,所述微服务应用被分配的任务就越多,所述微服务应用的线程就会得到更大限度的调度。
S154、在所述当前出口将完成分配的所述任务删除;
例如,循环队列Q的当前出口的指针为f,在指针为f的存储单元Q(f)中将所述任务删除。
S155、将所述循环队列的出口调整为所述循环队列中所述当前出口的下一个存有数据的存储单元。
例如,Q(f)的下一个存储单元的指针为f_new=(f+1)%MAXSIZE,若指针为f_new的存储单元Q(f_new)中存有数据,则将Q(f_new)确定为循环队列Q的出口。
示例性的,若所述循环队列存满了数据,可以执行步骤S150后获得未存有数据的存储单元,再执行步骤S142将所述循环的入口调整为该未存有数据的存储单元。
在一些实施方式中,所述微服务应用执行所述任务得到的数据可以储存在区块链节点中。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
在一些实施例中,所述微服务集群的调度方法还包括步骤S101-S102:
S101、获取配置文件;
示例性的,可以根据用户的配置操作生成所述配置文件。
S102、根据所述配置文件在微服务架构的配置中心中配置调度策略,所述调度策略用于实现步骤S110-S150。
示例性的,所述配置文件存放在微服务架构的配置中心中,在所述配置文件中通过脚本添加所述调度策略。
根据在微服务配置中心配置的调度策略实现步骤S110-S150,支持可配置性的微服务,降低了微服务的开发量,丰富了用户的体验感,业务系统不需要关注调度方法的具体实现方式,无须做额外的业务开发。
示例性的,所述微服务集群的调度方法,可以融合Hystrix、负载均衡、Feign等Spring Cloud微服务架构的组件,可扩展性更加丰富,可以兼容用户的二次开发。
本申请提供的微服务集群的调度方法,通过获取微服务集群的微服务应用的性能指标;根据所述性能指标,为所述微服务应用分配对应规模的系统资源,所述系统资源包括所述微服务集群的任务存储区中的存储空间;根据微服务消费方的服务请求,确定所述微服务消费方调用的任务;将所述微服务消费方调用的任务存储至所述任务存储区中;根据所述任务所在的存储空间,将所述任务分配给所述存储空间对应的微服务应用执行,实现根据微服务应用的性能对微服务集群的系统资源进行合理分配以及根据各微服务应用被分配的系统资源中任务存储区的存储空间对微服务集群的任务进行合理分配,以实现微服务集群的负载均衡,从而提升微服务集群的性能和效率,该方法效率高,易于实现,方便移植。同时,所述微服务集群的调度方法对微服务集群中的微服务应用进行了统一治理,提升了微服务集群的运维效率,降低了微服务集群的运维成本。
本申请实施例可以应用在人工智能领域,例如,所述微服务集群可以用于为人工智能平台提供云计算。人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
本申请实施例还可以应用在数字医疗领域,例如,所述微服务集群可以用于实现医疗云。医疗云(Medical cloud),是指在云计算、移动技术、多媒体、4G通信、大数据、以及物联网等新技术基础上,结合医疗技术,使用“云计算”来创建医疗健康服务云平台,实现了医疗资源的共享和医疗范围的扩大。因为云计算技术的运用于结合,医疗云提高医疗机构的效率,方便居民就医。像现在医院的预约挂号、电子病历、医保等都是云计算与医疗领域结合的产物,医疗云还具有数据安全、信息共享、动态扩展、布局全局的优势。
如图3所示,该微服务集群的调度装置,包括:性能获取模块110、资源分配模块120、任务获取模块130、任务缓存模块140及任务分配模块150。
性能获取模块110,用于获取微服务集群的微服务应用的性能指标;
资源分配模块120,用于根据所述性能指标,为所述微服务应用分配对应规模的系统资源,所述系统资源包括所述微服务集群的任务存储区中的存储空间;
任务获取模块130,用于根据微服务消费方的服务请求,确定所述微服务消费方调用的任务;
任务缓存模块140,用于将所述微服务消费方调用的任务存储至所述任务存储区中;
任务分配模块150,用于根据所述任务所在的存储空间,将所述任务分配给所述存储空间对应的微服务应用执行。
示例性的,所述微服务应用的性能指标包括所述微服务应用当前的吞吐量,资源分配模块120包括权重确定子模块及资源分配子模块。
权重确定子模块,用于根据所述微服务应用当前的吞吐量,确定所述微服务应用的资源分配权重。
资源分配子模块,用于根据所述资源分配权重,为所述微服务应用分配所述系统资源。
示例性的,权重确定子模块具体用于:若所述微服务应用当前的吞吐量达到了预设的参考指标,根据所述微服务应用当前的吞吐量与所述参考指标之比,确定所述微服务应用的资源分配权重。
示例性的,权重确定子模块还具体用于:若所述微服务应用当前的吞吐量未达到所述参考指标,确定所述微服务应用的资源分配权重为0。
示例性的,资源分配子模块具体用于:根据每个所述微服务应用的资源分配权重在所有所述微服务应用的资源分配权重中的占比,为每个所述微服务应用分配对应规模的所述系统资源。
示例性的,资源分配模块120具体用于:根据所述性能指标,确定所述微服务集群的循环队列中对应数目的存储单元为所述微服务应用对应的存储空间。
示例性的,任务缓存模块140具体用于:在所述循环队列的当前入口添加所述微服务消费方调用的任务;将所述循环队列的入口调整为所述循环队列中所述当前入口的下一个未存有数据的存储单元。
示例性的,任务分配模块150具体用于:确定所述循环队列当前出口对应的微服务应用;在所述循环队列的当前出口读取所述任务;将读取的所述任务分配给所述当前出口对应的微服务应用执行;在所述当前出口将完成分配的所述任务删除;将所述循环队列的出口调整为所述循环队列中所述当前出口的下一个存有数据的存储单元。
请参阅图4,图4是本申请实施例提供的一种计算机设备的示意图。该计算机设备可以是服务器或终端。
如图4所示,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口,其中,存储器可以包括非易失性存储介质和内存储器。
非易失性存储介质可存储操作系统和计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种微服务集群的调度方法。
处理器用于提供计算和控制能力,支撑整个计算机设备的运行。
内存储器为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器执行时,可使得处理器执行任意一种微服务集群的调度方法。
该网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,该计算机设备的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解的是,处理器可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一些实施方式中,所述处理器用于运行存储在存储器中的计算机程序,以实现如下步骤:获取微服务集群的微服务应用的性能指标;根据所述性能指标,为所述微服务应用分配对应规模的系统资源,所述系统资源包括所述微服务集群的任务存储区中的存储空间;根据微服务消费方的服务请求,确定所述微服务消费方调用的任务;将所述微服务消费方调用的任务存储至所述任务存储区中;根据所述任务所在的存储空间,将所述任务分配给所述存储空间对应的微服务应用执行。
示例性的,所述微服务应用的性能指标包括所述微服务应用当前的吞吐量,处理器用于实现根据所述性能指标,为所述微服务应用分配对应规模的系统资源时,实现:根据所述微服务应用当前的吞吐量,确定所述微服务应用的资源分配权重;根据所述资源分配权重,为所述微服务应用分配所述系统资源。
示例性的,处理器用于实现所述所述根据所述微服务应用当前的吞吐量,确定所述微服务应用的资源分配权重时,实现:若所述微服务应用当前的吞吐量达到了预设的参考指标,根据所述微服务应用当前的吞吐量与所述参考指标之比,确定所述微服务应用的资源分配权重。
示例性的,处理器用于实现所述根据所述资源分配权重,为所述微服务应用分配所述系统资源时,实现:根据每个所述微服务应用的资源分配权重在所有所述微服务应用的资源分配权重中的占比,为每个所述微服务应用分配对应规模的所述系统资源。
示例性的,处理器用于实现所述根据所述微服务应用当前的吞吐量,确定所述微服务应用的资源分配权重时,还实现:若所述微服务应用当前的吞吐量未达到所述参考指标,确定所述微服务应用的资源分配权重为0。
示例性的,处理器用于实现所述根据所述性能指标,为所述微服务应用分配对应规模的系统资源时,实现:根据所述性能指标,确定所述微服务集群的循环队列中对应数目的存储单元为所述微服务应用对应的存储空间。
示例性的,处理器用于实现所述将所述微服务消费方调用的任务存储至所述任务存储区中时,实现:在所述循环队列的当前入口添加所述微服务消费方调用的任务;将所述循环队列的入口调整为所述循环队列中所述当前入口的下一个未存有数据的存储单元。
示例性的,处理器用于实现所述根据所述任务所在的存储空间,将所述任务分配给所述存储空间对应的微服务应用执行时,实现:确定所述循环队列当前出口对应的微服务应用;在所述循环队列的当前出口读取所述任务;将读取的所述任务分配给所述当前出口对应的微服务应用执行;在所述当前出口将完成分配的所述任务删除;将所述循环队列的出口调整为所述循环队列中所述当前出口的下一个存有数据的存储单元。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法,如:
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项微服务集群的调度方法。
其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。