一种同步接口上数据的处理方法和系统的制作方法

文档序号:6379014阅读:163来源:国知局
专利名称:一种同步接口上数据的处理方法和系统的制作方法
技术领域
本发明涉及计算机应用领域,尤其涉及一种同步接口上数据的处理方法和系统。
背景技术
为了提高存储网络的可靠性,发展出了多个层次的高可用,其中集群高可用是为了解决节点的单点故障而发展起来的,但多个节点可能会同时访问一个存储设备。需要解决多个节点对单一存储的一致访问为题。在节点上配置缓存模块就是为了解决数据访问的
一致性。对一个存储或存储单元(如存储池)同一时刻只有一个主节点可以访问,其它节点对该存储的访问要转发到存储的主节点,由主节点发起I/o请求,然后将数据发送回给发起请求的节点。各节点的之间相互备份读写数据。缓存模块需要包含存储池用于缓存数据,存储池以页为缓存单元,组织在哈希表中。对节点发送读请求后,节点首先将数据从存储读到缓存的页中,然后将页中数据拷贝的用户缓冲区。对节点的写请求,节点将数据写入缓存页中,并返回。缓存模块会有单独的刷写模块将数据从缓存页刷写到存储。在有些系统中对存储的请求提供了异步读接口,对存储的读写请求完成后会调用之前注册的回调函数。但有些系统并没有提供合适的异步读写接口。

发明内容
本发明提供一种同步接口上数据的处理方法,要解决的技术问题是如何实现在同步接口上实现异步工作。为解决上述技术问题,本发明提供了如下技术方案一种同步接口上数据的处理方法,包括在同步接口接收到数据处理的请求时,确定存储池的缓存单元中该请求所要使用的目标缓存单元;当所述目标缓存单元处于未被其他请求使用的状态时,采用所述目标缓存单元响应所述请求。优选的,所述方法还具有如下特点所述确定存储池的缓存单元中该请求所要使用的目标缓存单元是在检测到所述请求所需使用的第一个缓存单元未被其他请求使用的状态时进行的。优选的,所述方法还具有如下特点所述目标缓存单元是否处于未被其他请求使用的状态是根据所述目标缓存单元上是否有锁定标记来确定的。优选的,所述方法还具有如下特点所述方法还包括如果N个未处理的请求所要使用的目标缓存单元能够组连续的缓存空间,则将所述N个未处理的请求作为一个请求来处理,其中N为大于等于2的整数。一种同步接口上数据的处理系统,包括
3
确定装置,用于在接收到数据处理的请求时,确定存储池的缓存单元中该请求所要使用的目标缓存单元;响应装置,用于当所述目标缓存单元处于未被其他请求使用的状态时,采用所述目标缓存单元响应所述请求。 优选的,所述系统还具有如下特点所述确定装置确定存储池的缓存单元中该请求所要使用的目标缓存单元是在检测到所述请求所需使用的第一个缓存单元未被其他请求使用的状态时进行的。优选的,所述系统还具有如下特点所述目标缓存单元是否处于未被其他请求使用的状态是根据所述目标缓存单元上是否有锁定标记来确定的。优选的,所述系统还具有如下特点所述响应装置,用于如果N个未处理的请求所要使用的目标缓存单元能够组连续的缓存空间,则将所述N个未处理的请求作为一个请求来处理,其中N为大于等于2的整数。与同步接口实现同步操作不同,在实现异步操作时,当同步接口接收到请求后,确定所要使用的目标缓存单元,在目标缓存单元处于未被其他请求使用时再响应该请求,实现了异步通信。


图I为本发明提供的同步接口上数据的处理方法实施例的流程示意图;图2为本发明提供的同步接口上数据的处理方法应用实例的流程示意图;图3为本发明提供的同步接口上数据的处理系统实施例的结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。图I为本发明提供的同步接口上数据的处理方法实施例的流程示意图。图I所示方法实施例包括步骤101和102,其中步骤101、在同步接口接收到数据处理的请求时,确定存储池的缓存单元中该请求所要使用的目标缓存单元;步骤102、当所述目标缓存单元处于未被其他请求使用的状态时,采用所述目标缓存单元响应所述请求。与同步接口实现同步操作不同,在实现异步操作时,当同步接口接收到请求后,确定所要使用的目标缓存单元,在目标缓存单元处于未被其他请求使用时再响应该请求,实现了异步通信。优选的,所述确定存储池的缓存单元中该请求所要使用的目标缓存单元是在检测到所述请求所需使用的第一个缓存单元未被其他请求使用的状态时进行的。即使计算出该请求所对应的目标缓存单元,但是只要该请求所要使用的第一缓存单元不能调用,就不能进行执行后续流程。因此,为了将资源利用到快速处理能够响应的请求上,仅在第一缓存单元处于可用状态时,才进行后续处理。
其中,所述目标缓存单元是否处于未被其他请求使用的状态是根据所述目标缓存单元上是否有锁定标记来确定的。具体来说,一个缓存单元如果被使用,该请求的线程会在缓存单元上增加一个锁定标记,当该线程对该缓存单元的使用结束后,会解除对该缓存单元的锁定,并唤醒其他要使用该缓存单元的其他线程。进一步的,当待处理的请求有多个时,如果多个请求所要使用的缓存单元是相邻的,将相邻请求的缓存单元合并为一个请求来处理。具体来说,如果第一请求所要使用的目标缓存单元和第二请求所要使用的目标缓存单元均处于未被其他请求使用的状态,且所述第一请求和第二请求所要使用的目标缓存单元能组成一段连续的缓存空间,则将所述第一请求和第二请求作为一个请求来处理。举例来说,一个存储池中缓存单元按照从小到大的顺序依次编号,一个请求所要使用的目标缓存单元为编号I 3,另一个请求所要使用的目标缓存单元为编号4和5,两个请求所要使用的目标缓存单元构成一段连续的缓存空间,当所述两个请求所要使用的目标缓存单元均处于能够使用的状态时,则将所述两个请求作为一个请求处理,一次性进行编号I 5的缓存单元的数据处理,将原本需要对两个请求进行读操作,变成了仅需对一个请求进行读操作。当然,同理,如果N个未处理的请求所要使用的目标缓存单元能够组连续的缓存空间,则将所述N个未处理的请求作为一个请求来处理,其中N为大于等于2的整数,从而达到减少读操作次数的效果。下面对本发明方法实施例作进一步说明图2为本发明提供的同步接口上数据的处理方法应用实例的流程示意图。图2所示应用实例包括步骤I 7,其中步骤I、根据接收的请求中数据的起始位置计算第一个缓存单元;例如,一个存储池有编号I 10个缓存单元,其中每个缓存单元的容量相同,根据请求中数据的起始位置,确定从存储池中编号为3的缓存单元开始读取。步骤2、查找所述第一缓存单元是否能够响应该请求;具体来说,如果该第一缓存单元正在被响应其他请求的数据读/写请求,则该第一缓存就不能响应该请求,因此,只能等待正在使用该第一缓存单元的线程结束对该缓存单元的锁定后,才可以使用。其中,如果该第一缓存单元上有锁定标记,则表示该缓存单元处于不可用状态,即无法响应该请求,反之,如果该第一缓存单元没有锁定标记,则表示处于能够被调用的状态,能够响应该请求。如果能响应该请求,则执行步骤3 6 ;否则,执行步骤2。步骤3、根据请求的数据的长度以及缓存单元的容量,计算所需使用的缓存单元的个数。仍以上文所举例子进行说明,根据所请求的数据量,可以确定要使用的缓存单元的个数,如使用3个缓存单元。步骤4、根据第一缓存单元的位置以及所需使用的缓存单元的个数,确定本次请求所使用的目标缓存单元;
仍以上文所举例子进行说明,第一个缓存单元为编号为3的缓存单元,共需使用3个缓存单元,则响应该请求所要使用的缓存单元为编号3 5的缓存单元,即目标缓存单
J Li ο步骤5、判断所述目标缓存单元是否能够响应本次请求;举例来说,如果目标缓存单元(编号为3 5的缓存单元)都没有锁定标记,则表示能够响应本次请求,否则,表示不能响应本次请求。如果能够响应本次请求,则执行步骤6 ;否则,执行步骤5。步骤6、采用所述目标缓存单元进行数据处理。需要说明的是,当有多个请求线程并发进行时,也只有一个线程来进行管理,多个请求将各自需要预处理的缓存单元放到同一个链表中,该线程读需要处理所有请求中所请求的缓存单元。当请求线程处理完第一个缓存单元后,将下一个要要处理的缓存单元作为第一个缓存单元进行以上操作,直处理完所有请求。图3为本发明提供的同步接口上数据的处理系统实施例的结构示意图。结合图I和2所示的方法,图3所示系统实施例包括确定装置301,用于在接收到数据处理的请求时,确定存储池的缓存单元中该请求所要使用的目标缓存单元;响应装置302,用于当所述目标缓存单元处于未被其他请求使用的状态时,采用所述目标缓存单元响应所述请求。其中,所述确定装置301确定存储池的缓存单元中该请求所要使用的目标缓存单元是在检测到所述请求所需使用的第一个缓存单元未被其他请求使用的状态时进行的。其中,所述目标缓存单元是否处于未被其他请求使用的状态是根据所述目标缓存单元上是否有锁定标记来确定的。其中,所述响应装置,用于如果N个未处理的请求所要使用的目标缓存单元能够组连续的缓存空间,则将所述N个未处理的请求作为一个请求来处理,其中N为大于等于2的整数。与同步接口实现同步操作不同,在实现异步操作时,当同步接口接收到请求后,确定所要使用的目标缓存单元,在目标缓存单元处于未被其他请求使用时再响应该请求,实现了异步通信。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
权利要求
1.一种同步接口上数据的处理方法,其特征在于,包括 在同步接口接收到数据处理的请求时,确定存储池的缓存单元中该请求所要使用的目标缓存单元; 当所述目标缓存单元处于未被其他请求使用的状态时,采用所述目标缓存单元响应所述请求。
2.根据权利要求I所述的方法,其特征在于,所述确定存储池的缓存单元中该请求所要使用的目标缓存单元是在检测到所述请求所需使用的第一个缓存单元未被其他请求使用的状态时进行的。
3.根据权利要求I所述的方法,其特征在于,所述目标缓存单元是否处于未被其他请求使用的状态是根据所述目标缓存单元上是否有锁定标记来确定的。
4.根据权利要求I所述的方法,其特征在于,所述方法还包括 如果N个未处理的请求所要使用的目标缓存单元能够组连续的缓存空间,则将所述N个未处理的请求作为一个请求来处理,其中N为大于等于2的整数。
5.一种同步接口上数据的处理系统,其特征在于,包括 确定装置,用于在接收到数据处理的请求时,确定存储池的缓存单元中该请求所要使用的目标缓存单元; 响应装置,用于当所述目标缓存单元处于未被其他请求使用的状态时,采用所述目标缓存单元响应所述请求。
6.根据权利要求5所述的系统,其特征在于,所述确定装置确定存储池的缓存单元中该请求所要使用的目标缓存单元是在检测到所述请求所需使用的第一个缓存单元未被其他请求使用的状态时进行的。
7.根据权利要求5所述的系统,其特征在于,所述目标缓存单元是否处于未被其他请求使用的状态是根据所述目标缓存单元上是否有锁定标记来确定的。
8.根据权利要求5所述的系统,其特征在于 所述响应装置,用于如果N个未处理的请求所要使用的目标缓存单元能够组连续的缓存空间,则将所述N个未处理的请求作为一个请求来处理,其中N为大于等于2的整数。
全文摘要
本发明提供一种同步接口上数据的处理方法和系统。所述方法,包括在同步接口接收到数据处理的请求时,确定存储池的缓存单元中该请求所要使用的目标缓存单元;当所述目标缓存单元处于未被其他请求使用的状态时,采用所述目标缓存单元响应所述请求。
文档编号G06F9/54GK102929727SQ201210396198
公开日2013年2月13日 申请日期2012年10月18日 优先权日2012年10月18日
发明者张在理, 王倩 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1