一种数据存储控制方法及装置转让专利

申请号 : CN201910914315.X

文献号 : CN110647298B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邸忠辉

申请人 : 苏州浪潮智能科技有限公司

摘要 :

本发明提供一种数据存储控制方法、装置及系统,主存储设备在接收到客户端发送的待存储数据后,主存储设备将待存储数据存储到主存储设备的第一存储介质中,并基于待存储数据更新主存储设备对应的第一同步链表,主存储设备将待存储数据存储到主存储设备的第二存储介质中,以完成待存储数据在主存储设备中的存储。第一同步链表用于指示主存储设备从第一存储介质中获取待存储数据,以使得从存储设备依次存储待存储数据,这样对于存储同一份待存储数据的主存储设备和所有从存储设备来说,每次仅有一个存储设备存储待存储数据,降低负载压力,在主存储设备或从存储设备存储待存储数据时不会受到其他设备存储的影响,提高存储速度以及系统性能。

权利要求 :

1.一种数据存储控制方法,其特征在于,所述方法包括:

主存储设备接收客户端发送的待存储数据;

所述主存储设备将所述待存储数据存储到所述主存储设备的第一存储介质中;

所述主存储设备基于所述待存储数据更新所述主存储设备对应的第一同步链表,所述第一同步链表用于指示将所述待存储数据依次存储到从存储设备中;

所述主存储设备将所述第一存储介质存储的所述待存储数据存储到所述主存储设备的第二存储介质中,以完成待存储数据在所述主存储设备中的存储;

所述主存储设备扫描所述第一同步链表,确定存储所述待存储数据的从存储设备;

所述主存储设备监测所述从存储设备中是否有处于空闲状态的第一从存储设备,如果有,所述主存储设备向所述第一从存储设备发送所述待存储数据,如果没有,所述主存储设备等待所述从存储设备中出现处于空闲状态的第一从存储设备;

其中,所述主存储设备监测所述从存储设备中是否有处于空闲状态的第一从存储设备,如果有,所述主存储设备向所述第一从存储设备发送所述待存储数据,如果没有,所述主存储设备等待所述从存储设备中出现处于空闲状态的第一从存储设备包括:所述主存储设备对从存储设备的状态依次进行监测;

如果在依次监测过程中存在处于空闲状态的第一从存储设备,则向所述第一从存储设备发送所述待存储数据;

如果在依次监测过程中所述第一从存储设备处于繁忙状态,则跳过所述第一从存储设备;

所述主存储设备在向从存储设备中的其他处于空闲状态的从存储设备发送所述待存储数据后,若监测出所述第一从存储设备处于空闲状态,向所述第一从存储设备发送所述待存储数据。

2.根据权利要求1所述的方法,其特征在于,所述主存储设备向所述第一从存储设备发送所述待存储数据包括:所述主存储设备从所述第一存储介质或所述第二存储介质中获取所述待存储数据,并将所获取的待存储数据发送给所述第一从存储设备。

3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:

所述第一从存储设备接收所述主存储设备发送的所述待存储数据;

所述第一从存储设备将所述待存储数据存储到所述第一从存储设备的第一存储介质中;

如果所述第一从存储设备不是最后一个存储所述待存储数据的设备,所述第一从存储设备基于所述待存储数据更新所述第一从存储设备对应的第二同步链表,并将所述第一从存储设备的第一存储介质存储的所述待存储数据存储到所述第一从存储设备的第二存储介质中,所述第二同步链表用于指示将所述待存储数据依次存储到所述从存储设备的其他从存储设备中;

如果所述第一从存储设备是最后一个存储所述待存储数据的设备,所述第一从存储设备将所述第一从存储设备的第一存储介质存储的所述待存储数据存储到所述第一从存储设备的第二存储介质中,以完成待存储数据在所述第一从存储设备中的存储。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

所述第一从存储设备监控所述第一从存储设备的第二存储介质存储待存储数据的存储情况;

如果所述存储情况表明所述第一从存储设备成功存储,所述第一从存储设备向所述主存储设备发送存储成功响应指令;

所述主存储设备在接收到所述存储成功响应指令后,将所述第一同步链表中与所述待存储数据相关的数据删除;

如果所述存储情况表明所述第一从存储设备存储失败,所述第一从存储设备向所述主存储设备发送存储失败响应指令;

所述主存储设备在接收到存储失败响应指令后,重新扫描所述第一同步链表。

5.根据权利要求3所述的方法,其特征在于,所述方法还包括:

所述第一从存储设备扫描所述第二同步链表,以确定所述从存储设备中存储所述待存储数据的其他从存储设备;

所述第一从存储设备监测所述其他从存储设备中是否有处于空闲状态的第二从存储设备,如果有,所述第一从存储设备向所述第二从存储设备发送所述待存储数据,如果没有,所述第一从存储设备等待所述其他从存储设备中出现处于空闲状态的第二从存储设备。

6.根据权利要求5所述的方法,其特征在于,所述第一从存储设备监测所述其他从存储设备中是否有处于空闲状态的第二从存储设备,如果有,所述第一从存储设备向所述第二从存储设备发送所述待存储数据,如果没有,所述第一从存储设备等待所述其他从存储设备中出现处于空闲状态的第二从存储设备包括:所述第一从存储设备对所述其他从存储设备的状态依次进行监测;

如果在依次监测过程中存在处于空闲状态的第二从存储设备,则向所述第二从存储设备发送所述待存储数据;

如果在依次监测过程中所述第二从存储设备处于繁忙状态,则跳过所述第二从存储设备;

所述第一从存储设备在向其他从存储设备中的其他处于空闲状态的从存储设备发送所述待存储数据后,若监测出所述第二从存储设备处于空闲状态向所述第二从存储设备发送所述待存储数据。

7.一种主存储设备,其特征在于,所述主存储设备包括:处理器、第一存储介质和第二存储介质;

所述处理器,用于接收客户端发送的待存储数据,将所述待存储数据存储到所述第一存储介质中;基于所述待存储数据更新所述主存储设备对应的同步链表,所述主存储设备对应的同步链表用于指示将所述待存储数据依次存储到从存储设备中;将所述第一存储介质存储的所述待存储数据存储到所述第二存储介质中,以完成待存储数据在所述主存储设备中的存储;

所述处理器,还用于扫描所述同步链表,确定存储所述待存储数据的从存储设备;监测所述从存储设备中是否有处于空闲状态的第一从存储设备,如果有,向所述第一从存储设备发送所述待存储数据,如果没有,等待所述从存储设备中出现处于空闲状态的第一从存储设备;

其中,监测所述从存储设备中是否有处于空闲状态的第一从存储设备,如果有,向所述第一从存储设备发送所述待存储数据,如果没有,等待所述从存储设备中出现处于空闲状态的第一从存储设备包括:对从存储设备的状态依次进行监测;如果在依次监测过程中存在处于空闲状态的第一从存储设备,则向所述第一从存储设备发送所述待存储数据;如果在依次监测过程中所述第一从存储设备处于繁忙状态,则跳过所述第一从存储设备;在向从存储设备中的其他处于空闲状态的从存储设备发送所述待存储数据后,若监测出所述第一从存储设备处于空闲状态,向所述第一从存储设备发送所述待存储数据。

8.一种从存储设备,其特征在于,所述从存储设备包括:处理器、第一存储介质和第二存储介质;

所述处理器,用于接收主存储设备或其他从存储设备发送的待存储数据,将所述待存储数据存储到所述第一存储介质中;如果所述从存储设备是最后一个存储所述待存储数据的设备,将所述第一存储介质中存储的所述待存储数据存储到所述第二存储介质中,以完成待存储数据在所述从存储设备中的存储;如果所述从存储设备不是最后一个存储所述待存储数据的设备,基于所述待存储数据更新所述从存储设备对应的同步链表,所述从存储设备对应的同步链表用于指示将所述待存储数据依次存储到其他从存储设备中,并将所述第一存储介质中存储的所述待存储数据存储到所述第二存储介质中;

其中所述主存储设备,用于扫描第一同步链表,确定存储所述待存储数据的从存储设备,所述第一同步链表用于指示将所述待存储数据依次存储到从存储设备中;监测所述从存储设备中是否有处于空闲状态的第一从存储设备,如果有,所述主存储设备向所述第一从存储设备发送所述待存储数据,如果没有,所述主存储设备等待所述从存储设备中出现处于空闲状态的第一从存储设备;

所述监测所述从存储设备中是否有处于空闲状态的第一从存储设备,如果有,所述主存储设备向所述第一从存储设备发送所述待存储数据,如果没有,所述主存储设备等待所述从存储设备中出现处于空闲状态的第一从存储设备包括:所述主存储设备对从存储设备的状态依次进行监测;

如果在依次监测过程中存在处于空闲状态的第一从存储设备,则向所述第一从存储设备发送所述待存储数据;

如果在依次监测过程中所述第一从存储设备处于繁忙状态,则跳过所述第一从存储设备;

所述主存储设备在向从存储设备中的其他处于空闲状态的从存储设备发送所述待存储数据后,若监测出所述第一从存储设备处于空闲状态,向所述第一从存储设备发送所述待存储数据。

说明书 :

一种数据存储控制方法及装置

技术领域

[0001] 本发明属于数据处理技术领域,尤其涉及一种数据存储控制方法及装置。

背景技术

[0002] 目前为了保证数据的安全性,数据以冗余方式存储,所谓冗余方式是在至少两个存储设备的存储介质中存储同一份数据(该同一份数据可以是一条数据切分后的数据块或切分前的数据),如现有三副本数据存储方式,三副本数据存储方式是将同一份数据在三个存储设备的存储介质中存储,三个存储设备中一个为主存储设备,另外两个为从存储设备,这样当一个存储设备或一个存储设备的存储介质故障时,可以通过其他节点存储的数据进行修复。
[0003] 虽然通过冗余方式可以提高数据的安全性,但是在多个存储设备中存储同一份数据会提高负载压力,这样向多个存储设备写数据的过程中会降低存储速度,进而影响系统性能。

发明内容

[0004] 有鉴于此,本发明的目的在于提供一种数据存储控制方法及装置,用于降低负载压力,以提高存储速度和系统性能。技术方案如下:
[0005] 本发明提供一种数据存储控制方法,所述方法包括:
[0006] 主存储设备接收客户端发送的待存储数据;
[0007] 所述主存储设备将所述待存储数据存储到所述主存储设备的第一存储介质中;
[0008] 所述主存储设备基于所述待存储数据更新所述主存储设备对应的第一同步链表,所述第一同步链表用于指示将所述待存储数据依次存储到从存储设备中;
[0009] 所述主存储设备将所述第一存储介质存储的所述待存储数据存储到所述主存储设备的第二存储介质中,以完成待存储数据在所述主存储设备中的存储。
[0010] 优选的,所述方法还包括:
[0011] 所述主存储设备扫描所述第一同步链表,确定存储所述待存储数据的从存储设备;
[0012] 所述主存储设备监测所述从存储设备中是否有处于空闲状态的第一从存储设备,如果有,所述主存储设备向所述第一从存储设备发送所述待存储数据,如果没有,所述主存储设备等待所述从存储设备中出现处于空闲状态的第一从存储设备。
[0013] 优选的,所述主存储设备判断所述从存储设备中是否有处于空闲状态的第一从存储设备,如果有,所述主存储设备向所述处于空闲状态的第一从存储设备发送所述待存储数据,如果没有,所述主存储设备等待所述从存储设备中出现处于空闲状态的第一从存储设备包括:
[0014] 所述主存储设备对从存储设备的状态依次进行监测;
[0015] 如果在依次监测过程中存在处于空闲状态的第一从存储设备,则向所述第一从存储设备发送所述待存储数据;
[0016] 如果在依次监测过程中所述第一从存储设备处于繁忙状态,则跳过所述第一从存储设备;
[0017] 所述主存储设备在向从存储设备中的其他处于空闲状态的从存储设备发送所述待存储数据后,若监测出所述第一从存储设备处于空闲状态向所述第一从存储设备发送所述待存储数据。
[0018] 优选的,所述主存储设备向所述处于空闲状态的第一从存储设备发送所述待存储数据包括:所述主存储设备从所述第一存储介质或所述第二存储介质中获取所述待存储数据,并将所获取的待存储数据发送给所述第一从存储设备。
[0019] 优选的,所述方法还包括:
[0020] 所述第一从存储设备接收所述主存储设备发送的所述待存储数据;
[0021] 所述第一从存储设备将所述待存储数据存储到所述第一从存储设备的第一存储介质中;
[0022] 如果所述第一从存储设备不是最后一个存储所述待存储数据的设备,所述第一从存储设备基于所述待存储数据更新所述第一从存储设备对应的第二同步链表,并将所述第一从存储设备的第一存储介质存储的所述待存储数据存储到所述第一从存储设备的第二存储介质中,所述第二同步链表用于指示将所述待存储数据依次存储到所述从存储设备的其他从存储设备中;
[0023] 如果所述第一从存储设备是最后一个存储所述待存储数据的设备,所述第一从存储设备将所述第一从存储设备的第一存储介质存储的所述待存储数据存储到所述第一从存储设备的第二存储介质中,以完成待存储数据在所述第一从存储设备中的存储。
[0024] 优选的,所述方法还包括:
[0025] 所述第一从存储设备监控所述第一从存储设备的第二存储介质存储待存储数据的存储情况;
[0026] 如果所述存储情况表明所述第一从存储设备成功存储,所述第一从存储设备向所述主存储设备发送存储成功响应指令;
[0027] 所述主存储设备在接收到所述存储成功响应指令后,将所述第一同步链表中与所述待存储数据相关的数据删除;
[0028] 如果所述存储情况表明所述第一从存储设备存储失败,所述第一从存储设备向所述主存储设备发送存储失败响应指令;
[0029] 所述主存储设备在接收到存储失败响应指令后,重新扫描所述第一同步链表。
[0030] 优选的,所述方法还包括:
[0031] 所述第一从存储设备扫描所述第二同步链表,以确定所述从存储设备中存储所述待存储数据的其他从存储设备;
[0032] 所述第一从存储设备监测所述其他从存储设备中是否有处于空闲状态的第二从存储设备,如果有,所述第一从存储设备向所述第二从存储设备发送所述待存储数据,如果没有,所述第一从存储设备等待所述其他从存储设备中出现处于空闲状态的第二从存储设备。
[0033] 优选的,所述第一从存储设备监测所述其他从存储设备中是否有处于空闲状态的第二从存储设备,如果有,所述第一从存储设备向所述第二从存储设备发送所述待存储数据,如果没有,所述第一从存储设备等待所述其他从存储设备中出现处于空闲状态的第二从存储设备包括:
[0034] 所述第一从存储设备对所述其他从存储设备的状态依次进行监测;
[0035] 如果在依次监测过程中存在处于空闲状态的第二从存储设备,则向所述第二从存储设备发送所述待存储数据;
[0036] 如果在依次监测过程中所述第二从存储设备处于繁忙状态,则跳过所述第二从存储设备;
[0037] 所述第一从存储设备在向其他从存储设备中的其他处于空闲状态的从存储设备发送所述待存储数据后,若监测出所述第二从存储设备处于空闲状态向所述第二从存储设备发送所述待存储数据。
[0038] 优选的,所述方法还包括:
[0039] 所述第二从存储设备接收所述第一从存储设备发送的所述待存储数据;
[0040] 所述第二从存储设备将所述待存储数据存储到所述第二从存储设备的第一存储介质中;
[0041] 如果所述第二从存储设备是最后一个存储所述待存储数据的设备,所述第二从存储设备将所述第二从存储设备的第一存储介质中存储的所述待存储数据存储到所述第二从存储设备的第二存储介质中,以完成待存储数据在所述第二从存储设备中的存储;
[0042] 如果所述第二从存储设备不是最后一个存储所述待存储数据的设备,所述第二从存储设备基于所述待存储数据更新所述第二从存储设备对应的第三同步链表,所述第三同步链表用于指示将所述待存储数据依次存储到其他从存储设备中,并将所述第二从存储设备的第一存储介质中存储的所述待存储数据存储到所述第二从存储设备的第二存储介质中。
[0043] 优选的,所述方法还包括:
[0044] 所述第二从存储设备监控所述第二从存储设备的第二存储介质存储所述待存储数据的存储情况;
[0045] 如果所述存储情况表明所述第二从存储设备成功存储,所述第二从存储设备向所述第一从存储设备发送存储成功响应指令;
[0046] 所述第一从存储设备在接收到所述存储成功响应指令后,将所述第二同步链表中与所述待存储数据相关的数据删除;
[0047] 如果所述存储情况表明所述第二从存储设备存储失败,所述第二从存储设备向所述第一从存储设备发送存储失败响应指令;
[0048] 所述第一从存储设备在接收到存储失败响应指令后,重新扫描所述第二同步链表。
[0049] 本发明还提供一种主存储设备,所述主存储设备包括:处理器、第一存储介质和第二存储介质;
[0050] 所述处理器,用于接收客户端发送的待存储数据,将所述待存储数据存储到所述第一存储介质中;基于所述待存储数据更新所述主存储设备对应的同步链表,所述主存储设备对应的同步链表用于指示将所述待存储数据依次存储到从存储设备中;将所述第一存储介质存储的所述待存储数据存储到所述第二存储介质中,以完成待存储数据在所述主存储设备中的存储。
[0051] 本发明还提供一种从存储设备,所述从存储设备包括:处理器、第一存储介质和第二存储介质;
[0052] 所述处理器,用于接收所述主存储设备或其他从存储设备发送的所述待存储数据,将所述待存储数据存储到所述第一存储介质中;如果所述从存储设备是最后一个存储所述待存储数据的设备,将所述第一存储介质中存储的所述待存储数据存储到所述第二存储介质中,以完成待存储数据在所述从存储设备中的存储;如果所述从存储设备不是最后一个存储所述待存储数据的设备,基于所述待存储数据更新所述从存储设备对应的同步链表,所述从存储设备对应的同步链表用于指示将所述待存储数据依次存储到其他从存储设备中,并将所述第一存储介质中存储的所述待存储数据存储到所述第二存储介质中。
[0053] 本发明还提供一种数据存储控制系统,所述系统包括:主存储设备和至少一个从存储设备;
[0054] 所述主存储设备,用于接收客户端发送的待存储数据,将所述待存储数据存储到所述主存储设备的第一存储介质中;基于所述待存储数据更新所述主存储设备对应的第一同步链表,所述第一同步链表用于指示将所述待存储数据依次存储到从存储设备中;将所述主存储设备的第一存储介质中存储的待存储数据存储到所述主存储设备的第二存储介质中,以完成待存储数据在所述主存储设备中的存储;
[0055] 所述至少一个从存储设备中的任一从存储设备,用于接收所述主存储设备或其他从存储设备发送的所述待存储数据,将所述待存储数据存储到该从存储设备的第一存储介质中;如果该从存储设备是最后一个存储所述待存储数据的设备,将该从存储设备的第一存储介质中存储的待存储数据存储到该从存储设备的第二存储介质中,以完成待存储数据在该从存储设备中的存储;如果该第二从存储设备不是最后一个存储所述待存储数据的设备,基于所述待存储数据更新该从存储设备对应的第二同步链表,所述第二同步链表用于指示将所述待存储数据依次存储到其他从存储设备中,并将该从存储设备的第一存储介质中存储的待存储数据存储到该从存储设备的第二存储介质中。
[0056] 从上述技术方案可知,主存储设备在接收到客户端发送的待存储数据后,主存储设备将待存储数据存储到主存储设备的第一存储介质中,并基于待存储数据更新主存储设备对应的第一同步链表,主存储设备将第一存储介质中存储的待存储数据存储到主存储设备的第二存储介质中,以完成待存储数据在主存储设备中的存储。第一同步链表用于指示主存储设备从第一存储介质中获取待存储数据,以使得从存储设备依次存储待存储数据,这样对于存储同一份待存储数据的主存储设备和所有从存储设备来说,每次仅有一个存储设备存储待存储数据,降低负载压力,在主存储设备或从存储设备存储待存储数据时不会受到其他设备存储的影响,提高存储速度以及系统性能。

附图说明

[0057] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0058] 图1是本发明实施例提供的一种数据存储控制方法的流程图;
[0059] 图2是本发明实施例提供的另一种数据存储控制方法的信令图;
[0060] 图3是本发明实施例提供的再一种数据存储控制方法的信令图;
[0061] 图4是本发明实施例提供的一种数据存储控制方法的示例图;
[0062] 图5是本发明实施例提供的主存储设备的结构示意图;
[0063] 图6是本发明实施例提供的从存储设备的结构示意图。

具体实施方式

[0064] 目前主存储设备和从存储设备存储同一个待存储数据时,主存储设备和从存储设备同时存储会增大负载压力,且主存储设备和从存储设备同时存储时会相互影响,由此主存储设备和从存储设备同时存储待存储数据会降低存储速度和系统性能。
[0065] 本实施例提供的数据存储控制方法能够控制主存储设备和从存储设备依次存储待存储数据,使得每次仅有一个存储设备进行数据存储操作,降低负载压力,以提高存储速度和系统性能。
[0066] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0067] 请参阅图1,其示出了本发明实施例提供的一种数据存储控制方法,可以包括以下步骤:
[0068] 101:主存储设备接收客户端发送的待存储数据。可以理解的是:客户端是一个用于发起数据请求的设备,其可以是终端、服务器和处于网络环境中的任一节点,以通过主存储设备和从存储设备实现对客户端发送的待存储数据的冗余存储。其中主存储设备和客户端交互待存储数据的过程可以参照现有方式,对此本实施例不再阐述。
[0069] 102:主存储设备将待存储数据存储到主存储设备的第一存储介质中。
[0070] 其中主存储设备的第一存储介质用于暂时存储待存储数据,且主存储设备的第一存储介质可以是一读写速率高的存储介质,例如第一存储介质可以是主存储介质的缓存,这样主存储设备接收到待存储数据之后可以快速写入(即存储)到第一存储介质中,减少对客户端和主存储介质之间的通信链路的占用。并且将读写速率高的存储介质作为第一存储介质还可以提高主存储设备向从存储设备发送待存储数据的效率。
[0071] 在这里需要说明的一点是:主存储设备可能会同时接收到至少两个客户端发送的待存储数据,那么主存储设备在发送待存储数据给从存储数据时,该从存储设备是与主存储设备存储同一份待存储数据的。
[0072] 103:主存储设备基于待存储数据更新主存储设备对应的第一同步链表,第一同步链表用于指示将待存储数据依次存储到从存储设备中,以通过第一同步链路可以确定用于存储待存储数据的从存储设备,以防止不同从存储设备同时存储待存储数据。
[0073] 例如基于待存储数据更新主存储设备对应的第一同步链表的过程如下:
[0074] 获取待存储数据的存储指针以及获取从存储设备的标识信息,将存储指针以及从存储设备的标识信息存储到第一同步链表中,其中存储指针用于指向待存储数据在主存储设备的第一存储介质中的位置,从存储设备的标识信息用于表示存储待存储数据的从存储设备,如从存储设备的标识信息可以是从存储设备的IP地址,以通过从存储设备的IP地址向其发送待存储数据。
[0075] 除上述存储指针以及从存储设备的标识信息之外,还可以在第一同步链表中增加从存储设备中用于存储待存储数据的存储介质的标识信息,以指示待存储数据在从存储设备中的存储位置。
[0076] 104:主存储设备将第一存储介质存储的待存储数据存储到主存储设备的第二存储介质中,以完成待存储数据在主存储设备中的存储,其中主存储设备的第二存储介质的存储空间大于主存储设备的第一存储介质的存储空间,使得主存储设备可以存储较多的数据,例如主存储设备的第二存储介质可以为主存储设备的磁盘。如从第一存储介质中获取待存储数据进行存储。
[0077] 主存储设备还可以监控主存储数据存储待存储数据的存储情况,如果存储情况表明主存储设备成功存储,则向客户端发送存储成功响应指令;如果存储情况表明主存储设备存储失败,则需要再次从客户端获取待存储数据。
[0078] 从上述技术方案可知,主存储设备在接收到客户端发送的待存储数据后,主存储设备将待存储数据存储到主存储设备的第一存储介质中,并基于待存储数据更新主存储设备对应的第一同步链表,主存储设备将第一存储介质存储的待存储数据存储到主存储设备的第二存储介质中,以完成待存储数据在主存储设备中的存储。第一同步链表用于指示主存储设备从第一存储介质中获取待存储数据,以使得从存储设备依次存储待存储数据,这样对于存储同一份待存储数据的主存储设备和所有从存储设备来说,每次仅有一个存储设备存储待存储数据,降低负载压力,在主存储设备或从存储设备存储待存储数据时不会受到其他设备存储的影响,提高存储速度以及系统性能。
[0079] 请参阅图2,其示出了本发明实施例提供的另一种数据存储控制方法的信令图,可以包括以下步骤:
[0080] 201:主存储设备接收客户端发送的待存储数据。
[0081] 202:主存储设备将待存储数据存储到主存储设备的第一存储介质中。
[0082] 203:主存储设备基于待存储数据更新主存储设备对应的第一同步链表,第一同步链表用于指示将待存储数据依次存储到从存储设备中,以通过第一同步链路可以确定用于存储待存储数据的从存储设备,以防止不同从存储设备同时存储待存储数据。
[0083] 204:主存储设备将待存储数据存储到主存储设备的第二存储介质中,以完成待存储数据在主存储设备中的存储。
[0084] 对于上述步骤201至步骤204的说明,请参阅上述步骤101至步骤104,对此本实施例不再详述。
[0085] 205:主存储设备扫描第一同步链表,确定存储待存储数据的从存储设备,从上述对第一同步链表的介绍可知,第一同步链表中存储有从存储设备的标识信息,因此基于第一同步链表的从存储设备的标识信息可以确定出哪些从存储设备存储该待存储数据。
[0086] 在本实施例中,主存储设备可通过同步服务定时扫描第一同步链表,所谓定时扫描可以是一个周期性扫描,以每间隔一定时间扫描一次。
[0087] 206:主存储设备监测从存储设备中是否有处于空闲状态的第一从存储设备,如果有,主存储设备向第一从存储设备发送待存储数据,如果没有,主存储设备等待从存储设备中出现处于空闲状态的第一从存储设备。
[0088] 其中处于空闲状态的第一从存储设备可以与主存储设备之间的通信链路处于空闲状态(如无数据传输或通信链路中可用带宽较多)的第一从存储设备,或者是从第一从存储设备自身的可用资源来看处于空闲状态,对此本实施例不进行限定。
[0089] 但是此处需要注意的一点是:确定的第一从存储设备是同样存储当前主存储设备所存储的待存储数据,这是因为主存储设备可以会依次存储多条待存储数据,如待存储数据1和待存储数据2,与这些待存储数据相关的数据(如上述存储指针和从存储设备的标识信息)写入到同一个第一同步链表中,若主存储设备存储待存储数据1,则在扫描时需要确定同样存储待存储数据1的从存储设备。如果扫描第一同步链表时发现存储当前主存储设备所存储的待存储数据的从存储设备都处于繁忙状态,则处理另一条待存储数据。
[0090] 例如第一同步链表中一条待存储数据相关的数据存储在一个链表节点中,如果扫描第一同步链表时发现存储当前主存储设备所存储的待存储数据的从存储设备都处于繁忙状态,则扫描另一个链表节点中的数据以对另一条待存储数据进行处理。
[0091] 在本实施例中,主存储设备可以对从存储设备的状态依次进行监测,如果在依次监测过程中存在处于空闲状态的第一从存储设备,则向第一从存储设备发送待存储数据,如果在依次监测过程中第一从存储设备处于繁忙状态,则跳过第一从存储设备。主存储设备在向从存储设备中的其他处于空闲状态的从存储设备发送待存储数据后,若监测出第一从存储设备处于空闲状态向第一从存储设备发送待存储数据。
[0092] 也就是说主存储设备会优先向处于空闲状态的从存储设备发送待存储数据,待所有处于空闲状态的从存储设备发送待存储数据之后,则可以继续对处于繁忙状态的从存储设备进行监测以在其变化为空闲状态后发送。
[0093] 而主存储设备可以从自身的第一存储介质或第二存储介质中获取待存储数据,将所获取的待存储数据发送给第一从存储设备,至于从第一存储介质还是第二存储介质中获取可以随机获取,或者因为第一存储介质的读写速率高于第二存储介质的读写速率,所以可以优先从第一存储介质中获取待存储数据,若第一存储介质中没有获取到待存储数据,则可以从第二存储介质中获取待存储数据。
[0094] 通过上述技术方案,主存储设备扫描第一同步链表以确定出存储待存储数据且处于空闲状态的第一从存储设备,然后将待存储数据发送至该处于空闲状态的第一从存储设备,实现每次仅有一个从存储设备存储待存储数据。
[0095] 而第一从存储设备接收到待存储数据之后的流程如图2中的步骤207至步骤209所示:
[0096] 207:第一从存储设备将待存储数据存储到第一从存储设备的第一存储介质中。
[0097] 208:如果第一从存储设备不是最后一个存储待存储数据的设备,第一从存储设备基于待存储数据更新第一从存储设备对应的第二同步链表,并将第一从存储设备的第一存储介质存储的待存储数据存储到第一从存储设备的第二存储介质中,第二同步链表用于指示将待存储数据依次存储到从存储设备的其他从存储设备中。
[0098] 在本实施例中,第二同步链表与第一同步链表的不同之处在于:第二同步链表中存储的与待存储数据相关的数据中没有第一从存储设备相关的数据,如没有上述第一同步链表中的第一从存储设备的标识信息,且存储指针从指向主存储设备的第一存储介质更改为指向第一从存储设备的第一存储介质,以从第一从存储设备的第一存储介质中获取到待存储数据。
[0099] 209:如果第一从存储设备是最后一个存储待存储数据的设备,第一从存储设备将第一从存储设备的第一存储介质存储的待存储数据存储到第一从存储设备的第二存储介质中,以完成待存储数据在第一从存储设备中的存储,对于第一从存储设备的第一存储介质和第二存储介质的说明,请参阅上述对主存储设备的第一存储介质和第二存储介质的说明,对此本实施例不再阐述。
[0100] 第一从存储设备在存储待存储数据到自身的第二存储介质后,第一从存储设备也可以对存储情况进行监控,并在监控到不同的存储情况后执行不同操作,例如如果所述存储情况表明所述第一从存储设备成功存储,第一从存储设备向主存储设备发送存储成功响应指令;主存储设备在接收到存储成功响应指令后,将第一同步链表中与待存储数据相关的数据删除,以防止主存储设备反复向第一从存储设备发送相同的待存储数据。
[0101] 如果存储情况表明第一从存储设备存储失败,第一从存储设备向主存储设备发送存储失败响应指令;主存储设备在接收到存储失败响应指令后,重新扫描第一同步链表,以从第一同步链表中确定其他能够接收该待存储数据且处于空闲状态的从存储设备。
[0102] 请参阅图3,其示出了本发明实施例提供的再一种数据存储控制方法的信令图,在上述图2所示基础上还可以包括以下步骤:
[0103] 210:第一从存储设备扫描第二同步链表,以确定从存储设备中存储待存储数据的其他从存储设备。从上述对第二同步链表的介绍可知,第二同步链表中存储有其他从存储设备的标识信息,因此基于第二同步链表的其他从存储设备的标识信息可以确定出哪些其他从存储设备存储该待存储数据。
[0104] 在本实施例中,第一从存储设备可通过同步服务定时扫描第二同步链表,所谓定时扫描可以是一个周期性扫描,以每间隔一定时间扫描一次。
[0105] 211:第一从存储设备监测其他从存储设备中是否有处于空闲状态的第二从存储设备,如果有,第一从存储设备向第二从存储设备发送待存储数据,如果没有,第一从存储设备等待其他从存储设备中出现处于空闲状态的第二从存储设备。对于处于空闲状态的第二从存储设备的说明,请参阅上述方法实施例中的说明。
[0106] 在本实施例中,第一存储设备可以对其他从存储设备的状态依次进行监测,如果在依次监测过程中存在处于空闲状态的第二从存储设备,则向第二从存储设备发送待存储数据,如果在依次监测过程中第二从存储设备处于繁忙状态,则跳过第二从存储设备。第一从存储设备在向其他从存储设备中的其他处于空闲状态的从存储设备发送待存储数据后,若监测出第二从存储设备处于空闲状态向第二从存储设备发送待存储数据。
[0107] 也就是说第一从存储设备会优先向处于空闲状态的从存储设备发送待存储数据,待所有处于空闲状态的从存储设备发送待存储数据之后,则可以继续对处于繁忙状态的从存储设备进行监测以在其变化为空闲状态后发送。
[0108] 而第一从存储设备可以从自身的第一存储介质或第二存储介质中获取待存储数据,将所获取的待存储数据发送给第二从存储设备,至于从第一存储介质还是第二存储介质中获取可以随机获取,或者因为第一存储介质的读写速率高于第二存储介质的读写速率,所以可以优先从第一存储介质中获取待存储数据,若第一存储介质中没有获取到待存储数据,则可以从第二存储介质中获取待存储数据。
[0109] 通过上述技术方案,第一从存储设备扫描第二同步链表确定存储待存储数据且处于空闲状态的第二从存储设备,然后将待存储数据发送至该处于空闲状态的第二从存储设备,实现每次仅有一个从存储设备存储待存储数据。
[0110] 而第二从存储设备接收到待存储数据之后的流程如图2中的步骤212至步骤214所示:
[0111] 212:第二从存储设备将待存储数据存储到第二从存储设备的第一存储介质中。
[0112] 213:如果第二从存储设备是最后一个存储待存储数据的设备,第二从存储设备将待存储数据存储到第二从存储设备的第二存储介质中,以完成待存储数据在第二从存储设备中的存储。
[0113] 可以理解的是:上述第二同步链表中记录有存储待存储数据的从存储设备的相关信息,如果第一从存储设备向第二从存储设备发送待存储数据时通过第二同步链表确定第二从存储设备是最后一个存储待存储数据的设备,则可以通知第二从存储设备为最后一个存储待存储数据的设备。
[0114] 214:如果第二从存储设备不是最后一个存储待存储数据的设备,第二从存储设备基于待存储数据更新第二从存储设备对应的第三同步链表,第三同步链表用于指示将待存储数据依次存储到其他从存储设备中,并将待存储数据存储到第二从存储设备的第二存储介质中。由第二从存储设备扫描第三同步链表,以确定下一个用于存储待存储数据的从存储设备,下一个用于存储待存储数据的从存储设备的执行过程与第二从存储设备相同,对此本实施例不再阐述。
[0115] 在本实施例中,第三同步链表与第二同步链表的不同之处在于:第三同步链表中存储的与待存储数据相关的数据中没有第二从存储设备相关的数据,如没有上述第二同步链表中的第二从存储设备的标识信息,且存储指针从指向第一从存储设备的第一存储介质更改为指向第二从存储设备的第一存储介质,以从第二从存储设备的第一存储介质中获取到待存储数据。
[0116] 对于第一从存储设备的第一存储介质和第二存储介质的说明,请参阅上述对主存储设备的第一存储介质和第二存储介质的说明,对此本实施例不再阐述。
[0117] 同样的第二从存储设备在存储待存储数据到自身的第二存储介质后,第二从存储设备也可以对存储情况进行监控,并在监控到不同的存储情况后执行不同操作,例如如果存储情况表明第二从存储设备成功存储,第二从存储设备向第一从存储设备发送存储成功响应指令;第一从存储设备在接收到存储成功响应指令后,将第二同步链表中与待存储数据相关的数据删除,以防止主存储设备反复向第一从存储设备发送相同的待存储数据。
[0118] 如果存储情况表明第二从存储设备存储失败,第二从存储设备向第一从存储设备发送存储失败响应指令;第一从存储设备在接收到存储失败响应指令后,重新扫描第二同步链表,以从第二同步链表中确定其他能够接收该待存储数据且处于空闲状态的从存储设备。
[0119] 下面以三个存储设备存储同一条待存储数据为例,对本发明实施例提供的数据存储控制方法进行说明,这三个存储设备分别是主存储设备、从存储设备1和从存储设备2,需要说明的一点是:本实施例以三个存储设备为例进行说明,但是本实施例提供的数据存储控制方法可以应用到两个存储设备或三个以上存储设备存储同一条待存储数据的场景中。上述主存储设备、从存储设备1和从存储设备2存储待存储数据的过程如图4所示,可以包括以下步骤:
[0120] 1)主存储设备接收客户端发送的待存储数据。
[0121] 2)主存储设备将待存储数据存储到缓存(主存储设备的第一存储介质)中,并将缓存指针(上述存储指针)、从存储设备1的IP地址和从存储设备2的IP地址写入到第一同步链表中。
[0122] 3)主存储设备将缓存中存储的待存储数据存储到磁盘(主存储设备的第二存储介质)中。
[0123] 4)主存储设备通过同步服务定时扫描第一同步链表,确定从存储设备1处于空闲状态,则主存储设备从缓存中获取待存储数据发送给从存储设备1。
[0124] 5)从存储设备1将待存储数据存储到自身的缓存中。
[0125] 6)从存储设备1将缓存指针(指向待存储数据在从存储设备1的缓存中的位置)和从存储设备2的IP地址写入到第二同步链表中。
[0126] 7)从存储设备1将自身缓存中存储的待存储数据存储到自身的磁盘中。
[0127] 8)从存储设备1通过同步服务定时扫描第二同步链表,确定从存储设备2处于空闲状态,则从存储设备1从自身的缓存中获取待存储数据发送给从存储设备2。
[0128] 9)从存储设备2将待存储数据存储到自身的缓存中。
[0129] 10)从存储设备2确定自身为最后一个存储待存储数据的设备,将待存储数据存储到自身的磁盘中。
[0130] 对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0131] 与上述方法实施例相对应,本发明实施例还提供一种主存储设备,其结构如图5所示,主存储设备包括:处理器100、第一存储介质200和第二存储介质300。
[0132] 处理器100,用于接收客户端发送的待存储数据,将待存储数据存储到第一存储介质200中;基于待存储数据更新主存储设备对应的同步链表,主存储设备的同步链表用于指示将待存储数据依次存储到从存储设备中;将第一存储介质中存储的待存储数据存储到第二存储介质300中,以完成待存储数据在主存储设备中的存储,对于处理器100的执行过程,请参阅上述方法实施例中的说明,对此本实施例不再阐述。同样的主存储设备还具备其他功能,具体也请参阅上述方法实施例中的说明。
[0133] 请参阅图6,其示出了本发明实施例提供一种从存储设备的结构,可以包括:处理器400、第一存储介质500和第二存储介质600。
[0134] 处理器400,用于接收主存储设备或其他从存储设备发送的待存储数据,将待存储数据存储到第一存储介质500中;如果从存储设备是最后一个存储待存储数据的设备,将第一存储介质500中存储的待存储数据存储到第二存储介质600中,以完成待存储数据在从存储设备中的存储;如果从存储设备不是最后一个存储待存储数据的设备,基于待存储数据更新从存储设备对应的同步链表,从存储设备对应的同步链表用于指示将待存储数据依次存储到其他从存储设备中,并将第一存储介质500中存储的待存储数据存储到第二存储介质600中,对于处理器400的执行过程,请参阅上述方法实施例中的说明,对此本实施例不再阐述。同样的主存储设备还具备其他功能,具体也请参阅上述方法实施例中的说明。
[0135] 本发明还提供一种数据存储控制系统,系统包括:主存储设备和至少一个从存储设备;
[0136] 主存储设备,用于接收客户端发送的待存储数据,将待存储数据存储到主存储设备的第一存储介质中;基于待存储数据更新主存储设备对应的第一同步链表,第一同步链表用于指示将待存储数据依次存储到从存储设备中;将主存储设备的第一存储介质中存储的待存储数据存储到主存储设备的第二存储介质中,以完成待存储数据在主存储设备中的存储;
[0137] 至少一个从存储设备中的任一从存储设备,用于接收主存储设备或其他从存储设备发送的待存储数据,将待存储数据存储到该从存储设备的第一存储介质中;如果该从存储设备是最后一个存储待存储数据的设备,将该从存储设备的第一存储介质中存储的待存储数据存储到该从存储设备的第二存储介质中,以完成待存储数据在该从存储设备中的存储;如果该第二从存储设备不是最后一个存储待存储数据的设备,基于待存储数据更新该从存储设备对应的第二同步链表,第二同步链表用于指示将待存储数据依次存储到其他从存储设备中,并将该从存储设备的第一存储介质中存储的待存储数据存储到该从存储设备的第二存储介质中。
[0138] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0139] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0140] 对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
[0141] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。