一种资源分配方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机领域,特别是涉及一种资源分配方法、装置、计算机设备和存储介质。
背景技术
随着移动互联网的发展,越来越多的开发团队采用微服来构建应用,例如,将购物应用拆分成订单微服务、价格查询微服务、支付管理微服务等,通过每个微服务完成一个特定的功能。所有微服务组合在一起,构成了微服务系统,并实现了整个应用的功能。但是,当某个微服务因为网络连接变慢,资源突然繁忙等因素而不可用时,可能会导致不可用的微服务消耗掉微服务系统内的所有资源,从而导致其他微服务不可用,进而导致微服务系统不可用,出现服务雪崩现象。
目前主要通过为每个微服务设置资源池,用以隔离关键资源的方式来避免服务雪崩现象。但是这种划分资源池会使资源利用率不高。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升资源利用率的资源分配方法、装置,以解决的问题。
一种资源分配方法,所述方法包括:
获取资源配置文件;所述资源配置文件包括资源划分信息;
当接收到基于目标微服务系统发起的目标请求时,根据所述资源划分信息向资源池中的第一资源区申请空闲资源;
当所述第一资源区不存在空闲资源时,根据所述资源划分信息在资源池第二资源区中确定所述目标请求对应的资源分区,向所述资源分区申请空闲资源;
基于申请到的空闲资源响应目标请求。
在其中一个实施例中,所述目标微服务系统包括多个微服务;所述获取资源配置文件;所述资源配置文件包括资源划分信息之前,还包括:
所述目标微服务系统包括多个微服务;所述获取资源配置文件之前还包括:
确定每个微服务在多个时段所需要的最小资源量;
根据多个微服务对应最小资源量之和,将资源池划分为第一资源区和第二资源区;
根据每个微服务对应的最小资源量,将第二资源区划分为多个资源分区;
基于资源划分信息生成相应时段对应的资源配置文件;
所述获取资源配置文件包括:获取当前时段的资源配置文件。
在其中一个实施例中,所述确定每个微服务在多个时段所需要的最小资源量之前还包括:
获取目标微服务系统在统计周期接收到的请求量;
根据所述请求量将所述统计周期划分为多个时段。
在其中一个实施例中,所述确定每个微服务在多个时段所需要的最小资源量包括:
计算每个微服务在多个统计周期同一时段的请求并发量均值;
根据所述请求并发量均值,确定所述微服务在相应时段需要的最小资源量。
在其中一个实施例中,所述当接收到基于目标系统发起的目标请求时,根据所述资源划分信息向资源池中的第一资源区申请空闲资源包括:
当接收到基于目标微服务系统发起的目标请求时,确定所述目标请求对应的目标微服务;
获取所述目标微服务在目标时段的访问失败次数;
比较所述访问失败次数是否超过阈值;
若是,向所述目标微服务系统返回请求失败提示;
否则,向资源池中的第一资源区申请所述目标微服务所需的空闲资源。
在其中一个实施例中,所述向资源池中的第一资源区申请所述目标微服务所需的空闲资源包括:
确定所述第一资源区当前未被占用的空闲资源总量;
比较所述目标微服务所需的资源量是否超过所述空闲资源总量;
若否,从所述第一资源区分配相应资源量的空闲资源至所述目标微服务,并根据分配的资源量对所述空闲资源总量进行更新。
一种资源分配装置,包括:
配置文件获取模块,用于获取资源配置文件;所述资源配置文件包括资源划分信息;
资源申请模块,用于当接收到基于目标微服务系统发起的目标请求时,根据所述资源划分信息向资源池中的第一资源区申请空闲资源;当所述第一资源区不存在空闲资源时,根据所述资源划分信息在资源池第二资源区中确定所述目标请求对应的资源分区,向所述资源分区申请空闲资源;
目标请求响应模块,用于基于申请到的空闲资源响应目标请求。
在其中一个实施例中,所述装置还包括:
配置文件生成模块,用于确定每个微服务在多个时段所需要的最小资源量;根据多个微服务对应最小资源量之和,将资源池划分为第一资源区和第二资源区;根据每个微服务对应的最小资源量,将第二资源区划分为多个资源分区;基于资源划分信息生成相应时段对应的资源配置文件;
所述配置文件获取模块还用于获取当前时段的资源配置文件。
在其中一个实施例中,所述装置还包括:
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取资源配置文件;所述资源配置文件包括资源划分信息;
当接收到基于目标微服务系统发起的目标请求时,根据所述资源划分信息向资源池中的第一资源区申请空闲资源;
当所述第一资源区不存在空闲资源时,根据所述资源划分信息在资源池第二资源区中确定所述目标请求对应的资源分区,向所述资源分区申请空闲资源;
基于申请到的空闲资源响应目标请求。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取资源配置文件;所述资源配置文件包括资源划分信息;
当接收到基于目标微服务系统发起的目标请求时,根据所述资源划分信息向资源池中的第一资源区申请空闲资源;
当所述第一资源区不存在空闲资源时,根据所述资源划分信息在资源池第二资源区中确定所述目标请求对应的资源分区,向所述资源分区申请空闲资源;基于申请到的空闲资源响应目标请求。
上述资源分配方法、装置、计算机设备和存储介质,由于第一资源区内的资源是共享的,优先基于第一资源区给各个微服务分配资源,可以实现资源按需分配,相比传统的针对每个微服务部署对应的资源池,可以避免有些资源池中存在大量空闲资源的情况下而有些微服务的资源需求得不到满足的现象,从而可以提高资源利用率。此外,针对每个微服务预先划分专属的资源分区,当第一资源区中资源无法满足某个微服务的资源需求时可以从相应的资源分区分配资源,如此,即使当某个微服务因为自身不可用而消耗掉第一资源区的所有共享的资源时,其他微服务也可以通过调用对应的资源分区中的资源响应目标请求,确保其他微服务的正常运行,从而避免服务雪崩现象。
附图说明
图1是一个实施例的一种资源分配方法的应用环境图;
图2是一个实施例的一种资源分配方法的流程示意图;
图3是一个实施例的一种资源分配方法的具体流程示意图;
图4是一个实施例的一种资源分配装置的结构框图;
图5是一个实施例的一种计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的资源分配方法,可以应用于如图1所示的应用环境中。其中,终端102与服务器104通过网络进行通信。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。服务器104部署有目标微服务系统,目标微服务系统包括多个微服务,其中一个微服务用于接收目标请求,和根据目标请求向其他微服务分配响应目标请求所需的资源,为了后续描述方便,将用于接收目标请求和向其他微服务分配资源的微服务称为主机微服务。终端102上运行了目标微服务系统对应的客户端,记作目标应用。通过目标应用,显示目标微服务响应目标请求的响应结果。
服务器104读取资源配置文件,并从资源配置文件中提取资源划分信息,根据资源划分信息,将资源池划分成第一资源区和第二资源区。当用户在终端102点击目标应用的某一图标时,终端102根据图标标识生成一个目标请求,并将目标请求发送至服务器104。服务器104接收到目标请求后,根据目标请求的请求信息,确定与目标请求对应的目标微服务。服务器104统计目标微服务为实现目标请求所需要的资源量,然后,查看第一资源区的空闲资源总量是否大于所需资源量。如果空闲资源大于所需资源量,服务器104从第一资源区分配空闲资源至目标微服务;如果空闲资源小于所需资源量,服务器104根据目标微服务的微服务名称,确定与目标微服务对应的第二资源区的资源分区,并查看资源分区中的空闲资源是否大于所需资源量,如果空闲资源大于所需资源量,服务器104从资源分区中分配空闲资源至目标微服务。由于第一资源区内的资源是共享的,优先基于第一资源区给各个微服务分配资源,可以实现资源按需分配,相比传统的针对每个微服务部署对应的资源池,可以避免有些资源池中存在大量空闲资源的情况下而有些微服务的资源需求得不到满足的现象,从而可以提高资源利用率。此外,针对每个微服务预先划分专属的资源分区,当第一资源区中资源无法满足某个微服务的资源需求时可以从相应的资源分区分配资源,如此,即使当某个微服务因为自身不可用而消耗掉第一资源区的所有共享的资源时,其他微服务也可以通过调用对应的资源分区中的资源响应目标请求,确保其他微服务的正常运行,从而避免服务雪崩现象。
在一个实施例中,如图2所示,提供了一种资源分配方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S210,获取资源配置文件;资源配置文件包括资源划分信息。
其中,资源配置文件是预先存储在服务器,作为服务器对目标微服务系统进行资源划分依据的文件。资源配置文件记录了目标微服务系统在至少一个时段的资源划分信息。目标微服务系统是指基于微服务架构实现的应用系统,包括多个微服务。不同的微服务可以响应用户触发的不同目标请求。目标微服务系统部署了对应的资源池。资源池中存放了多个可供微服务调用的资源。资源可以是线程资源等。资源划分信息是指具体如何对资源池中的资源进行划分管理的信息。
具体实现中,服务器获取对应时段的资源配置文件,并获取资源配置文件的存储路径,根据存储路径,以文件流方式读取整个资源配置文件,并从资源配置文件中提取第一资源区和第二资源区的具体资源划分信息,根据资源划分信息,划分目标微服务系统的资源池。
步骤S220,当接收到基于目标微服务系统发起的目标请求时,根据资源划分信息向资源池中的第一资源区申请空闲资源。
其中,资源池中的第一资源区是,为各个微服务提供公共资源的资源区。资源池中的第二资源区是,为每个微服务提供最少资源的资源区。最少资源是,保证微服务基本运行所需的资源。
具体实现中,目标微服务系统中的主机微服务中存有服务注册表,记录微服务名称、访问路径。当主机微服务接收到目标请求时,从目标请求中提取目标微服名称,根据目标微服务名称在服务注册表中查询目标微服务的访问路径,根据目标微服务的访问路径,将目标请求转发至目标微服务。当目标微服务接收到目标请求后,计算响应目标请求需要的资源量,并根据实现目标请求需要的资源量向主机微服务发送资源申请请求。主机微服务接收到资源申请后,查看资源池中的第一资源区的空闲资源量是否超出响应目标请求需要的资源量,如果超出,则从空闲资源中分配实现目标请求需要的资源量至目标微服务。如果未超出,则将响应目标请求需要的资源量减去空闲资源量,得到差值资源量。然后,将第一资源区中的全部空闲资源分配至目标微服务,并从与目标请求对应的第二资源区的空闲资源中,分配差值资源至目标微服务。
步骤S230,当第一资源区不存在空闲资源时,根据资源划分信息在资源池第二资源区中确定目标请求对应的资源分区,向资源分区申请空闲资源。
其中,资源划分信息中,记录了微服务与资源分区的对应关系。第二资源区中有多个资源分区,资源分区中的资源量为对应微服务所需的最小资源量,每个微服务调用对应资源分区中的空闲资源来响应目标请求。
具体实现中,主机微服务收到资源申请后,从资源申请中提取目标微服务名称和响应目标请求需要的资源量。根据目标微服务名称,在资源划分信息中查询与目标微服务对应的资源分区,并从对应的资源分区中分配与响应目标请求需要的资源量对应的空闲资源至目标微服务。
例如,资源划分信息中,记录了资源分区名称和对应的微服务名称,当目标微服务系统因需要新增功能而增加一个微服务后,会在第二资源区中增加一个资源分区,为成功配置的微服务预留少量资源,然后,在资源配置文件中,记录资源分区名称和对应的微服务名称。当目标微服务系统从资源申请请求中提取目标微服务名称后,根据目标微服务名称,从资源划分信息中,确定与目标微服务对应的资源分区,并获取对应的资源分区的总资源量。目标微服务系统初始化时,可以生成一个数组,用于记录每个资源分区中已被分配的资源量。当第一资源区没有空闲资源时,目标微服务系统从数组中,提取与目标微服务对应的资源分区中已被分配的资源量,并将资源分区总资源量减去已被分配的资源量,得到资源分区的空闲资源总量。对比资源分区的空闲资源量是否超出响应目标请求需要的资源量,如果超过,则向目标微服务系统分配一定量的空闲资源,并更新数组中对应的数值。
步骤S240,基于申请到的空闲资源响应目标请求。
具体实现中,主机微服根据响应目标请求所需资源量,从资源池中分配线程至目标微服务,目标微服务接收到线程后,启动线程,使线程从可运行状态转变为运行状态,从而执行与目标请求对应的目标任务。
由于第二资源区中的资源分区中的资源量,为满足微服务基本运行所需的最小资源量,而非以最佳状态运行时所需的最大资源量,因此当某一个微服务因为网络延迟等原因处于不可用状态时,对应资源区中的无法被分配的资源也为最小资源,而非最大资源,从而减少了资源的浪费。
通过根据资源配置文件中记录的资源划分信息,划分第二资源区为与微服务对应的资源分区,而非为每个微服务在服务器的内存中创建资源池,来避免服务雪崩现象,可以减少线程在多个线程池中进行切换而带来的计算开销。
本实施例中,通过获取资源配置文件,可以划分目标微服务系统的资源池为第一资源区和第二资源区;当接收到目标请求后,通过判断第一资源池有空闲资源,可以从第一资源区分配空闲资源至与目标请求对应的目标微服务;当判断第一资源区没有空闲资源时,可以根据资源划分信息,确定与目标请求对应的第二资源区中的资源分区;当第二资源区的资源分区中有空闲资源时,可以将资源分区中的空闲资源分配至目标微服务。由于第一资源区内的资源是共享的,优先基于第一资源区给各个微服务分配资源,可以实现资源按需分配,相比传统的针对每个微服务部署对应的资源池,可以避免有些资源池中存在大量空闲资源的情况下而有些微服务的资源需求得不到满足的现象,从而可以提高资源利用率。此外,针对每个微服务预先划分专属的资源分区,当第一资源区中资源无法满足某个微服务的资源需求时可以从相应的资源分区分配资源,如此,即使当某个微服务因为自身不可用而消耗掉第一资源区的所有共享的资源时,其他微服务也可以通过调用对应的资源分区中的资源响应目标请求,确保其他微服务的正常运行,从而避免服务雪崩现象。
在一个实施例中,该方法还包括:确定每个微服务在多个时段所需要的最小资源量;根据多个微服务对应最小资源量之和,将资源池划分为第一资源区和第二资源区;根据每个微服务对应的最小资源量,将第二资源区划分为多个资源分区;基于资源划分信息生成相应时段对应的资源配置文件;获取资源配置文件包括:获取当前时段的资源配置文件。
具体实现中,资源配置文件记录了各个资源的资源标识、所属资源区和所属微服务。目标微服务系统在启动时,根据目标微服务系统的资源量,创建一个资源池,资源池存放有一组资源,各个资源具有资源标识。目标微服务系统并统计各个时段,每个微服务所需要的最小资源量,叠加每个微服务所需要的最小资源量,得到对应的最小资源量之和。根据最小资源量之和,将资源池划分为第一资源区和第二资源区,其中第二资源区中的资源量等于最小资源量之和,并在对应时间段的资源配置文件中记录资源的资源标识,和与资源标识对应的资源区。
目标微服务系统获取每个微服务的最小资源量,并将每个微服务的最小资源量存放在一个数组中。提取数组中的数值,根据数值,划分第二资源区,并在对应时间段的资源配置文件中,记录第二资源区中的资源所属微服务。
例如,目标微系统中在启动时,创建了一个资源池,资源池中具有200个线程。目标微服务系统中具有A、B、C三个微服务,目标微服务获取某一时间段的A、B、C三个微服务所需要的最少线程数为:20、10、30,叠加每个微服务所需的最少线程数,得到最少线程数之和为60。根据最少线程数之和,从线程池中,划分60个线程至第二资源区,剩余线程划分至第一资源区。并在对应时间段的资源配置文件中记录每个线程的线程ID和对应的资源区。目标微服务系统获取A、B、C三个微服务所需要的最少线程数:20、10、30,将最少线程数存放在一个数组中,然后,为第二资源区中的每个线程赋予一个从1开始的连续的序号。目标微服务系统从数组中提取第一个数值:20,根据数值20,可以将序号为1至20的线程划分至与A微服务对应的资源分区,并在对应时段的资源配置文件中,查询与序号为1至20的线程相对应的线程ID,记录与线程ID对应的微服务为A。
上述一种资源分配方法,通过获取各个时间段的每个微服务的最小资源量,和每个微服务的最小资源量之和,生成对应时段的资源配置文件,使后续可以根据资源配置文件划分目标微服务系统的资源池,从而可以让目标微服务系统根据资源使用情况,动态调整目标微服务的资源占有量,进而提升资源利用率。
在一个实施例中,该方法还包括:获取目标微服务系统在统计周期接收到的请求量;根据请求量将统计周期划分为多个时段。
其中,资源划分信息可以是根据在统计周期统计得到的目标微服务系统的请求并发量等请求响应信息,确定的如何对资源池中的资源进行划分管理的信息。根据目标微服务系统在统计周期的不同时间对所接收请求的请求并发程度,可以将统计周期划分为多个时段。
具体实现中,目标微服务系统确定统计周期,并在数据表中记录目标微服务系统在统计周期内接收到的目标请求的请求IP、请求路径和请求时间。统计每个请求IP在每秒钟请求相同路径的次数,当请求次数超过阈值时,判断该请求为恶意请求,并从数据表中删除恶意请求的请求IP、请求路径和请求时间,然后,更新数据表。根据更新后的数据表,确定统计周期内,目标微服务系统接收到的总请求量,和每个单位时间内的请求量,将单位时间请求量除以总请求量,得到单位时间内的请求量占比,根据请求量占比,将请求量占比高的时段确定为目标微服务的访问高峰期,将占比量低的时段确定为访问低谷期,其余时段确定为访问平长期,根据访问高峰期、平常期和低谷期,将统计周期划分为多个时段。
例如,将统计周期设置为一天,单位时间设置为一小时。当目标微服务系统接收到目标请求时,将目标请求的请求IP、请求路径和请求时间记录在数据表中。统计一天内,目标微服务系统接收到的目标请求总数,和每小时内目标微服务系统接收到的目标请求数。根据每小时内的目标请求数在目标请求总数中的占比,确定为确定目标微服务系统的访问高峰期、平常期和低谷期,并根据访问高峰期、平常期和低谷期划分统计周期为三个时段。
上述一种资源分配方法,通过获取各个单位时间的请求量和统计周期内的总请求量,并根据单位时间的请求量在总请求量中的占比,将统计周期划分为多个时段,使得后续可以生成不同时段的资源配置文件,从而可以根据对应时间段的资源配置文件,动态调整每个资源分区的资源量,进而可以确保在不同时间段,目标微服务都可以基于对应资源分区中的资源量,完成基本的运行。
在一个实施例中,该方法还包括:计算每个微服务在多个统计周期同一时段的请求并发量均值;根据请求并发量均值,确定微服务在相应时段需要的最小资源量。
其中,请求并发量为,微服务在单位时间内,同时处理目标请求的个数。
具体实现中,目标微服务系统获取每个微服务在多个统计周期同一时段的请求并发量,并累计请求并发量,得到总请求并发量,将总请求并发量除以多个统计周期数量,得到每个微服务在多个统计周期同一时段的请求并发量均值。获取微服务在处理与请求并发量均值相同的目标请求时,需要的资源量,将此资源量确定为微服务在相应时段需要的最小资源量。
例如,确定多个统计周期为一周,累计一周内,A微服务在每天的10:00至12:00接收到的总请求并发量,将总请求并发量除以一周的天数,得到一周内,A微服务在10:00至12:00的请求并发量均值。更新统计周期至10天,累计10天内,A微服务在每天的10:00至12:00接收到的总请求并发量,并将总请求并发量除以10,得到10天内,A微服务在10:00至12:00的请求并发量均值。将A微服务在10天内的请求并发量均值减去一周内的请求并发量均值,得到请求并发量差值,如果请求并发量差值小于阈值,则确定A微服务在10天内的10:00至12:00的请求并发量均值为最终请求并发量均值。如果请求并发量差值大于阈值,则增加统计周期的数量,直至增加统计周期后的请求并发量均值,减去前一次统计周期内的请求并发量均值的结果小于阈值。
上述一种资源分配方法,通过计算每个微服务的请求并发量均值,并根据请求并发量均值,确定微服务在相应时段需要的最小资源量,使得后续可以根据每个微服务的最小资源量划分第二资源区,从而使得每个微服务即使在抢占不到第一资源区的资源时,也还有少量的保底资源可以调用,从而确保目标微服务系统的基本运行。
在一个实施例中,该方法还包括:当接收到基于目标微服务系统发起的目标请求时,确定目标请求对应的目标微服务;获取目标微服务在目标时段的访问失败次数;比较访问失败次数是否超过阈值;若是,向目标微服务系统返回请求失败提示;否则,向资源池中的第一资源区申请目标微服务所需的空闲资源。
其中,目标时段可以人为设定,通过统计目标时段内的目标请求信息,来判断目标微服务的状态;如默认目标时段为10秒,即统计最近十秒内的目标请求信息。
具体实现中,当目标微服务系统接收到目标请求,从目标请求中提取目标微服名称,根据目标微服务名称,确定目标请求对应的目标微服务。目标微服务系统确定目标时段,并将目标时段内,目标微服务对目标请求的响应结果缓存至数据表中,统计数据表内,响应结果为失败的数量和接收到响应结果的总数量,并将响应结果为失败的数量除以接收到响应结果的总数量,得到失败请求占比,当失败请求占比大于阈值时,判定目标微服务处于不可用状态。当处于不可用状态的目标微服务再次接收到目标请求时,直接返回请求失败信息,不再向目标微服务系统申请资源。经过一段时间后,处于不可用状态的目标微服务自动进入半不可用状态,此时目标微服务系统接收目标请求,并申请空闲资源响应目标请求,如果目标请求的响应结果为成功,则更新目标微服务的状态为正常状态。
上述一种资源分配方法,通过首先判断目标微服务的状态,当目标微服务的状态处于正常状态时,才申请空闲资源,当目标微服务的状态处于不可用状态时,直接返回请求失败信息,从而可以避免目标微服务系统将空闲资源分配至处于不可用状态的目标微服务,进而提升资源利用率。
在一个实施例中,该方法还包括:确定第一资源区当前未被占用的空闲资源总量;比较目标微服务所需的资源量是否超过空闲资源总量;若否,从第一资源区分配相应资源量的空闲资源至目标微服务,并根据分配的资源量对空闲资源总量进行更新。
具体实现中,目标微服务系统获取第一资源区的总资源量,当目标微服务系统首次响应目标微服务的资源申请时,将第一资源区中的空闲资源分配至目标微服务,并记录分配的资源量。当目标微服务系统再次接收到资源申请时,从资源申请中提取目标微服务所需的资源量,并将第一资源区的总资源量减去分配的资源量,得到空闲资源量,比较空闲资源量是否超过目标微服务所需的资源量,如果超过,则向目标微服务分配相应资源量的空闲资源,并更新分配的资源量。
上述一种资源分配方法,通过判断第一资源区中的空闲资源是否超过目标微服务所需要的资源量,如果超过,则将空闲资源分配至目标微服务,使得目标微服务系统可以根据目标微服务所需要的资源量,动态分配资源至目标微服务,提升了资源利用率。
为了便于本领域技术人员的理解,如图3所示,提供一种资源分配的具体流程示意图。当目标微服务接收到目标请求后,目标微服务系统判断是否已划分资源池,如果未划分,则获取配置文件,根据资源配置文件中的资源划分信息划分资源池,如果资源池已被划分,则判断与目标请求对应的目标微服务是否处于可用状态,如果目标微服务处于可用状态,则向第一资源区申请空闲资源,如果第一资源区没有空闲资源则向第二资源区申请空闲资源,当空闲资源申请成功后,更新资源池中的资源占有量,并利用空闲资源响应目标请求。
在一个实施例中,如图4所示,提供了一种资源分配装置,包括:配置文件获取模块410、资源申请模块420、目标请求响应模块430,其中:
配置文件获取模块410,用于获取资源配置文件;资源配置文件包括资源划分信息;
资源申请模块420,用于当接收到基于目标微服务系统发起的目标请求时,根据资源划分信息向资源池中的第一资源区申请空闲资源;当第一资源区不存在空闲资源时,根据资源划分信息在资源池第二资源区中确定目标请求对应的资源分区,向资源分区申请空闲资源;
目标请求响应模块430,用于基于申请到的空闲资源响应目标请求。
在一个实施例中,该装置还包括配置文件生成模块440,用于确定每个微服务在多个时段所需要的最小资源量;根据多个微服务对应最小资源量之和,将资源池划分为第一资源区和第二资源区;根据每个微服务对应的最小资源量,将第二资源区划分为多个资源分区;基于资源划分信息生成相应时段对应的资源配置文件;获取资源配置文件包括:获取当前时段的资源配置文件。
在一个实施例中,该装置还包括统计周期划分模块450,用于获取目标微服务系统在统计周期接收到的请求量;根据请求量将统计周期划分为多个时段。
在一个实施例中,该装置还包括最小资源量统计模块460,用于计算每个微服务在多个统计周期同一时段的请求并发量均值;根据请求并发量均值,确定微服务在相应时段需要的最小资源量。
在一个实施例中,资源申请模块420还包括状态判断模块4201,用于当接收到基于目标微服务系统发起的目标请求时,确定目标请求对应的目标微服务;获取目标微服务在目标时段的访问失败次数;比较访问失败次数是否超过阈值;若是,向目标微服务系统返回请求失败提示;否则,向资源池中的第一资源区申请目标微服务所需的空闲资源。
在一个实施例中,状态判断模块4201还包括空闲资源申请模块4210,用于确定第一资源区当前未被占用的空闲资源总量;比较目标微服务所需的资源量是否超过空闲资源总量;若否,从第一资源区分配相应资源量的空闲资源至目标微服务,并根据分配的资源量对空闲资源总量进行更新。
关于资源分配装置的具体限定可以参见上文中对于资源分配方法的限定,在此不再赘述。上述源分配装置中的各个脚本可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种资源分配方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取资源配置文件;资源配置文件包括资源划分信息;
当接收到基于目标微服务系统发起的目标请求时,根据资源划分信息向资源池中的第一资源区申请空闲资源;
当第一资源区不存在空闲资源时,根据资源划分信息在资源池第二资源区中确定目标请求对应的资源分区,向资源分区申请空闲资源;
基于申请到的空闲资源响应目标请求。
在一个实施例中,目标微服务系统包括多个微服务;处理器执行计算机程序时还实现以下步骤:
确定每个微服务在多个时段所需要的最小资源量;
根据多个微服务对应最小资源量之和,将资源池划分为第一资源区和第二资源区;
根据每个微服务对应的最小资源量,将第二资源区划分为多个资源分区;
基于资源划分信息生成相应时段对应的资源配置文件;
获取资源配置文件包括:获取当前时段的资源配置文件。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取目标微服务系统在统计周期接收到的请求量;
根据请求量将统计周期划分为多个时段。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
计算每个微服务在多个统计周期同一时段的请求并发量均值;
根据请求并发量均值,确定微服务在相应时段需要的最小资源量。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当接收到基于目标微服务系统发起的目标请求时,确定目标请求对应的目标微服务;
获取目标微服务在目标时段的访问失败次数;
比较访问失败次数是否超过阈值;
若是,向目标微服务系统返回请求失败提示;
否则,向资源池中的第一资源区申请目标微服务所需的空闲资源。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
确定第一资源区当前未被占用的空闲资源总量;
比较目标微服务所需的资源量是否超过空闲资源总量;
若否,从第一资源区分配相应资源量的空闲资源至目标微服务,并根据分配的资源量对空闲资源总量进行更新。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取资源配置文件;资源配置文件包括资源划分信息;
当接收到基于目标微服务系统发起的目标请求时,根据资源划分信息向资源池中的第一资源区申请空闲资源;
当第一资源区不存在空闲资源时,根据资源划分信息在资源池第二资源区中确定目标请求对应的资源分区,向资源分区申请空闲资源;
基于申请到的空闲资源响应目标请求。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
确定每个微服务在多个时段所需要的最小资源量;
根据多个微服务对应最小资源量之和,将资源池划分为第一资源区和第二资源区;
根据每个微服务对应的最小资源量,将第二资源区划分为多个资源分区;
基于资源划分信息生成相应时段对应的资源配置文件;
获取资源配置文件包括:获取当前时段的资源配置文件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取目标微服务系统在统计周期接收到的请求量;
根据请求量将统计周期划分为多个时段。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
计算每个微服务在多个统计周期同一时段的请求并发量均值;
根据请求并发量均值,确定微服务在相应时段需要的最小资源量。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当接收到基于目标微服务系统发起的目标请求时,确定目标请求对应的目标微服务;
获取目标微服务在目标时段的访问失败次数;
比较访问失败次数是否超过阈值;
若是,向目标微服务系统返回请求失败提示;
否则,向资源池中的第一资源区申请目标微服务所需的空闲资源。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
确定第一资源区当前未被占用的空闲资源总量;
比较目标微服务所需的资源量是否超过空闲资源总量;
若否,从第一资源区分配相应资源量的空闲资源至目标微服务,并根据分配的资源量对空闲资源总量进行更新。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。