一种从多个资源池动态获取资源的方法及系统与流程

文档序号:29135450发布日期:2022-03-05 01:53阅读:88来源:国知局

1.本发明属于计算机技术领域,具体涉及一种从多个资源池动态获取资源的方法及系统。


背景技术:

2.在某些业务中,经常碰到这样的场景:存在多个容量一致的资源池,我们需要汇总所有资源,然后根据单次请求的资源大小和现有资源的使用情况等因素,对这些资源进行合理的动态编排,计算出当前空闲的资源区间以及每个区间可用的资源数量,然后将计算结果反馈给用户,以供用户从空闲资源列表中按需获取自己想要的资源。常见的场景有:预约场景下的时间资源编排、数据存储时的磁盘空间编排等,针对这些相似场景下的资源分配问题,最普遍的处理方式往往都是在各自的场景中独立实现。这种方式最明显的问题就是重复造轮子,并且无法保证内部实现机制的统一,无法形成可扩展的通用方案。


技术实现要素:

3.本发明的目的在于提供一种从多个资源池动态获取资源的方法及系统,该方法及系统有利于实现固定资源的统一规划及准确编排,保证资源的合理分配。
4.为实现上述目的,本发明采用的技术方案是:一种从多个资源池动态获取资源的方法,包括以下步骤:步骤1、将每个资源池定义为一个集合,其初始状态为空,集合中的每个元素代表该资源池中一个已被占用的资源片段;步骤2、当需要获取某个连续资源片段时,根据该资源片段大小和资源池总量,计算出多个理论可分配资源区间以及每个区间对应的资源数量;步骤3、从理论可分配资源中扣除已被占用的资源,得到实际可分配资源,即所有可分配的资源区间以及每个区间对应的资源数量;步骤4、当用户获取到某个实际可分配的资源后,将该资源片段加入到步骤1中相应的集合,代表该资源池中对应区间的资源已被占用;步骤5、当有其他线程请求新的资源片段时,重复以上步骤,跳过所有已被占用的资源,选择其他实际可用的资源。
5.进一步地,所述多个资源池的总长度一致,其中的资源类型包括系统时间、存储空间;获取某个连续资源片段是指从某个资源池中获取某个连续区间的资源;理论可分配资源是指在资源池全部空闲的情况下,可以分配的资源片段;实际可分配资源是指理论可分配资源扣除实际已分配资源后所剩下的资源片段。
6.进一步地,所述资源池与资源片段的相互关系主要包括:1)每次请求的资源片段可以从不同资源池中获取,一个资源池中可以分配多个不同长度的资源片段;2)由于每次请求的资源片段长度各不相同,在固定的资源池内,有多少个理论可
分配资源片段,主要取决于每次请求的资源片段长度。
7.进一步地,所述步骤2中,计算理论可分配资源区间以及每个区间对应的资源数量的方法为:从起始点开始,以每次申请的资源长度为基本单位,每次累加一个单位,直到超过资源池总长度为止;在这一过程中,每累加一个单位,即为一个理论可分配资源区间;同时,由于同一个资源区间可从不同资源池中获取,因此,有多少个资源池,该资源区间对应的资源数量就有多少个。
8.进一步地,所述步骤3中,从理论可分配资源中扣除已被占用的资源,得到实际可分配资源的具体方法为:将每个区间的理论可分配资源与每个资源池的已分配资源进行对比,如果出现区间上的交叉,说明该资源已被占用,则该区间的可用资源数相应地减1;依此类推,计算出每个区间的实际可分配资源数;如果某个区间的可分配资源数为0,说明该区间的所有资源均已被占用,用户无法再申请该区间内的资源;通过这种方式,最终得到的就是所有的实际可分配的资源区间以及每个区间所对应的资源数量。
9.进一步地,所述步骤1中,将每个资源池定义为一个空的list对象,其中的每个子元素为该资源池中已被占用的资源片段,即从某个资源池中获取到某个资源片段时,就将该资源片段加入到该资源池对应的list对象中;所述步骤2中,理论可用资源情况是指在资源池空闲的情况下,按照当前请求资源片段的大小划分,理论上可划分的资源区间以及每个区间所对应的资源数量,其最终结果也是一个list对象,其中的每个子元素为一个map对象,key为可用资源区间,value为该区间对应的资源数量,初始状态下,value的值即为资源池的数量;所述步骤3中,将步骤2中list对象存储的资源区间与步骤1中每个list对象存储的资源区间进行对比,如果出现区间上的交互,说明该资源区间已被占用,则将步骤2 的list对象中相应区间的可用资源数量减1,最终得到所有实际可用的资源区间及每个区间的可用资源数;这一过程即是对步骤2中的list对象进行数据清洗,过滤掉已被占用的资源区间和资源数。
10.本发明还提供了一种从多个资源池动态获取资源的方法,包括处理器、存储器以及存储在存储器上并能够被处理器运行的计算机程序指令,当处理器运行该计算机程序指令时,能够实现上述的方法步骤。
11.与现有技术相比,本发明具有以下有益效果:该方法及系统将每个资源池抽象化为一个固定长度的资源片段,然后将其中已被占用的区间打上标识,每次请求资源时,即是汇总所有资源池,从中选取出未打上占用标识的连续区间。通过这种方式,避免了同类场景的重复实现,实现了固定资源的动态编排,保证了资源的合理分配,并且可以灵活兼容后续的其他同类场景,无需再重复实现。
附图说明
12.图1是本发明实施例的方法实现流程图。
13.图2是本发明实施例中各资源池的初始分布情况示意图。
14.图3是本发明实施例中初始状态下的理论可用资源情况示意图。
15.图4是本发明实施例中一段时间后各资源池的实际资源情况示意图。
16.图5是本发明实施例中一段时间后实际可分配的资源情况示意图。
具体实施方式
17.下面结合附图及实施例对本发明做进一步说明。
18.应该指出,以下详细说明都是示例性的,旨在对本技术提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本技术所属技术领域的普通技术人员通常理解的相同含义。
19.需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本技术的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
20.如图1所示,本实施例提供了一种从多个资源池动态获取资源的方法,包括以下步骤:步骤1、将每个资源池定义为一个集合,其初始状态为空,集合中的每个元素代表该资源池中一个已被占用的资源片段(每个资源片段大小不一致)。本实施例中,假设有3个资源池,每个资源池分为10个资源区间,由于在最开始之前,所有资源区间都是空闲的,因此,各资源池的初始状态如图2所示。
21.步骤2、当需要获取某个资源区间时,系统根据该资源片段大小和资源池总量,计算出多个理论可分配资源区间以及每个区间对应的资源数量。
22.所述步骤2中,计算理论可分配资源区间以及每个区间对应的资源数量的方法为:从起始点开始,以每次申请的资源长度为基本单位,每次累加一个单位,直到超过资源池总长度为止;在这一过程中,每累加一个单位,即为一个理论可分配资源区间;同时,由于同一个资源区间可从不同资源池中获取,因此,有多少个资源池,该资源区间对应的资源数量就有多少个。
23.本实施例中,假设有a、b两个线程,其请求资源片段的长度分别为1和2,则经过本步骤的计算后,得出两个线程理论可用的资源区间以及每个区间对应的资源数量如图3所示。
24.步骤3、从理论可分配资源中扣除已被占用的资源,得到实际可分配资源,即所有可分配的资源区间以及每个区间对应的资源数量。
25.所述步骤3中,从理论可分配资源中扣除已被占用的资源,得到实际可分配资源的具体方法为:将每个区间的理论可分配资源与每个资源池的已分配资源进行对比,如果出现区间上的交叉,说明该资源已被占用,则该区间的可用资源数相应地减1;依此类推,计算出每个区间的实际可分配资源数;如果某个区间的可分配资源数为0,说明该区间的所有资源均已被占用,用户无法再申请该区间内的资源;通过这种方式,最终得到的就是所有的实际可分配的资源区间以及每个区间所对应的资源数量。
26.本实施例中,假设经过一段时间后,各资源池的资源分布情况如图4所示,则经过本步骤的计算后,得出两个线程实际可用的资源区间以及每个区间对应的资源数量如图5所示。
27.步骤4、当用户获取到某个实际可分配的资源后,将该资源片段加入到步骤1中相应的集合,代表该资源池中对应区间的资源已被占用。
28.本实施例中,其具体过程为:当用户获取到某个具体资源片段后,系统会从各资源
池的空闲资源片段中,筛选出第一个符合要求的资源池和资源片段,并更新该资源池所对应的已占用资源集合,结果如图4所示。
29.步骤5、当有其他线程请求新的资源片段时,重复以上步骤,跳过所有已被占用的资源,选择其他实际可用的资源。
30.在本实施例中,不同线程在请求不同资源片段时,系统都是重复步骤2~4的计算过程,得到所有可用的资源区间和每个区间对应的资源数量,直到所有资源都被用完为止。
31.在本实施例中,所述多个资源池的总长度一致,其中的资源类型包括系统时间、存储空间;获取某个连续资源片段是指从某个资源池中获取某个连续区间的资源,比如:连续的时间段片段或存储空间片段;理论可分配资源是指在资源池全部空闲的情况下,可以分配的资源片段;实际可分配资源是指理论可分配资源扣除实际已分配资源后所剩下的资源片段。所述资源池与资源片段的相互关系主要包括:1)每次请求的资源片段可以从不同资源池中获取,一个资源池中可以分配多个不同长度的资源片段;2)由于每次请求的资源片段长度各不相同,在固定的资源池内,有多少个理论可分配资源片段,主要取决于每次请求的资源片段长度。
32.所述步骤1中,将每个资源池定义为一个集合,其初始状态为空,集合中的每个元素代表该资源池中一个已被占用的资源片段,其内部实现机制为:将每个资源池定义为一个空的list对象,其中的每个子元素为该资源池中已被占用的资源片段,即从某个资源池中获取到某个资源片段时,就将该资源片段加入到该资源池对应的list对象中。
33.所述步骤2中,当需要获取某个连续资源片段时,系统根据该资源片段大小和资源池总量,计算出多个理论可分配的资源区间以及每个区间对应的资源数量,其中的理论可用资源情况是指在资源池空闲的情况下,按照当前请求资源片段的大小划分,理论上可划分的资源区间以及每个区间所对应的资源数量,其最终结果也是一个list对象,其中的每个子元素为一个map对象,key为可用资源区间,value为该区间对应的资源数量,初始状态下,value的值即为资源池的数量。
34.所述步骤3中,从步骤2的理论可分配资源中扣除步骤1中已被占用的资源,得到实际可分配的资源,即所有可分配的资源区间以及每个区间对应的资源数量,具体是指:将步骤2中list对象存储的资源区间与步骤1中每个list对象存储的资源区间进行对比,如果出现区间上的交互,说明该资源区间已被占用,则将步骤2 的list对象中相应区间的可用资源数量减1,最终得到所有实际可用的资源区间及每个区间的可用资源数。这一过程即是对步骤2中的list对象进行数据清洗,过滤掉已被占用的资源区间和资源数。
35.本实施例通过将所有资源池汇总起来,进行统筹管理,然后根据请求资源片段大小和现有资源池使用情况,动态计算出所有空闲的资源区间以及每个区间对应的资源数量,实现了多资源池情况下,请求资源的快速编排与合理分配。
36.本发明针对各类从多个资源池动态获取资源的相似场景,提供了一种从多个资源池动态获取资源的方法及系统,避免了同类场景的重复实现,保证了资源分配的内部过程和最终结果的一致性。本发明最典型的一个应用案例就是政务服务的办事预约场景,在该场景中,政务服务大厅一般会设置多个办事窗口,每个窗口可以办理不同的事项,同一个事项可以在不同窗口办理,每个事项的办理时长也各不相同。群众进行网上预约,实际上就是预约这些窗口的时间资源。本发明通过将所有窗口的时间资源汇总起来,进行统筹管理,在
群众预约不同事项时,系统根据该事项的办理时长和提供办理服务的窗口数量,经过一系列的动态计算过程,筛选出所有空闲的时段和窗口,供群众进行选择。相比通常情况下固定时长和固定数量的号源分配,这种动态编排方式能更加真实的反映不同事项和不同窗口的办理情况,也能更加合理的利用预约的窗口和时间资源,保证了在窗口、事项和办理时长都动态变化的复杂情况下,预约号源的快速编排与合理分配,确保群众在办事预约的过程中,可以实时了解预约资源情况,按需选择办事时间。
37.以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1