一种共享资源访问的方法、装置、服务器及介质与流程

文档序号:31707808发布日期:2022-10-01 12:40阅读:56来源:国知局
一种共享资源访问的方法、装置、服务器及介质与流程

1.本技术涉及服务器领域,特别是涉及一种共享资源访问的方法、装置、服务器及介质。


背景技术:

2.企业物理基础设施管理平台是一个面向行业数据中心的硬件智能运维管理平台。平台通过对设备的各种操作实现管理功能,由于不同的操作的步骤和影响范围不同,当多个操作对同一设备进行访问时,有的需要以同步的方式,有的不需要。如,对同一设备的基板管理控制器(baseboard management controller,bmc)配置快照恢复和bmc固件版本升级两个操作需要进行同步控制,两个操作只能先后进行,不能同时进行。
3.当前,企业物理基础设施管理平台对共享资源的同步控制大多通过数据库完成,利用数据库记录共享资源的访问状态,平台在对共享资源进行操作之前会查询共享资源的访问状态,如果没有其他操作访问当前共享资源,则会更新数据库内共享资源的访问状态为占用;如果当前共享资源已被其他操作占用,则当前操作会被阻塞,直到其他操作完成,将资源状态改为空闲。采用基于数据库的共享资源访问控制方式,操作会因为资源被占用而阻塞,长时间得不到执行,产生饥饿问题;在资源释放后,多个操作中的某一个会申请并成功占用资源,不存在保证优先级的机制,无法保证优先级较高的操作优先执行。
4.由此可见,如何解决平台对共享资源的同步控制中产生的饥饿问题以及保证优先级较高的操作优先执行,是本领域技术人员亟需解决的技术问题。


技术实现要素:

5.本技术的目的是提供一种共享资源访问的方法、装置、服务器及介质,用于解决平台对共享资源的同步控制中产生的饥饿问题以及保证优先级较高的操作优先执行。
6.为解决上述技术问题,本技术提供一种共享资源访问的方法,包括:
7.获取企业物理基础设施管理平台的当前操作对待访问的当前资源的租约申请;
8.根据所述租约申请查询所述当前资源的信息;其中,所述当前资源的信息至少包括所述当前资源的占用状态、所述当前资源的租约、访问所述当前资源的优先级队列;
9.若所述当前资源为占用状态且所述当前操作满足预设要求的情况下,将所述当前操作加入所述优先级队列中;
10.获取所述优先级队列中各操作对应的等待时长;
11.获取所述等待时长超过等待阈值的所述操作,提升所述等待时长超过所述等待阈值的所述操作在所述优先级队列中的顺序并获取更新后的所述优先级队列;
12.在所述当前资源为非占用状态的情况下,按照所述更新后的所述优先级队列控制各所述操作访问所述当前资源。
13.优选地,在所述将所述当前操作加入所述优先级队列中之前,所述方法还包括:
14.在所述当前资源为占用状态的情况下,获取占用所述当前资源的第一操作;
15.判断所述第一操作是否为所述当前操作;
16.若是,则控制所述当前操作继续访问所述当前资源;
17.若否,则判断所述当前操作是否满足所述预设要求,在所述当前操作满足所述预设要求的情况下,进入所述将所述当前操作加入所述优先级队列中的步骤。
18.优选地,在所述当前资源为非占用状态且所述当前操作满足所述预设要求的情况下,所述方法还包括:
19.判断所述优先级队列中是否存在待访问所述当前资源的所述操作;
20.若是,则进入所述将所述当前操作加入所述优先级队列中的步骤;
21.若否,则控制所述当前操作访问所述当前资源。
22.优选地,在所述操作结束访问所述当前资源之后,所述方法还包括:
23.接收对所述当前资源的归还申请;
24.获取占用所述当前资源的第二操作;
25.判断所述第二操作是否为当前所述操作;
26.若是,则允许移除所述租约申请;按照所述优先级队列中的顺序依次处理所述优先级队列中的各操作。
27.优选地,所述方法还包括:
28.自所述当前操作访问所述当前资源开始,获取所述当前操作访问所述当前资源的时长;
29.在所述当前操作访问所述当前资源的时长超过所述租约申请中的租约时长且续约的情况下,记录续约的次数;
30.在所述当前操作访问所述当前资源的时长超过所述租约申请中的所述租约时长且不续约的情况下,收回所述当前操作对所述当前资源的占用,并向所述当前操作发出中断请求;判断所述优先级队列中是否存在操作,若存在,则在所述当前操作完全退出对所述当前资源占用的情况下,将所述当前资源分配给所述优先级队列中优先级最高的所述操作。
31.优选地,所述根据所述租约申请查询所述当前资源的信息包括:
32.获取资源列表;其中,所述资源列表中至少包含各资源对应的id、各所述资源的占用状态、各所述资源的租约、访问各所述资源的优先级队列;
33.根据所述租约申请从所述资源列表中查询所述当前资源的信息。
34.优选地,所述方法还包括:
35.在所述资源列表上加锁。
36.为了解决上述技术问题,本技术还提供一种共享资源访问的装置,包括:
37.第一获取模块,用于获取企业物理基础设施管理平台的当前操作对待访问的当前资源的租约申请;
38.查询模块,用于根据所述租约申请查询所述当前资源的信息;其中,所述当前资源的信息至少包括所述当前资源的占用状态、所述当前资源的租约、访问所述当前资源的优先级队列;
39.加入模块,用于若所述当前资源为占用状态且所述当前操作满足预设要求的情况下,将所述当前操作加入所述优先级队列中;
40.第二获取模块,用于获取所述优先级队列中各操作对应的等待时长;
41.第三获取模块,用于获取所述等待时长超过等待阈值的所述操作,提升所述等待时长超过所述等待阈值的所述操作在所述优先级队列中的顺序并获取更新后的所述优先级队列;
42.控制模块,用于在所述当前资源为非占用状态的情况下,按照所述更新后的所述优先级队列控制各所述操作访问所述当前资源。
43.为了解决上述技术问题,本技术还提供一种服务器,包括:
44.存储器,用于存储计算机程序;
45.处理器,用于执行所述计算机程序时实现上述的共享资源访问的方法的步骤。
46.为了解决上述技术问题,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的共享资源访问的方法的步骤。
47.本技术所提供的一种共享资源访问的方法,包括:获取企业物理基础设施管理平台的当前操作对待访问的当前资源的租约申请;根据租约申请查询当前资源的信息;若当前资源为占用状态且当前操作满足预设要求的情况下,将当前操作加入优先级队列中;获取优先级队列中各操作对应的等待时长;获取等待时长超过等待阈值的操作并提升等待时长超过等待阈值的操作在优先级队列中的顺序并获取更新后的优先级队列;在当前资源为非占用状态的情况下,按照更新后的优先级队列控制各操作访问当前资源。由此可见,该方法中对于优先级队列中等待时长超过阈值的操作,提升其在优先级队列中的顺序,防止等待时长超过阈值的操作因长时间等待无法访问到当前资源而产生的饥饿问题;其次,按照更新后的优先级队列控制各操作访问当前资源,使得优先级高的操作能够优先访问到当前资源,提高企业物理基础设施管理平台同步访问共享资源的可靠性。
48.此外,本技术还提供一种共享资源访问的装置、服务器以及计算机可读存储介质,与上述提到的共享资源访问的方法具有相同或相对应的技术特征,效果同上。
附图说明
49.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
50.图1为本技术实施例提供的一种共享资源访问的方法的流程图;
51.图2为本技术的一实施例提供的共享资源访问的装置的结构图;
52.图3为本技术另一实施例提供的服务器的结构图;
53.图4为本技术实施例提供的一种共享资源访问系统。
具体实施方式
54.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本技术保护范围。
55.本技术的核心是提供一种共享资源访问的方法、装置、服务器及介质,用于解决平台对共享资源的同步控制中产生的饥饿问题以及保证优先级较高的操作优先执行。
56.企业物理基础设施管理平台是一个面向行业数据中心的硬件智能运维管理平台。当前,企业物理基础设施管理平台对共享资源的同步控制大多通过数据库完成,利用数据库记录共享资源的访问状态,平台在对共享资源进行操作之前会查询共享资源的访问状态,如果没有其他操作访问当前共享资源,则会更新数据库内共享资源的访问状态为占用;如果当前共享资源已被其他操作占用,则当前操作会被阻塞,直到其他操作完成,将资源状态改为空闲。这种基于数据库的共享资源访问控制方式存在以下问题:一次访问需要查询、修改两次数据库操作,如果两次访问先后读取了当前为空闲的访问状态,都会认为当前共享资源尚未被占用,随后更新数据库记录为占用,开始访问共享资源,导致访问控制失效;访问状态通过外部持久化设备保存,当程序异常退出,或在共享资源访问结束后,操作没有释放资源,更新资源状态为空闲,导致状态锁定,这种情况会使后续的所有访问失败;操作会因为资源被占用而阻塞,资源释放时,有新的操作在被阻塞的操作申请资源之前申请并占用了资源,会导致被阻塞的操作继续阻塞,长时间得不到执行,产生饥饿问题;当多个操作等待同一资源释放,这些阻塞的操作在重要性和优先级上不同,在资源释放后,多个操作中的某一个会申请并成功占用资源,不存在保证优先级的机制,无法保证优先级较高的操作优先执行。因此,本技术实施例中对共享资源设置租约来获取共享资源的访问权限,租约有一定的时效性,系统会在租约到期后自动将其删除,已经获取共享资源租约的客户端操作可以在操作完成后提前结束租约,也可以在操作未完成,但租约到期时选择续约,并且为申请同一共享资源的各个操作建立优先级队列,确保优先级较高的操作优先获取租约,提高长时间等待的操作的优先级,避免某一操作因为长时间获取不到共享资源的访问权限而产生饥饿问题。
57.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。图1为本技术实施例提供的一种共享资源访问的方法的流程图,如图1所示,该方法包括:
58.s10:获取企业物理基础设施管理平台的当前操作对待访问的当前资源的租约申请。
59.当前操作需要访问共享资源时,需要先发出租约申请。在租约申请中包含资源使用者信息、租期开始时间、租期结束时间、延期次数等信息。
60.s11:根据租约申请查询当前资源的信息;其中,当前资源的信息至少包括当前资源的占用状态、当前资源的租约、访问当前资源的优先级队列。
61.在接收到租约申请后,若不能及时对租约进行处理,则可能会导致操作需要等待较长的时间才能访问到共享资源或者即使等待较长的时间也访问不到共享资源。因此,在实施中,在获取到租约申请后,先查询当前共享资源的信息,使得能够及时分析出当前操作是否被允许访问当前资源。
62.s12:若当前资源为占用状态且当前操作满足预设要求的情况下,将当前操作加入优先级队列中。
63.实际中,当前操作发出对当前资源的申请后,当前资源可能正处于占用的状态,也可能处于非占用状态,即为空闲状态。当前操作可能为需要立即访问到当前资源,也可能为
不需要立即访问到当前资源,也就是当前操作可以等待一段时间,只要可以访问到当前资源即可。本实施例中的预设要求指的是当前操作不需要立即访问到当前资源。在当前资源为占用状态且当前操作需要立即访问到当前资源时,若将当前操作加入到优先级队列中则会影响当前操作的进度,因此,本实施例中在当前资源为占用状态且当前操作不需要立即访问到当前资源时,才将当前操作加入到优先级队列中。
64.s13:获取优先级队列中各操作对应的等待时长;
65.s14:获取等待时长超过等待阈值的操作,提升等待时长超过等待阈值的操作在优先级队列中的顺序并获取更新后的优先级队列;
66.s15:在当前资源为非占用状态的情况下,按照更新后的优先级队列控制各操作访问当前资源。
67.从各操作加入优先级队列开始,记录各操作在优先队列中的时长,即为各操作对应的等待时长。在实施中,可以按照固定频率扫描优先级队列,获取优先级队列中的各操作的等待的时长。将得到的各操作的等待时长与阈值进行比较。需要说明的是,多个操作等待时长的阈值可以设置为同一阈值,也可以分别设置对应的阈值,对此不作限定。当选用同一阈值时,如可以根据经验值选取优先级队列中等待时长的平均值作为阈值;当各操作分别对应不同的阈值时,可以根据各操作的重要程度设定对应的阈值。当等待时长超过阈值时,可以提升超过阈值的操作在优先级队列中的优先级,使得等待时长超过阈值的操作能够尽快访问到当前资源,避免长时间的等待产生的饥饿问题。
68.本实施例所提供的共享资源访问的方法,包括:获取企业物理基础设施管理平台的当前操作对待访问的当前资源的租约申请;根据租约申请查询当前资源的信息;若当前资源为占用状态且当前操作满足预设要求的情况下,将当前操作加入优先级队列中;获取优先级队列中各操作对应的等待时长;获取等待时长超过等待阈值的操作并提升等待时长超过等待阈值的操作在优先级队列中的顺序并获取更新后的优先级队列;在当前资源为非占用状态的情况下,按照更新后的优先级队列控制各操作访问当前资源。由此可见,该方法中对于优先级队列中等待时长超过阈值的操作,提升其在优先级队列中的顺序,防止等待时长超过阈值的操作因长时间等待无法访问到当前资源而产生的饥饿问题;其次,按照更新后的优先级队列控制各操作访问当前资源,使得优先级高的操作能够优先访问到当前资源,提高企业物理基础设施管理平台同步访问共享资源的可靠性。
69.在实施中,占用当前资源的操作可能就是当前操作,也可能不是当前操作。为了提高当前操作访问到当前资源的效率,在实施中,优选的实施方式是,在将当前操作加入优先级队列中之前,共享资源访问的方法还包括:
70.在当前资源为占用状态的情况下,获取占用当前资源的第一操作;
71.判断第一操作是否为当前操作;
72.若是,则控制当前操作继续访问当前资源;
73.若否,则判断当前操作是否满足预设要求,在当前操作满足预设要求的情况下,进入将当前操作加入优先级队列中的步骤。
74.若第一操作的申请者就是当前操作的占用者,则直接返回允许继续访问当前资源;若第一操作的申请者不是当前操作的占用者,且当前操作不需要立即访问到当前资源,则可以将当前操作加入到优先级队列中,如果当前操作需要立即访问到当前资源,则直接
返回资源已被占用的信息。
75.本实施例所提供的在将当前操作加入到优先级队列之前,先判断占用当前资源的操作是否为当前操作,如果是当前操作的话允许继续访问当前资源,如果不是当前操作,才将当前操作加入优先级队列中。相比于在判断出当前资源占用的情况下,直接将当前操作加入优先级队列中,本实施例的方法能够提高当前操作访问当前资源的效率。
76.在实施中,当前资源可能为非占用状态的情况,为了提高当前操作访问到当前资源的效率,优选的实施方式是,在当前资源为非占用状态且当前操作满足预设要求的情况下,共享资源访问的方法还包括:
77.判断优先级队列中是否存在待访问当前资源的操作;
78.若是,则进入将当前操作加入优先级队列中的步骤;
79.若否,则控制当前操作访问当前资源。
80.当前资源如果是非占用状态,先判断优先级队列中是否有待访问当前资源的操作,如果有的话,则将当前操作加入到优先级队列中,按照优先级队列中的顺序处理各操作;如果没有的话,直接为当前操作分配当前资源。
81.本实施例所提供在当前资源为非占用状态的情况下,根据优先级队列中的操作来确定对当前操作的处理。在判断出优先级队列中没有操作的情况下,直接为当前操作分配当前资源,相比于未预先判断优先级队列中是否包含待访问当前资源的操作,而先将当前操作加入优先级队列中,再从优先级队列中获取当前操作并为当前操作分配当前资源的方式,本实施例的方法能够提高当前操作访问当前资源的效率。
82.本技术中对共享资源设置租约来获取共享资源的访问权限,在实施中,若当前操作持续发出租约申请,则可能会导致其它操作不能访问到当前资源,因此,对当前资源除了租约申请,还需要有归还申请。优选的实施方式是,在操作结束访问当前资源之后,共享资源访问的方法还包括:
83.接收对当前资源的归还申请;
84.获取占用当前资源的第二操作;
85.判断第二操作是否为当前操作;
86.若是,则允许移除租约申请;按照优先级队列中的顺序依次处理优先级队列中的各操作。
87.当接收到归还申请时,先获取占用当前资源的第二操作,若第二操作就是当前操作,说明此时当前操作正在访问当前资源,若允许移除当前操作,则当前操作访问当前资源被中断,导致当前操作无法完全获取到当前资源;若当前第二操作不是当前操作,说明此时当前操作未访问当前资源,因此在接收到归还申请后,可以移除当前操作的租约申请,并按照优先级队列中的顺序依次处理各操作。需要说明的是,归还申请一般是在当前操作结束访问当前资源后发出的。
88.本实施例所提供的通过归还申请,避免长时间未归还租约,导致当前资源被长时间占用,影响后续操作。
89.当前操作在租约共享资源时,可能会出现当前操作访问当前资源的时长超过租约申请中的租约时长。在超过租约时长后,当前操作可能继续续约或者不续约。对于不同的情况,可以进行不同的处理。在实施中,优选的实施方式是,共享资源访问的方法还包括:
90.自当前操作访问当前资源开始,获取当前操作访问当前资源的时长;
91.在当前操作访问当前资源的时长超过租约申请中的租约时长且续约的情况下,记录续约的次数;
92.在当前操作访问当前资源的时长超过租约申请中的租约时长且不续约的情况下,收回当前操作对当前资源的占用,并向当前操作发出中断请求;判断优先级队列中是否存在操作,若存在,则在当前操作完全退出对当前资源占用的情况下,将当前资源分配给优先级队列中优先级最高的操作。
93.在当前操作访问当前资源的时长超过租约申请中的租约时长的情况下,如果继续续约时,可以记录续约的次数。在实施中,若当前操作续约的次数较多时,可能会导致其它操作需要长时间的等待,影响其它操作的进行。因此,可以对当前操作设置续约的阈值,当超过该阈值后,则不能续约。为了提高访问当前资源的效率,可以只在当前操作第一次申请租约时将当前操作的一些固定的属性信息记录在数据库中,当续约时,可以直接从数据库中调用即可,不需要续约一次记录一次当前操作的一些固定的属性信息。
94.在当前操作访问当前资源的时长超过租约申请中的租约时长的情况下,如果不续约,可以中断当前操作使用当前资源。在中断了当前操作访问当前资源后,如果优先队列中存在操作,则可以在当前操作完全退出对当前资源的占用后,将当前资源分配给优先队列中的优先级最高的操作。
95.本实施例所提供的对于续约的操作以及不续约的操作分别进行不同的处理方式,使得能够根据续约情况调整当前资源的分配情况,使得当前操作或优先级队列中的操作能够访问当前资源。
96.在实施中,可能存在多个操作需要访问当前资源,以及多个操作访问多个共享资源的情况,若不能将各共享资源信息进行整理,则不能及时了解到当前资源的状况。因此,优选的实施方式是,根据租约申请查询当前资源的信息包括:
97.获取资源列表;其中,资源列表中至少包含各资源对应的id、各资源的占用状态、各资源的租约、访问各资源的优先级队列;
98.根据租约申请从资源列表中查询当前资源的信息。
99.资源的信息通过资源列表描述,资源列表可以从指定位置读取,也可以初始为空,在操作首次申请资源的时候加入资源列表。每个资源对应资源列表中的一条记录,包含以下基本信息:资源身份识别号(identity document,id),唯一确定一个资源的标识符;状态,确定资源是否被占用,区分资源读写状态;优先级队列,若当前资源被占用,又有新的操作申请资源,将被加入到优先级队列中;租约,若当前资源被占用,表明资源使用者信息、租期开始时间、租期结束时间、延期次数等信息。当收到租约申请时,查询资源列表即可查看资源的信息。
100.本实施例所提供的将资源信息记录在资源列表中,方便用户查看各共享资源的信息。
101.在租约申请、租约归还、调整优先级队列中,涉及对资源列表的修改,因此需要对这些方法进行同步控制,但将这些方法设置为同步方法会严重影响到共享资源的分配效率,因此,在实施中,优选的实施方式是,共享资源访问的方法还包括:
102.在资源列表上加锁。
103.将锁设置在资源列表上,并且分段加锁,即相同时刻只能一个方法使用同一个共享资源的信息。通过加锁,能够原子性的修改共享资源列表中共享资源访问状态,避免两次访问数据库带来的问题。
104.在上述实施例中,对于一种共享资源访问的方法进行了详细描述,本技术还提供一种共享资源访问的装置、服务器对应的实施例。需要说明的是,本技术从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
105.图2为本技术的一实施例提供的共享资源访问的装置的结构图。本实施例基于功能模块的角度,包括:
106.第一获取模块10,用于获取企业物理基础设施管理平台的当前操作对待访问的当前资源的租约申请;
107.查询模块11,用于根据租约申请查询当前资源的信息;其中,当前资源的信息至少包括当前资源的占用状态、当前资源的租约、访问当前资源的优先级队列;
108.加入模块12,用于若当前资源为占用状态且当前操作满足预设要求的情况下,将当前操作加入优先级队列中;
109.第二获取模块13,用于获取优先级队列中各操作对应的等待时长;
110.第三获取模块14,用于获取等待时长超过等待阈值的操作,提升等待时长超过等待阈值的操作在优先级队列中的顺序并获取更新后的优先级队列;
111.控制模块15,用于在当前资源为非占用状态的情况下,按照更新后的优先级队列控制各操作访问当前资源。
112.由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
113.本实施例所提供的共享资源访问的装置,通过第一获取模块获取企业物理基础设施管理平台的当前操作对待访问的当前资源的租约申请;通过查询模块,根据租约申请查询当前资源的信息;其中,当前资源的信息至少包括当前资源的占用状态、当前资源的租约、访问当前资源的优先级队列;通过加入模块,若当前资源为占用状态且当前操作满足预设要求的情况下,将当前操作加入优先级队列中;通过第二获取模块获取优先级队列中各操作对应的等待时长;通过第三获取模块获取等待时长超过等待阈值的操作,提升等待时长超过等待阈值的操作在优先级队列中的顺序并获取更新后的优先级队列;通过控制模块在当前资源为非占用状态的情况下,按照更新后的优先级队列控制各操作访问当前资源。由此可见,该装置中对于优先级队列中等待时长超过阈值的操作,提升其在优先级队列中的顺序,防止等待时长超过阈值的操作因长时间等待无法访问到当前资源而产生的饥饿问题;其次,按照更新后的优先级队列控制各操作访问当前资源,使得优先级高的操作能够优先访问到当前资源,提高企业物理基础设施管理平台同步访问共享资源的可靠性。
114.图3为本技术另一实施例提供的服务器的结构图。本实施例基于硬件角度,如图3所示,服务器包括:
115.存储器20,用于存储计算机程序;
116.处理器21,用于执行计算机程序时实现如上述实施例中所提到的共享资源访问的方法的步骤。
117.本实施例提供的服务器可以包括但不限于智能手机、平板电脑、笔记本电脑或台
式电脑等。
118.其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(digital signal processor,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图形处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
119.存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的共享资源访问的方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括windows、unix、linux等。数据203可以包括但不限于上述所提到的共享资源访问的方法所涉及到的数据等。
120.在一些实施例中,服务器还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
121.本领域技术人员可以理解,图3中示出的结构并不构成对服务器的限定,可以包括比图示更多或更少的组件。
122.本技术实施例提供的服务器,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:共享资源访问的方法,效果同上。
123.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
124.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
125.本技术提供的计算机可读存储介质包括上述提到的共享资源访问的方法,效果同上。
126.为了使本领域的技术人员更好的理解本技术的技术方案,下面结合附图4对上述本技术作进一步的详细说明。图4为本技术实施例提供的一种共享资源访问系统。该系统包
含租约服务器1、租约客户端2、优先级队列处理器3、租约处理器4。
127.具体地,租约服务器1负责控制某一类资源的同步访问,资源的信息通过资源列表描述。当租约服务器1收到租约客户端2的租约申请时,查询自身的资源列表,根据当前资源状态进行处理:如果资源状态为空闲,则从租约处理器4获取一个新的租约并更新资源记录;如果资源状态为占用,则根据租约客户端2信息进行处理,若申请者就是当前占用者,则直接返回允许,若申请者不是当前占用者,则根据本次请求的阻塞信息确定是否进一步调用优先级队列处理器3进行处理。如果为阻塞申请,则需要调用优先级队列处理器3将客户端加入到资源的优先级队列中,否则直接返回资源已被占用的信息。当租约服务器1收到租约客户端2的归还申请时,首先检查当前租约信息和状态,确定为当前资源占用者的申请操作,则允许,移除当前租约,并调用优先级队列处理器3获取等待资源的租约客户端2,否则拒绝。
128.租约服务器1还运行一个租约维护线程,负责周期性的维护资源列表的租约信息和已占用的资源的优先级队列。对于每个当前状态为占用的资源调用租约处理器4维护租约信息:超期的租约续约,并记录续约次数;为超期且不可延期的租约,收回占用者对资源的占用,并向占用者发出中断请求,如果当前资源的优先级队列中有其他资源申请者,租约服务器1会在检测到占用者完全退出后,则将资源分配给优先级队列中优先级最高的租约客户端2。对于每个已占用的资源调用优先级队列处理器3维护资源的优先级队列:扫描优先级队列,提升等待时间超过阈值的租约客户端2的优先级;对于已经超过设定等待时间的租约客户端2,将其移出优先级队列,然后唤醒对应的租约的客户端。
129.租约客户端2负责代表企业物理基础设施管理平台的各种操作向租约服务器1申请共享资源的访问权限。每次申请资源时,操作都需要新建一个租约客户端2,租约客户端2需要在初始化时传入租约服务器1的引用,并且租约客户端2具有唯一的标识信息,表明某一操作的某一次访问,这些标识信息需要在进行共享资源申请时提交给租约服务器1,便于租约服务器1构建共享资源的租约信息或优先级队列信息。除了标识信息外,租约客户端2还需要存储操作的类型信息,这些类型信息在租约客户端2申请资源,提交给租约服务器1用来决定当前申请在优先级队列中的次序。
130.租约客户端2支持租约的申请、归还操作。当操作需要访问共享资源时,首先构建租约客户端2实例,填充必要的客户端信息,然后调用租约客户端2的申请操作,租约客户端2随后向租约服务器1发起租约申请,如果成功获取租约,操作获准访问共享资源继续执行随后的指令;如果租约申请被拒绝,则根据操作调用的租约客户端2的申请方法类型,操作有不同行为。对于阻塞申请,无论是否有限等待时间,本次申请都会被加入到租约服务器1的优先级队列中,操作被阻塞;对于非阻塞申请,操作立即收到拒绝申请的信息,此时操作可以选择直接向企业物理基础设施管理平台返回资源被占用的信息并中断操作或执行其他的指令。共享资源访问结束后,操作需要通过租约客户端2归还租约,等待租约服务器1将该租约客户端2的租约信息移出。如果没有归还租约,会导致资源长时间占用,并影响后续操作。
131.企业物理基础设施管理平台的操作在访问共享资源,如服务器时,需要在实际操作服务器前,优先创建租约客户端2申请资源的访问权限,在获得访问权限后才能真正执行操作,并且在访问结束后或者操作异常中止时及时调用租约客户端2的租约归还方法归还
租约。
132.为了方案的可扩展性,为基于租约的共享资源访问方案设计了优先级队列处理器3。使用方案的用户可以自定义符合自身应用场景的优先级队列处理器3,只要满足根据传入的客户端操作类型更新租约服务器1的优先级队列,以及被租约服务器1的维护线程调用维护租约服务器1的优先级队列即可。优先级队列处理器3在租约服务器1初始化时创建,由租约服务器1在资源已被占用,且租约客户端2是阻塞申请和租约服务器1的维护线程维护资源的优先级队列的情况下访问。
133.租约服务器1是控制对某一类共享资源的访问,对这类资源的访问的操作类型可能不同,方案默认的优先级队列处理器3,通过内置的列表表明不同类型操作的顺序,如果只有一种操作类型,对外表现为:先申请的租约客户端2先获取资源的访问权限。对于饥饿情况的处理,是在租约服务器1的租约维护线程维护资源的优先级队列时进行的:设置等待时间阈值,超过一定时间提升操作一个等级的优先级。优先级队列处理器3扫描资源的优先级队列,调整队列中的租约客户端2的顺序。对于有限等待时间的阻塞申请,在到达等待时间后,应及时将租约客户端2移出优先级队列,并唤醒相应的租约客户端2。
134.同样为了方案的可扩展性,为整个基于租约的共享资源访问系统设计了租约处理器4。使用方案的用户可以自定义符合自身应用场景的租约处理器4,只要能够根据资源的租约信息以及租约客户端2信息进行操作即可。租约处理器4在租约服务器1初始化时创建,由租约服务器1在新建租约和租约服务器1的维护线程维护租约时访问。
135.方案默认的租约处理器4可以指定一次租约时长、可续约次数、超期自动续约(使用方案的用户也可以实现在距租约到期一定时间时续约)。当租约客户端2申请共享资源,且共享资源还未被占用时,租约服务器1会调用租约处理器4,根据租约客户端2、当前时间等信息新建共享资源的租约,并记录到租约服务器1的资源列表中。租约服务器1的维护线程也会定期扫描已被占用的资源的租约信息,自动延长已经超期的租约,并记录延期次数,当延期次数超过设定次数时,需要收回租约客户端2对资源的占用,并发送中断信息。在检测到租约客户端2退出后(在用线程池实现租约客户端2的场景中,发送中断信息,会导致相应的租约客户端2线程收到中断异常消息,线程池会移出异常的线程,维护线程可以通过检测线程池中对应的线程信息是否还存在来判断租约客户端2是否退出),如果优先级队列中存在其他的资源申请者,将资源分配给优先级队列中优先级最高的资源申请者的租约客户端2。
136.由此可见,该系统中,租约服务器查询内置的资源列表,确定申请的资源的租约信息,并调用租约处理器进行租约处理,租约服务器同时运行一个租约维护线程,租约维护线程负责维护资源列表上的租约信息。租约处理器根据租约客户端信息以及当前资源的租约信息确定租约处理方案。当多租约客户端申请同一资源时,或租约维护线程更新资源列表时,租约服务器将调用优先级队列处理器,对多个租约客户端进行排队。通过本实施例的系统可以提高企业物理基础设施管理平台同步访问共享资源的可靠性,防止多个操作同时更改同一资源导致的资源状态异常。通过为多个阻塞的操作设置优先级队列,并逐步提高长时间等待任务的优先级,实现资源的有序访问,保证高优先级操作优先访问资源同时避免饥饿问题。
137.以上对本技术所提供的一种共享资源访问的方法、装置、服务器及介质进行了详
细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
138.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1