一种云存储系统中的临界资源管理方法和装置的制造方法

文档序号:8380789阅读:514来源:国知局
一种云存储系统中的临界资源管理方法和装置的制造方法
【技术领域】
[0001]本发明涉及存储技术,特别涉及一种云存储系统中的临界资源管理方法和装置。
【背景技术】
[0002]在云存储系统中,对临界资源的申请一般通过分布式锁来完成,分布式锁从单机锁进化而来。所述云存储系统,是指通过集群应用、网络技术和分布式文件系统等,将网络中大量的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的系统。
[0003]但是,上述方式在实际应用中会存在一定的问题,如:
[0004]针对每个申请占用临界资源的进程(加锁进程),均需要设置有相应的通知接口,当某一临界资源被释放(解锁)时,需要通过通知接口通知到申请占用该临界资源的所有进程,以便这些进程通过竞争等,选出一个进程来占用该临界资源;从实现上来说比较复杂;
[0005]另外,针对每个临界资源,会分别对应设置一个等待队列,每个申请占用该临界资源的进程均会加入到该等待队列中进行等待,这样,当该临界资源被释放时,等待队列中的所有进程都将会被唤醒去抢占这个临界资源,其中只有一个会抢占成功,其余继续等待,通常将大量进程同时被唤醒去抢占资源的现象称为惊群现象,惊群现象的出现会造成系统性能急剧抖动,即导致系统性能极度不稳定。

【发明内容】

[0006]有鉴于此,本发明提供了一种云存储系统中的临界资源管理方法和装置,能够降低实现复杂度,并能够提高系统性能的稳定性。
[0007]为了达到上述目的,本发明的技术方案是这样实现的:
[0008]一种云存储系统中的临界资源管理方法,包括:
[0009]当任一进程X需要申请占用任一临界资源y时,与管理节点之间建立会话连接,建立成功后,向所述管理节点发起占用所述临界资源I的请求;
[0010]所述管理节点利用预定值对所保存的所述临界资源y对应的标志位上的值进行置换;如果置换出来的值与所述预定值相同,则确定所述临界资源y已经被占用,本次申请失败,并通知所述进程X,否则,确定所述临界资源y未被占用,本次申请成功,并通知所述进程X。
[0011]一种云存储系统中的临界资源管理装置,包括:第一处理模块和第二处理模块;
[0012]所述第一处理模块,用于当接收到任一进程X发送来的占用任一临界资源y的请求时,利用预定值对所述第二处理模块中保存的、所述临界资源y对应的标志位上的值进行置换;如果置换出来的值与所述预定值相同,则确定所述临界资源y已经被占用,本次申请失败,并通知所述进程X,否则,确定所述临界资源y未被占用,本次申请成功,并通知所述进程X。
[0013]可见,本发明所述方案中提供了一种简单的临界资源申请方式,无需设置通知接口等,从而降低了方案的实现复杂度,而且缩短了申请时间,即减少了时延;另外,无需设置等待队列,各进程处于自由竞争状态,从而避免了出现惊群现象,进而提高了系统性能的稳定性。
【附图说明】
[0014]图1为本发明云存储系统中的临界资源管理方法实施例的流程图。
[0015]图2为本发明云存储系统中的临界资源申请方法较佳实施例的流程图。
[0016]图3为本发明云存储系统中的临界资源释放方法较佳实施例的流程图。
[0017]图4为本发明云存储系统中的临界资源管理装置实施例的组成结构示意图。
【具体实施方式】
[0018]针对现有技术中存在的问题,本发明中提出了一种无锁的、云存储系统中的临界资源管理方案,能够降低实现复杂度,并能够提高系统性能的稳定性等。
[0019]为了使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案作进一步的详细说明。
[0020]图1为本发明云存储系统中的临界资源管理方法实施例的流程图。如图1所示,包括以下步骤11?12。
[0021]步骤11:当任一进程X需要申请占用任一临界资源y时,与管理节点之间建立会话连接,建立成功后,向管理节点发起占用临界资源I的请求。
[0022]需要说明的是,本实施例以及随后的各实施例中,用进程X来表示任一进程,用临界资源y来表示任一临界资源,仅是为了方便表述,并不用于限制本发明的技术方案。
[0023]步骤12:管理节点利用预定值对所保存的临界资源y对应的标志位上的值进行置换;如果置换出来的值与预定值相同,则确定临界资源y已经被占用,本次申请失败,并通知进程X,否则,确定临界资源I未被占用,本次申请成功,并通知进程X。
[0024]系统进行初始化时,会为每个临界资源分别对应设置一个标志位,初始取值可为0,表示对应的临界资源未被占用,并可集合所有临界资源的标志位,利用一个map〈ReSID,Flag〉进行管理,其中,ResID表示临界资源的标识,Flag表示对应的标志位,当然,同时需要用一个map〈 ResID , ResName〉来记录各临界资源的标识与名称(ResName)之间的对应关系。
[0025]后续,根据系统中的临界资源的增删情况,可相应地对两个map进行修改。比如,当系统中增加了一个新的临界资源时,可将该临界资源的ResID、Flag和ResName之间的对应关系分别增加到两个map中。
[0026]如果进程X本次申请成功,则会断开所述会话连接,并利用申请到的临界资源y进行后续的相应处理;如果本次申请失败,也会断开所述会话连接,并可选择再次进行申请或先进行其它处理,待其它处理完成后,再进行申请。
[0027]另外,在实际应用中,进程X在与管理节点之间建立会话连接之前,还可先进行以下处理:进程X确定管理节点是否正常,如果是,则与管理节点之间建立会话连接。
[0028]再有,管理节点利用预定值对临界资源y对应的标志位上的值进行置换之前,还可进一步进行以下处理:管理节点设置内存屏障,设置成功后,锁定主板总线,锁定成功后,利用预定值对临界资源y对应的标志位上的值进行置换。
[0029]假设进程X成功占用了临界资源y,那么后续,当其需要释放临界资源y时,同样,可与管理节点之间建立会话连接,建立成功后,向管理节点发起释放临界资源I的请求;相应地,管理节点会将临界资源I对应的标志位上的值设置为进行置换之前的值,并可在设置成功后,通知进程X。
[0030]类似地,进程X在与管理节点之间建立会话连接之前,还可进一步进行以下处理:进程X确定管理节点是否正常,如果是,则与管理节点之间建立会话连接。
[0031]管理节点在将临界资源y对应的标志位上的值设置为进行置换之前的值之前,还可进一步进行以下处理:管理节点设置内存屏障,设置成功后,锁定主板总线,锁定成功后,将临界资源y对应的标志位上的值设置为进行置换之前的值。
[0032]基于上述介绍,图2为本发明云存储系统中的临界资源申请方法较佳实施例的流程图。如图2所示,包括以下步骤21?28。
[0033]步骤21:进程X需要申请占用临界资源y,与管理节点之间建立会话连接,并确定是否建立成功,如果是,则执行步骤22,否则,执行步骤27。
[0034]假设默认管理节点是正常的。
[0035]进程X可通过一个全局唯一句柄来与管理节点之间建立会话连接。
[0036]步骤22:管理节点设置内存屏障,并确定是否设置成功,如果是,则执行步骤23,否则,执行步骤27。
[0037]步骤23:管理节点锁定主板总线,并确定是否锁定成功,如果是,则执行步骤24,否则,执行步骤27。
[0038]上述步骤22和23的具体实现均为现有技术。其中,通过设置内存屏障,可使内存和缓存(Cache)中的数据保持一致,不会因为Cache的存在而影响内存一致性;锁定主板总线,是为了在多核的系统中,禁止其它CPU核上的进程对同一内存区域进行不必要的数据交换动作,本质上是一种硬件级别的排它互斥操作。两个步骤的最终目的均是为了保证同一时刻只有一个进程在对临界资源y进行申请,待该进程处理完成后,才能进入对另一个进程的操作。
[0039]步骤24:管理节点利用预定值I对临界资源y对应的标志位上的值进行置换,并确定置换出来的值是否等于1,如果是,则执行步骤25,否则,执行步骤26。
[0040]步骤25:管理节点确定临界资源y已经被占用,本次申请失败,并通知进程X,之后执行步骤27。
[0041]步骤26:管理节点确定临界资源y未被占用,本次申请成功,并通知进程X,之后执行步骤28。
[0042]可以看出,采用步骤24?26后,能够实现原子交换,即标志位上的值要么改变,要么不改变,而且能够保证当本次申请失败时,标志位上的值还是原来的值。
[0043]举例说明:
[0044]假设当临界资源y对应的标志位上的值为I时,表示临界资源y已经被占用,为O时表示未被占用,那么,管理节点会用预定值I将临界资源I对应的标志位上的值X置换出来,X可能为1,也可能为O;如果X=l,则说明临界资源y已经被占用,本次申请失败,由于是用I置换1,所以临界资源I对应的标志位上的值保持不变,如果X=0,则说明临界资源y未被占用,本次申请成功,相应地,临界资源I对应的标志位上的值将由O变为1,表示临界资源y已经被占用。
[0045]步骤27:进程X断开所述会话连接,并选择再次进行申请或先进行其它处理。
[0046]如果选择再次进行申请,那么重复图2所示流程即可。
[0047]步骤28:进程X断开所述会话连接,并利用申请到的临界资源y进行相应处理。
[0048]图3为本发明云存储系统中的临界资源释放方法较佳实施例的流程图。如图3所示,包括以下步骤31?36。
[0049]步骤31:进程X需要释放临界资源1,与管理节点之间建立会话连接,并确定
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1