G06F9/46 H04L29/08
1.一种云存储系统中的临界资源管理方法,其特征在于,包括:
当任一进程x需要申请占用任一临界资源y时,与管理节点之间建立会话连接, 建立成功后,向所述管理节点发起占用所述临界资源y的请求;
所述管理节点利用预定值对所保存的所述临界资源y对应的标志位上的值进行置 换;如果置换出来的值与所述预定值相同,则确定所述临界资源y已经被占用,本次 申请失败,并通知所述进程x,否则,确定所述临界资源y未被占用,本次申请成功, 并通知所述进程x。
2.根据权利要求1所述的方法,其特征在于,
该方法进一步包括:
如果本次申请成功,则所述进程x断开所述会话连接,并利用申请到的所述临界 资源y进行相应处理;
如果本次申请失败,则所述进程x断开所述会话连接,并选择再次进行申请或先 进行其它处理。
3.根据权利要求2所述的方法,其特征在于,
该方法进一步包括:
当所述进程x需要释放所述临界资源y时,与所述管理节点之间建立会话连接, 建立成功后,向所述管理节点发起释放所述临界资源y的请求;
所述管理节点将所述临界资源y对应的标志位上的值设置为进行置换之前的值。
4.根据权利要求3所述的方法,其特征在于,
所述与所述管理节点之间建立会话连接之前,进一步包括:
所述进程x确定所述管理节点是否正常,如果是,则与所述管理节点之间建立会 话连接。
5.根据权利要求3所述的方法,其特征在于,
所述管理节点利用预定值对所保存的所述临界资源y对应的标志位上的值进行置 换之前,进一步包括:
所述管理节点设置内存屏障,设置成功后,锁定主板总线,锁定成功后,利用预 定值对所保存的所述临界资源y对应的标志位上的值进行置换;
所述管理节点将所述临界资源y对应的标志位上的值设置为进行置换之前的值之 前,进一步包括:
所述管理节点设置内存屏障,设置成功后,锁定主板总线,锁定成功后,将所述 临界资源y对应的标志位上的值设置为进行置换之前的值。
6.根据权利要求1~5中任一项所述的方法,其特征在于,
所述管理节点的个数为M个,M为正整数;
当所述M的取值大于1时,各管理节点之间通过paxos算法保持一致性。
7.根据权利要求1~5中任一项所述的方法,其特征在于,
该方法进一步包括:当进程之间出现死锁现象时,利用第三方直接进行解除死锁 操作。
8.根据权利要求1~5中任一项所述的方法,其特征在于,
所述预定值为1,所述置换出来的值为1或0。
9.一种云存储系统中的临界资源管理装置,其特征在于,包括:第一处理模块和 第二处理模块;
所述第一处理模块,用于当接收到任一进程x发送来的占用任一临界资源y的请 求时,利用预定值对所述第二处理模块中保存的、所述临界资源y对应的标志位上的 值进行置换;如果置换出来的值与所述预定值相同,则确定所述临界资源y已经被占 用,本次申请失败,并通知所述进程x,否则,确定所述临界资源y未被占用,本次 申请成功,并通知所述进程x。
10.根据权利要求9所述的装置,其特征在于,
所述第一处理模块进一步用于,接收所述进程x发送来的释放所述临界资源y的 请求,将所述第二处理模块中保存的、所述临界资源y对应的标志位上的值设置为进 行置换之前的值。
11.根据权利要求10所述的装置,其特征在于,
所述第一处理模块进一步用于,在利用预定值对所述临界资源y对应的标志位上 的值进行置换之前,设置内存屏障,设置成功后,锁定主板总线,锁定成功后,利用 预定值对所述临界资源y对应的标志位上的值进行置换;
所述第一处理模块进一步用于,在将所述临界资源y对应的标志位上的值设置为 进行置换之前的值之前,设置内存屏障,设置成功后,锁定主板总线,锁定成功后, 将所述临界资源y对应的标志位上的值设置为进行置换之前的值。
12.根据权利要求9~11中任一项所述的装置,其特征在于,
所述预定值为1,所述置换出来的值为1或0。
本发明涉及存储技术,特别涉及一种云存储系统中的临界资源管理方法和装置。
在云存储系统中,对临界资源的申请一般通过分布式锁来完成,分布式锁从单机 锁进化而来。所述云存储系统,是指通过集应用、网络技术和分布式文件系统等, 将网络中大量的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和 业务访问功能的系统。
但是,上述方式在实际应用中会存在一定的问题,如:
针对每个申请占用临界资源的进程(加锁进程),均需要设置有相应的通知接口, 当某一临界资源被释放(解锁)时,需要通过通知接口通知到申请占用该临界资源的 所有进程,以便这些进程通过竞争等,选出一个进程来占用该临界资源;从实现上来 说比较复杂;
另外,针对每个临界资源,会分别对应设置一个等待队列,每个申请占用该临界 资源的进程均会加入到该等待队列中进行等待,这样,当该临界资源被释放时,等待 队列中的所有进程都将会被唤醒去抢占这个临界资源,其中只有一个会抢占成功,其 余继续等待,通常将大量进程同时被唤醒去抢占资源的现象称为惊现象,惊现象 的出现会造成系统性能急剧抖动,即导致系统性能极度不稳定。
有鉴于此,本发明提供了一种云存储系统中的临界资源管理方法和装置,能够降 低实现复杂度,并能够提高系统性能的稳定性。
为了达到上述目的,本发明的技术方案是这样实现的:
一种云存储系统中的临界资源管理方法,包括:
当任一进程x需要申请占用任一临界资源y时,与管理节点之间建立会话连接, 建立成功后,向所述管理节点发起占用所述临界资源y的请求;
所述管理节点利用预定值对所保存的所述临界资源y对应的标志位上的值进行置 换;如果置换出来的值与所述预定值相同,则确定所述临界资源y已经被占用,本次 申请失败,并通知所述进程x,否则,确定所述临界资源y未被占用,本次申请成功, 并通知所述进程x。
一种云存储系统中的临界资源管理装置,包括:第一处理模块和第二处理模块;
所述第一处理模块,用于当接收到任一进程x发送来的占用任一临界资源y的请 求时,利用预定值对所述第二处理模块中保存的、所述临界资源y对应的标志位上的 值进行置换;如果置换出来的值与所述预定值相同,则确定所述临界资源y已经被占 用,本次申请失败,并通知所述进程x,否则,确定所述临界资源y未被占用,本次 申请成功,并通知所述进程x。
可见,本发明所述方案中提供了一种简单的临界资源申请方式,无需设置通知接 口等,从而降低了方案的实现复杂度,而且缩短了申请时间,即减少了时延;另外, 无需设置等待队列,各进程处于自由竞争状态,从而避免了出现惊现象,进而提高 了系统性能的稳定性。
图1为本发明云存储系统中的临界资源管理方法实施例的流程图。
图2为本发明云存储系统中的临界资源申请方法较佳实施例的流程图。
图3为本发明云存储系统中的临界资源释放方法较佳实施例的流程图。
图4为本发明云存储系统中的临界资源管理装置实施例的组成结构示意图。
针对现有技术中存在的问题,本发明中提出了一种无锁的、云存储系统中的临界 资源管理方案,能够降低实现复杂度,并能够提高系统性能的稳定性等。
为了使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明 所述方案作进一步的详细说明。
图1为本发明云存储系统中的临界资源管理方法实施例的流程图。如图1所示, 包括以下步骤11~12。
步骤11:当任一进程x需要申请占用任一临界资源y时,与管理节点之间建立会 话连接,建立成功后,向管理节点发起占用临界资源y的请求。
需要说明的是,本实施例以及随后的各实施例中,用进程x来表示任一进程,用 临界资源y来表示任一临界资源,仅是为了方便表述,并不用于限制本发明的技术方 案。
步骤12:管理节点利用预定值对所保存的临界资源y对应的标志位上的值进行置 换;如果置换出来的值与预定值相同,则确定临界资源y已经被占用,本次申请失败, 并通知进程x,否则,确定临界资源y未被占用,本次申请成功,并通知进程x。
系统进行初始化时,会为每个临界资源分别对应设置一个标志位,初始取值可为 0,表示对应的临界资源未被占用,并可集合所有临界资源的标志位,利用一个 map
后续,根据系统中的临界资源的增删情况,可相应地对两个map进行修改。比如, 当系统中增加了一个新的临界资源时,可将该临界资源的ResID、Flag和ResName之 间的对应关系分别增加到两个map中。
如果进程x本次申请成功,则会断开所述会话连接,并利用申请到的临界资源y 进行后续的相应处理;如果本次申请失败,也会断开所述会话连接,并可选择再次进 行申请或先进行其它处理,待其它处理完成后,再进行申请。
另外,在实际应用中,进程x在与管理节点之间建立会话连接之前,还可先进行 以下处理:进程x确定管理节点是否正常,如果是,则与管理节点之间建立会话连接。
再有,管理节点利用预定值对临界资源y对应的标志位上的值进行置换之前,还 可进一步进行以下处理:管理节点设置内存屏障,设置成功后,锁定主板总线,锁定 成功后,利用预定值对临界资源y对应的标志位上的值进行置换。
假设进程x成功占用了临界资源y,那么后续,当其需要释放临界资源y时,同 样,可与管理节点之间建立会话连接,建立成功后,向管理节点发起释放临界资源y 的请求;相应地,管理节点会将临界资源y对应的标志位上的值设置为进行置换之前 的值,并可在设置成功后,通知进程x。
类似地,进程x在与管理节点之间建立会话连接之前,还可进一步进行以下处理: 进程x确定管理节点是否正常,如果是,则与管理节点之间建立会话连接。
管理节点在将临界资源y对应的标志位上的值设置为进行置换之前的值之前,还 可进一步进行以下处理:管理节点设置内存屏障,设置成功后,锁定主板总线,锁定 成功后,将临界资源y对应的标志位上的值设置为进行置换之前的值。
基于上述介绍,图2为本发明云存储系统中的临界资源申请方法较佳实施例的流 程图。如图2所示,包括以下步骤21~28。
步骤21:进程x需要申请占用临界资源y,与管理节点之间建立会话连接,并确 定是否建立成功,如果是,则执行步骤22,否则,执行步骤27。
假设默认管理节点是正常的。
进程x可通过一个全局唯一句柄来与管理节点之间建立会话连接。
步骤22:管理节点设置内存屏障,并确定是否设置成功,如果是,则执行步骤23, 否则,执行步骤27。
步骤23:管理节点锁定主板总线,并确定是否锁定成功,如果是,则执行步骤24, 否则,执行步骤27。
上述步骤22和23的具体实现均为现有技术。其中,通过设置内存屏障,可使内 存和缓存(Cache)中的数据保持一致,不会因为Cache的存在而影响内存一致性;锁 定主板总线,是为了在多核的系统中,禁止其它CPU核上的进程对同一内存区域进行 不必要的数据交换动作,本质上是一种硬件级别的排它互斥操作。两个步骤的最终目 的均是为了保证同一时刻只有一个进程在对临界资源y进行申请,待该进程处理完成 后,才能进入对另一个进程的操作。
步骤24:管理节点利用预定值1对临界资源y对应的标志位上的值进行置换,并 确定置换出来的值是否等于1,如果是,则执行步骤25,否则,执行步骤26。
步骤25:管理节点确定临界资源y已经被占用,本次申请失败,并通知进程x, 之后执行步骤27。
步骤26:管理节点确定临界资源y未被占用,本次申请成功,并通知进程x,之 后执行步骤28。
可以看出,采用步骤24~26后,能够实现原子交换,即标志位上的值要么改变, 要么不改变,而且能够保证当本次申请失败时,标志位上的值还是原来的值。
举例说明:
假设当临界资源y对应的标志位上的值为1时,表示临界资源y已经被占用,为 0时表示未被占用,那么,管理节点会用预定值1将临界资源y对应的标志位上的值 X置换出来,X可能为1,也可能为0;如果X=1,则说明临界资源y已经被占用,本 次申请失败,由于是用1置换1,所以临界资源y对应的标志位上的值保持不变,如 果X=0,则说明临界资源y未被占用,本次申请成功,相应地,临界资源y对应的标 志位上的值将由0变为1,表示临界资源y已经被占用。
步骤27:进程x断开所述会话连接,并选择再次进行申请或先进行其它处理。
如果选择再次进行申请,那么重复图2所示流程即可。
步骤28:进程x断开所述会话连接,并利用申请到的临界资源y进行相应处理。
图3为本发明云存储系统中的临界资源释放方法较佳实施例的流程图。如图3所 示,包括以下步骤31~36。
步骤31:进程x需要释放临界资源y,与管理节点之间建立会话连接,并确定是 否建立成功,如果是,则执行步骤32,否则,执行步骤36。
假设默认管理节点是正常的。
步骤32:管理节点设置内存屏障,并确定是否设置成功,如果是,则执行步骤33, 否则,执行步骤36。
步骤33:管理节点锁定主板总线,并确定是否锁定成功,如果是,则执行步骤34, 否则,执行步骤36。
步骤34:管理节点将临界资源y对应的标志位上的值设置为0,设置成功,通知 进程x,之后执行步骤35。
步骤35:进程x断开所述会话连接,结束处理。
步骤36:进程x断开所述会话连接,并可再次进行重试。
所述重试即指重复图3所示流程。
需要说明的是,在实际应用中,管理节点的个数为M个,M为正整数,即管理节 点的个数可以为1个,也可以为多个,视实际需要而定。
当管理节点的个数为多个时,各管理节点之间可通过paxos算法保持一致性,具 体实现为现有技术。对于每个进程来说,其不会关注有多少个管理节点,只会关注发 送了请求后,是否处理成功等。
另外,管理节点可记录下每次针对临界资源的申请及释放等的操作流水号,以便 云存储系统打快照,进行系统整体回滚等,并可相应地生成日志,以便进行人工定位 等。
图4为本发明云存储系统中的临界资源管理装置实施例的组成结构示意图。如图 4所示,包括:第一处理模块和第二处理模块;
第一处理模块,用于当接收到任一进程x发送来的占用任一临界资源y的请求时, 利用预定值对第二处理模块中保存的、临界资源y对应的标志位上的值进行置换;如 果置换出来的值与预定值相同,则确定临界资源y已经被占用,本次申请失败,并通 知进程x,否则,确定临界资源y未被占用,本次申请成功,并通知进程x。
其中,第一处理模块可进一步用于,接收进程x发送来的释放临界资源y的请求, 将第二处理模块中保存的、临界资源y对应的标志位上的值设置为进行置换之前的值。
第一处理模块还可进一步用于,在利用预定值对临界资源y对应的标志位上的值 进行置换之前,设置内存屏障,设置成功后,锁定主板总线,锁定成功后,利用预定 值对临界资源y对应的标志位上的值进行置换;
第一处理模块还可进一步用于,在将临界资源y对应的标志位上的值设置为进行 置换之前的值之前,设置内存屏障,设置成功后,锁定主板总线,锁定成功后,将临 界资源y对应的标志位上的值设置为进行置换之前的值。
较佳地,所述预定值为1,所述置换出来的值为1或0。
图4所示装置实施例的具体工作流程请参照前述方法实施例以及较佳实施例中的 相应说明,此处不再赘述。
总之,本发明所述方案中提供了一种简单的、无锁的临界资源申请及释放方式, 从而降低了方案的实现复杂度,并减少了时间消耗;以临界资源的申请为例,按照现 有方式,需要消耗的时间是毫秒级的甚至更长,而采用本发明所述方案后,消耗的时 间通常在纳秒级到微秒级。
另外,本发明所述方案中无需设置等待队列,各进程处于自由竞争状态,从而避 免了出现惊现象,进而提高了系统性能的稳定性。
另外,在实际应用中,进程之间可能会出现死锁现象,具体来说,如果两个进程 同时占有对方需要的临界资源并同时请求对方占用的临界资源,而它们在得到请求的 临界资源之前未释放所占有的临界资源,那么就会导致死锁现象的发生;按照现有方 式,当进程之间出现死锁现象时,必须由第三方来通知到一个持锁进程(即占有临界 资源的进程)进行解锁,而采用本发明所述方案后,当进程之间出现死锁现象时,可 利用第三方直接进行解除死锁操作,即第三方可直接对相应的临界资源进行释放,从 实现上来说更为简单方便;比如,第三方可直接向管理节点发起释放相应的临界资源 的请求,相应地,管理节点可依次进行如下处理:设置内存屏障、锁定主板总线、将 相应的临界资源对应的标志位上的值设置为0等,所述第三方可以是指除死锁的两个 进程以外的一个进程。
再有,按照现有方式,可能会出现活锁现象,即等待队列中的某一进程一直未申 请到所需的临界资源,从而导致该进程的任务一直被推迟,无法得到处理;而采用本 发明所述方案后,由于不存在等待队列,因此避免了活锁现象的出现。
再有,按照现有方式,一个进程一旦加入到等待队列中后,在申请到所需的临界 资源之前,只能一直处于等待状态,而采用本方明所述方案后,每个进程均处于自由 竞争状态,一旦申请失败,可根据自身情况灵活选择后续处理方式,即可选择继续进 行申请,也可选择先进行其它处理,待其它处理完成后,再进行申请等。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。 凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本 发明的保护范围之内。
本文发布于:2023-04-14 07:54:16,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/1/87058.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |