一种数据访问方法、数据服务器及数据存储系统与流程

文档序号:24783725发布日期:2021-04-23 09:16阅读:98来源:国知局
一种数据访问方法、数据服务器及数据存储系统与流程

1.本发明涉及计算机存储技术领域,具体涉及一种数据访问方法、数据服务器及数据存储系统。


背景技术:

2.现有的高可用存储系统虽然允许有多台缓存服务器配置在系统中,但同一时间只有一台服务器对外服务,其他服务器作为备用机。当负载超过单台服务器的处理能力时,处于备用状态的服务器也无法对外服务,只能通过提高对外服务的单台服务器的硬件性能,不能通过增设备用服务器实现横向扩展,存在多台缓存服务器负载不均衡的问题。


技术实现要素:

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.本发明另一方面提供一种数据服务器,包括:接收单元、发送单元和读取单元;
33.所述接收单元,用于接收客户端发送的数据访问请求;
34.所述发送单元,用于从主缓存服务器和从缓存服务器中选择目标缓存服务器,向所述目标缓存服务器发送缓存位置查询请求;其中,所述缓存位置查询请求包括所述数据访问请求所访问数据的数据编号;
35.所述接收单元,还用于若所述目标缓存服务器中存在与所述数据编号对应的数据缓存位置信息,接收所述目标缓存服务器返回的所述数据缓存位置信息;其中,所述数据缓存位置信息由所述目标缓存服务器基于与所述数据编号对应的数据块编号得到;
36.所述读取单元,用于基于所述数据缓存位置信息,通过固态盘服务器从所述数据缓存位置信息指定的缓存位置中读取数据,并通过所述发送单元将所读取到的数据发送至所述客户端。
37.可选的,所述读取单元,具体用于基于所述数据缓存位置信息,向所述固态盘服务器发送所述数据读取请求;若所述固态盘服务器中记录的映射关系与所述数据读取请求中的映射关系一致,接收所述固态盘服务器从所述映射关系中的数据缓存位置信息指定的固态盘的磁盘块中读取的数据;其中,所述数据缓存位置信息包括固态盘编号和至少一个磁
盘块编号,所述数据读取请求包括映射关系,所述映射关系包括所述数据编号和所述数据块编号与所述数据缓存位置信息的对应关系。
38.可选的,所述接收单元,还用于若所述固态盘服务器没有读取到数据,接收所述固态盘服务器返回的读取出错消息;和/或,还用于若目标缓存服务器不存在所述数据编号对应的数据缓存位置信息,接收所述目标缓存服务器返回的查询失败信息;
39.所述发送单元,还用于向索引服务器发送存储位置查询请求;
40.所述接收单元,还用于接收所述索引服务器发送的与所述数据编号对应的数据存储位置信息;
41.所述读取单元,还用于基于所述数据存储位置信息,通过机械盘服务器从所述数据存储位置信息指定的存储位置中读取数据,并通过所述发送单元将所读取到的数据发送至所述客户端。
42.本发明另一方面提供一种数据存储系统,包括:数据服务器、主缓存服务器、至少一台从缓存服务器和固态盘服务器;
43.所述数据服务器,用于接收客户端发送的数据访问请求,从所述主缓存服务器和至少一台从缓存服务器中选择目标缓存服务器,向所述目标缓存服务器发送缓存位置查询请求;其中,所述缓存位置查询请求包括所述数据访问请求所访问数据的数据编号;
44.所述主缓存服务器和所述至少一台从缓存服务器中的目标缓存服务器,用于若所述目标缓存服务器中存在与所述数据编号对应的数据缓存位置信息,向所述数据服务器返回所述数据缓存位置信息;其中,所述数据缓存位置信息由所述目标缓存服务器基于与所述数据编号对应的数据块编号得到;
45.所述数据服务器,还用于向所述固态盘服务器发送所述数据缓存位置信息;
46.所述固态盘服务器,用于从所述数据缓存位置信息指定的缓存位置中读取数据,并通过所述数据服务器将读取到的数据发送至所述客户端。
47.可选的,所述数据服务器,具体用于向所述固态盘服务器发送数据读取请求,所述数据读取请求包括映射关系,所述映射关系包括所述数据编号和所述数据块编号与所述数据缓存位置信息的对应关系;
48.所述固态盘服务器,还用于检测所述固态盘服务器中记录的映射关系与所述数据读取请求中的映射关系;若映射关系不一致,发送读取出错消息至所述数据服务器;
49.所述主缓存服务器,还用于确定待存储数据的映射关系,所述待存储数据的映射关系包括所述待存储数据的数据编号和数据块编号与所述待存储数据的数据缓存位置信息的对应关系;用于基于所述待存储数据的映射关系,生成缓存更新指令,并将所述缓存更新指令发送至所述固态盘服务器;
50.所述固态盘服务器,还用于根据所述缓存更新指令,更新所述固态盘服务器所存储数据的映射关系和更新所述固态盘服务器中的固态盘的存储数据;
51.所述从缓存服务器,还用于基于所述固态盘服务器所存储数据的映射关系进行同步。
52.如上述方案所述,当接收到客户端发送的数据请求;数据服务器从主缓存服务器和从缓存服务器中选择目标缓存服务器,向目标缓存服务器发送缓存位置查询请求;其中,缓存位置查询请求包括数据访问请求所访问数据的数据编号;若目标缓存服务器中存在与
数据编号对应的数据缓存位置信息,数据服务器接收目标缓存服务器返回的所述数据缓存位置信息;数据服务器基于数据缓存位置信息,通过固态盘服务器从所述数据缓存位置信息指定的缓存位置中读取数据并返回读取到的数据至客户端。不同于现有技术中同一时间只有一台缓存服务器对外服务,通过修改数据服务器的配置和数据访问流程,使得数据服务器可以配置多台缓存服务器(如主缓存服务器和至少一台从缓存服务器)的参数(如ip地址),多台缓存服务器可以同时对数据服务器提供缓存位置查询服务以解决多台缓存服务器负载不均衡的问题。
附图说明
53.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
54.图1为本发明实施例一种数据访问方法的流程图;
55.图2为本发明又一实施例一种数据访问方法的流程图;
56.图3为本发明又一实施例一种数据访问方法的流程图;
57.图4为本发明上述实施例数据访问过程的信令图(未查找到缓存位置的情况);
58.图5为本发明上述实施例数据访问过程的信令图(查找到缓存位置和映射关系一致的情况);
59.图6为本发明上述实施例数据访问过程的信令图(查找到缓存位置和映射关系不一致的情况);
60.图7为本发明又一实施例一种数据服务器的结构示意图;
61.图8为本发明又一实施例一种数据存储系统的结构示意图。
具体实施方式
62.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
63.在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
64.现有技术一般基于开源的keepalived实现缓存服务器的高可用。缓存系统中的两台缓存服务器各自有实际的ip地址,假设其ip地址分别为a地址和b地址。keepalived设置一个公共的、对外的虚拟ip地址,同一时间虚拟ip地址只会指向a地址或b地址中的一个,只有虚拟ip地址指向的缓存服务器能对数据服务器提供查询缓存的服务。当查询缓存负载超过单台缓存服务器的处理能力时,处于备用状态的缓存服务器也无法分担一部分查询缓存
服务,存在多台缓存服务器负载不均衡的问题。
65.另一方面,当与数据服务器连接的缓存服务器出现异常,keepalived将虚拟ip地址指向切换至另一台缓存服务器的ip地址。虚拟ip地址指向的切换过程一般需要3到5秒的时间。在这段时间内缓存服务器的查询服务中断,数据服务器会认为查询失败,将所有数据访问请求发送至机械盘服务器,导致固态盘资源的浪费,同时降低数据访问的效率。因为通过固态盘服务器访问数据比通过机械盘服务器访问数据要更快。这中断缓存服务的3到5秒对于正在高负载运行的数据服务器来说是不可承受的。
66.针对现有的高可用方案中存在的多台缓存服务器负载不均衡和切换缓存服务器不及时的问题。本发明的方案通过修改数据服务器的配置和数据访问流程,使得数据服务器可以配置多台缓存服务器的参数,多台缓存服务器可以同时对其提供缓存位置查询服务解决了多台缓存服务器负载不均衡的问题。如果网络出现异常或当前提供服务的缓存服务器出现故障导致数据服务器与该缓存服务器连接失败,数据服务器会依据轮询顺序向另一台缓存服务器发送查询请求,解决了切换缓存服务器不及时的问题。
67.请参阅1,其示出本发明实施例一种数据访问方法的流程图,包括:
68.s101,数据服务器接收客户端发送的数据访问请求。
69.此步骤中的数据服务器可以配置多台缓存服务器的参数,如ip地址。多台缓存服务器包括一台主缓存服务器和至少一台从缓存服务器,在数据缓存位置信息查询这个功能上,所有缓存服务器的功能都是等价的,因此在数据服务器的缓存相关的配置项中,不体现主缓存服务器和从缓存服务器的不同。例如,数据服务器的配置项可以采用如下的配置描述:
70.cache-server=主缓存服务器a的ip地址,从缓存服务器b的ip地址,从缓存服务器c的ip地址;
71.或,cache-server=从缓存服务器b的ip地址,主缓存服务器a的ip地址,从缓存服务器c的ip地址;
72.主缓存服务器和从缓存服务器的ip地址先后不做限定,不同缓存服务器的ip地址通过逗号分隔。
73.此步骤中的数据访问请求包括客户端所访问数据的数据标识,如数据名,数据名用于表明客户端所要访问的数据是什么。例如,数据名可以为所要访问文件的文件名。
74.s102,数据服务器从主缓存服务器和从缓存服务器中选择目标缓存服务器,向目标缓存服务器发送缓存位置查询请求。
75.此步骤中,数据服务器可以随机从主缓存服务器和从缓存服务器中选择目标缓存服务器;或者按照固有顺序依次从主缓存服务器和从缓存服务器中选择目标缓存服务器;或是其他可实现均衡地访问主缓存服务器和从缓存服务器的轮询方式去确定目标缓存服务器。
76.例如,主缓存服务器和从缓存服务器分别编号为1至3号缓存服务器,数据服务器可以采用顺序轮询的方式选择1至3号缓存服务器作为目标缓存服务器:数据服务器第一次选择1号缓存服务器作为目标缓存服务器,发送缓存位置查询请求至1号缓存服务器;数据服务器第二次选择2号缓存服务器作为目标缓存服务器,发送缓存位置查询请求至2号缓存服务器;数据服务器第三次选择3号缓存服务器作为目标缓存服务器,发送缓存位置查询请
求至3号缓存服务器;数据服务器第四次选择1号缓存服务器作为目标缓存服务器,发送缓存位置查询请求至1号缓存服务器
……

77.如果网络出现异常或当前的目标缓存服务器出现故障,导致数据服务器与目标缓存服务器连接失败,数据服务器会依据轮询顺序选择下一台缓存服务器作为目标缓存服务器,并向其发送缓存位置查询请求,而这种选择缓存服务器的速度快于将数据访问请求发送至机械盘服务器的速度,从而能够解决了切换缓存服务器不及时的问题。
78.在发送缓存位置查询请求之前,根据数据访问请求中的数据标识确定数据编号(fid)、数据偏移位置(offset)和数据长度(length)。此步骤中,缓存位置查询请求包括数据访问请求所访问数据的数据编号、数据偏移位置和数据长度。
79.s103,判断目标缓存服务器中是否存在与数据编号对应的数据缓存位置信息,若存在执行步骤s104-s105,若不存在执行步骤s106-s109。
80.其中,数据缓存位置信息用于表明数据块在固态盘中的存储位置,包括固态盘编号(did)和至少一个磁盘块编号(disk_block_id)。一个固态盘服务器包括多个插口,可以插多块固态盘。一个固态盘包括多个磁盘块,固态盘可以看作是连续存放字节流的设备。目标缓存服务器的数据块大小与固态盘的磁盘块大小相同,以通过固态盘中的一个磁盘块存储一个数据块。
81.实际应用中数据服务器所要访问的数据可以看做是字节流,一个数据块的大小可以预先设定,例如可以是1m、2m、4m或其他大小。对于相同数据长度的待访问数据,一个数据块越大,访问数据的数据块总数越小。不同数据对应的数据块数量和数据块编号不相同,因此在此步骤中目标缓存服务器基于数据访问请求中的数据编号、数据偏移位置和数据长度,得到所访问数据的数据块编号(file_black_id)。
82.而数据块编号与数据缓存位置信息具有对应关系,通过数据块编号来查找对应的数据缓存位置信息。在这里需要说明的一点是:数据块编号与数据缓存位置信息的对应关系可以以映射关系的形式记录在目标缓存服务器中,例如映射关系包括(fid,file_blcok_id)与数据缓存位置信息的对应关系。
83.s104,数据服务器接收目标缓存服务器返回的数据缓存位置信息。
84.s105,数据服务器基于数据缓存位置信息,通过固态盘服务器从数据缓存位置信息指定的缓存位置中读取数据并返回读取到的数据至客户端。
85.此步骤中,数据服务器基于数据缓存位置信息,向固态盘服务器发送数据读取请求,固态盘服务器根据数据读取请求中的数据缓存位置信息,读取对应位置的数据,如基于数据缓存位置信息中固态盘编号(did)和至少一个磁盘块编号(disk_block_id)在对应的固态盘的磁盘块中读取数据,并将读取到的数据发送回数据服务器。数据服务器接收固态盘服务器读取的数据并返回读取到的数据至客户端。
86.s106,数据服务器接收目标缓存服务器返回的查询失败信息。
87.s107,数据服务器向索引服务器发送存储位置查询请求。
88.存储位置查询请求包括数据访问请求所访问数据的数据编号、数据偏移位置和数据长度。索引服务器根据数据编号、数据偏移位置和数据长度,得到所访问数据的索引数据块编号(file_block_id2),其中索引数据块和缓存服务器中的数据块的大小不一定相同。
89.s108,数据服务器接收索引服务器发送的与数据编号对应的数据存储位置信息。
90.索引服务器记录了所有数据块在机械盘上的存储位置(即数据存储位置信息)。根据索引数据块编号,得到与索引数据块编号对应的数据存储位置信息。数据存储位置信息包括机械盘编号(did2)、机械盘的磁盘编号(disk_block_id2)和机械盘服务实施例位置(ip,port)。索引数据块和机械盘磁盘块大小相同。机械盘也可以看作是连续存放字节流的设备。
91.s109,数据服务器基于数据存储位置信息,通过机械盘服务器读取数据并返回数据至客户端。
92.此步骤中,数据服务器向机械盘服务器发送数据读取请求,机械盘服务器根据数据读取请求中的数据存储位置信息,读取对应位置的数据,并发送至数据服务器。数据服务器接收机械盘服务器读取的数据并返回读取到的数据至客户端。
93.本实施例的方案通过修改数据服务器的配置和数据访问流程,使得数据服务器可以配置多台缓存服务器的ip地址,多台缓存服务器可以同时对其提供缓存位置查询服务解决了多台缓存服务器负载不均衡的问题。如果网络出现异常或当前提供服务的缓存服务器出现故障导致数据服务器与该缓存服务器连接失败,数据服务器会切换另一台缓存服务器为目标缓存服务器,向该目标缓存服务器发送查询请求,相对于现有切换服务器将数据访问请求发送给机械盘服务器的速度来说更快,从而解决了切换缓存服务器不及时的问题。
94.在实际应用过程中发现在存储系统中,缓存数据经常根据数据的使用情况进行更新,多台缓存服务器的映射关系需要进行同步处理。现有的同步方法,通过将待缓存数据转换成快照进行同步。但是待缓存数据转换成快照,在缓存服务器间传输快照,并将快照重建待缓存数据,这三步都是非常耗时。
95.为解决同步耗时的问题,请参阅图2,其示出了本发明又一实施例一种数据访问方法的流程图,其相比图1,增加了步骤s110-s113,主从缓存服务器的缓存的过程,包括:
96.s110,主缓存服务器确定待存储数据的映射关系。
97.其中,待存储数据的映射关系包括待存储数据的数据编号和数据块编号与待缓存数据的数据缓存位置信息的对应关系,即待存储数据的(fid,file_block_id)和待存储数据的(did,disk_block_id)间的对应关系。待存储数据可以根据统计的热点数据块确定,热点数据块是但不限于是经常被访问的数据块。例如,可以通过主缓存服务器定期统计数据服务器的访问请求,将被访问次数超过预设次数的数据块作为热点数据块,则热点数据块中的数据作为待存储的数据。
98.s111,主缓存服务器基于待存储数据的映射关系,生成缓存更新指令,并将缓存更新指令发送至固态盘服务器。
99.其中缓存更新指令包括增加缓存、删除缓存或修改缓存等指令。
100.s112,固态盘服务器根据缓存更新指令,更新固态盘服务器所存储数据的映射关系和更新固态盘服务器中的固态盘的存储数据。
101.具体的,固态盘服务器根据缓存更新指令,可能增加新的映射关系、删除已存储的映射关系或是修改已存储的映射关系。同时固态盘服务器中的固态盘基于映射关系的变化增加、删除或修改已存储的数据。
102.s113,从缓存服务器基于固态盘服务器所存储数据的映射关系进行同步。
103.在此步骤中,从缓存服务器和主缓存服务器相互独立。因为固态盘是天然的快照,
从缓存服务器直接从固态盘服务器同步映射关系会比现有的同步方法更加高效省时。例如从缓存服务器可以定期从固态盘服务器同步待存储数据的映射关系。
104.需要说明的,步骤s110-s113的主从缓存服务器的缓存的过程并不是一定在步骤s109后执行,图2中只是示出了其中一种实施方式,在此不对步骤s110-s113的执行时机进行具体限定。
105.本实施例的方案通过主从缓存服务器独立,从缓存服务器基于固态盘服务器所存储数据的映射关系进行同步,解决了主从缓存服务器同步耗时的问题,提高了缓存的效率。
106.基于上述主缓存服务器指示固态盘服务器更新映射关系,从缓存服务器同步更新映射关系的存储方式存在弱一致性的问题,这是因为当主缓存服务器向固态盘服务器下发缓存更新指令后,整个缓存系统的映射关系实际已经更新。但由于从缓存服务器和主缓存服务器是独立的,主从缓存服务器不进行实时通讯。这意味着,在从缓存服务器从固态盘服务器同步映射关系之前的一小段时间内,从缓存服务器上的缓存映射关系是未更新的映射关系,与更新后的映射关系不相同,即主从缓存服务器上的映射关系是不一致的。
107.为解决主从缓存服务器的弱一致性的问题,本发明提供又一实施例一种数据访问方法,请参阅3,其示该方法的流程图,包括:
108.s301,数据服务器接收客户端发送的数据访问请求。
109.s302,数据服务器从主缓存服务器和从缓存服务器中选择目标缓存服务器,向目标缓存服务器发送缓存位置查询请求。
110.s303,判断目标缓存服务器中是否存在与数据编号对应的数据缓存位置信息,若存在执行步骤s304-s307,若不存在执行步骤s308-s311。
111.上述步骤s301-s303与步骤s101-s103类似,具体说明请参见上述实施例步骤s101-s103的说明,在此不再赘述。
112.s304,数据服务器接收目标缓存服务器返回的数据缓存位置信息。
113.其中,数据缓存位置信息可以由目标缓存服务器以映射关系的形式返回,映射关系为数据访问请求所访问数据的映射关系,包括数据编号和数据块编号与数据缓存位置信息的对应关系,即(fid,file_blcok_id)与(did,disk_block_id)的对应关系,以基于映射关系中的数据缓存位置信息,使固态盘服务器知道所要读取的数据的存储位置。关于数据缓存位置信息和固态盘服务器等名词的解释说明请参见步骤s104,在此不再赘述。
114.s305,数据服务器向固态盘服务器发送数据读取请求。
115.因为映射关系可以使固态服务器知道所要读取的数据的存储位置,所以在发送数据读取请求时可以基于映射关系向固态盘服务器发送数据读取请求,其中,数据读取请求包括目标缓存服务器返回的映射关系。
116.s306,数据服务器通过固态盘服务器从数据缓存位置信息指定的缓存位置中读取数据并返回读取到的数据至客户端。
117.在此步骤中,固态盘服务器中记录的映射关系与数据读取请求中的映射关系一致,目标缓存服务器可能为主缓存服务器,或是已经及时同步的从缓存服务器,返回的映射关系是最新的映射关系。因为固态盘服务器上的映射关系是与主缓存服务器内的映射关系相一致的,因此映射关系中的数据缓存位置信息是准确的,缓存位置中的数据也是客户端所要访问的数据。固态盘服务器读取数据过程说明请参见步骤s105,在此不再赘述。
118.s307,若固态盘服务器没有读取到数据,数据服务器接收固态盘服务器返回的读取出错消息。
119.此步骤中,固态盘服务器没有读取到数据可能是因为固态盘服务器中记录的映射关系与数据读取请求中的映射关系不一致,说明目标缓存服务器可能为还未同步最新映射关系的从缓存服务器,因此返回的映射关系中的数据缓存位置信息不准确,缓存位置中的数据不是客户端所要访问的数据,所以固态盘服务器返回读取出错消息;固态盘服务器没有读取到数据也可能是因为固态盘服务器和/或固态盘出现异常导致读取失败。
120.数据服务器接收到读取出错的消息后,执行步骤s309-s311。
121.s308,数据服务器接收目标缓存服务器返回的查询失败信息。
122.s309,数据服务器向索引服务器发送存储位置查询请求。
123.s310,数据服务器接收索引服务器发送的与数据编号对应的数据存储位置信息。
124.s311,数据服务器基于数据存储位置信息,通过机械盘服务器读取数据并返回数据至客户端。
125.上述步骤s308-s311与步骤s106-s109类似,步骤的具体说明请参见上述实施例步骤s106-s109的说明,在此不再赘述。
126.本实施例的方案通过修改查询流程,即在数据服务器向固态盘服务器发送的数据读取请求中带上了目标缓存服务器查询到的映射关系,由固态盘服务器对映射关系进行检查,保证了查询到的数据的准确性,解决了主从缓存服务器弱一致性的问题。
127.下面结合信令图对上述实施例的数据访问的过程进行说明,过程如下:
128.请参阅图4,其示出了当目标缓存服务器中未缓存客户端要访问数据时的信令图。
129.客户端发送数据访问请求至数据服务器;其中,数据访问请求中带有客户端所要访问的数据名。
130.数据服务器接收数据访问请求,根据数据名确定数据编号fid、数据偏移位置offset和数据长度length;数据服务器发送缓存位置查询请求至目标缓存服务器,请求中带有(fid,offset,length)。
131.目标缓存服务器根据缓存位置查询请求中的(fid,offset,length),得到(fid,file_block_id),未找到与(fid,file_block_id)对应的数据缓存位置信息(did,disk_block_id),返回查询失败消息至数据服务器。
132.数据服务器接收到查询失败消息后,发送存储位置查询请求至索引服务器,请求中带有(fid,offset,length)。
133.索引服务器根据存储位置查询请求中的(fid,offset,length),得到(fid,file_block_id2);并根据(fid,file_block_id2)找到对应的数据存储位置信息(did2,disk_block_id2,ip_port),将数据存储位置信息返回至数据服务器。
134.数据服务器发送数据读取请求至机械盘服务器,其中数据读取请求中带有(did2,disk_block_id2,ip_port)。
135.机械盘服务器根据(did2,disk_block_id2,ip_port)读取对应位置的数据返回数据服务器。
136.数据服务器接收读取到的数据并返回至客户端。
137.请参阅图5,其示出了当目标缓存服务器中缓存有客户端要访问数据,且固态硬盘
服务器记录的映射关系与数据读取请求中的映射关系一致时的信令图。
138.客户端发送数据访问请求至数据服务器;其中,数据访问请求中带有客户端所要访问的数据名。
139.数据服务器接收数据访问请求,根据数据名确定数据编号fid、数据偏移位置offset和数据长度length;数据服务器发送缓存位置查询请求至目标缓存服务器,请求中带有(fid,offset,length)。
140.目标缓存服务器根据缓存位置查询请求中的(fid,offset,length),得到(fid,file_block_id),得到与(fid,file_block_id)对应的数据缓存位置信息(did,disk_block_id),以映射关系的形式将数据缓存位置信息(did,disk_block_id)发送至数据服务器。其中,映射关系为(fid,file_block_id)与(did,disk_block_id)的对应关系。
141.数据服务器发送数据读取请求至固态盘服务器,其中数据读取请求中带有映射关系,(fid,file_block_id)

(did,disk_block_id)。
142.固态盘服务器检查数据读取请求中的映射关系与记录的映射关系是一致的,根据映射关系中的(did,disk_block_id)读取对应位置的数据返回数据服务器。
143.数据服务器接收读取到的数据并返回至客户端。
144.请参阅图6,其示出了当目标缓存服务器中缓存有客户端要访问数据,但固态硬盘服务器记录的映射关系与数据读取请求中的映射关系不一致时的信令图。
145.客户端发送数据访问请求至数据服务器;其中,数据访问请求中带有客户端所要访问的数据名。
146.数据服务器接收数据访问请求,根据数据名确定数据编号fid、数据偏移位置offset和数据长度length;数据服务器发送缓存位置查询请求至目标缓存服务器,请求中带有(fid,offset,length)。
147.目标缓存服务器根据缓存位置查询请求中的(fid,offset,length),得到(fid,file_block_id),得到与(fid,file_block_id)对应的数据缓存位置信息(did,disk_block_id),返回数映射关系至数据服务器。其中,映射关系为(fid,file_block_id)与(did,disk_block_id)的对应关系。
148.数据服务器发送数据读取请求至固态盘服务器,其中数据读取请求中带有映射关系,(fid,file_block_id)

(did,disk_block_id)。
149.固态盘服务器检查数据读取请求中的映射关系与记录的映射关系不一致,返回读取失败消息至数据服务器。
150.数据服务器接收到读取失败消息后,发送存储位置查询请求至索引服务器,请求中带有(fid,offset,length)。
151.索引服务器根据存储位置查询请求中的(fid,offset,length),得到(fid,file_block_id2);并根据(fid,file_block_id2)找到对应的数据存储位置信息(did2,disk_block_id2,ip_port),将数据存储位置信息返回至数据服务器。
152.数据服务器发送数据读取请求至机械盘服务器,其中数据读取请求中带有(did2,disk_block_id2,ip_port)。
153.机械盘服务器根据(did2,disk_block_id2,ip_port)读取对应位置的数据返回数据服务器。
154.数据服务器接收读取到的数据并返回至客户端。
155.请参阅图7,其示出本发明又一实施例一种数据服务器的结构示意图,本实施例的数据服务器可以配置多台缓存服务器的参数,如ip地址。多台缓存服务器包括一台主缓存服务器和至少一台从缓存服务器,在数据缓存位置信息查询这个功能上,所有缓存服务器的功能都是等价的,因此在数据服务器的缓存相关的配置项中,不体现主缓存服务器和从缓存服务器的不同。数据服务器包括:接收单元701、发送单元702和读取单元703。各个单元的功能如下:
156.接收单元701,用于接收客户端发送的数据访问请求。数据访问请求包括客户端所访问数据的数据标识,如数据名,数据名用于表明客户端所要访问的数据是什么。例如,数据名可以为所要访问文件的文件名。
157.发送单元702,用于从主缓存服务器和从缓存服务器中选择目标缓存服务器,向目标缓存服务器发送缓存位置查询请求;其中,缓存位置查询请求包括数据访问请求所访问数据的数据编号。关于目标缓存服务器的选择方式说明请参见上述实施例步骤s102,在此不再赘述。
158.接收单元701,还用于若目标缓存服务器中存在与数据编号对应的数据缓存位置信息,接收目标缓存服务器返回的数据缓存位置信息;其中,数据缓存位置信息由目标缓存服务器基于与数据编号对应的数据块编号得到。
159.在一种实现方式中,接收单元701接收的数据缓存位置信息是目标缓存服务器以映射关系的形式返回的,其中,映射关系包括数据编号和数据块编号与数据缓存位置信息的对应关系。关于数据块编号和映射关系的概念解释请参见上述实施例的步骤s103和s304。接收单元701不同实现方式的工作过程说明请参见上述实施例步骤s104和s304。
160.读取单元703,用于基于数据缓存位置信息,通过固态盘服务器从数据缓存位置信息指定的缓存位置中读取数据。
161.读取单元703的一种实现方式,具体用于基于数据缓存位置信息,向固态盘服务器发送数据读取请求;接收固态盘服务器从数据缓存位置信息指定的固态盘的磁盘块中读取的数据。其中,数据读取请求中包括数据缓存位置信息,数据缓存位置信息用于表明数据块在固态盘中的存储位置,包括固态盘编号和至少一个磁盘块编号。
162.读取单元703的另一种实现方式,具体用于基于数据缓存位置信息,向固态盘服务器发送数据读取请求,数据读取请求包括映射关系,读取单元703将数据缓存位置信息以映射关系的形式发至固态盘服务器;若固态盘服务器中记录的映射关系与数据读取请求中的映射关系一致,读取单元703接收固态盘服务器从映射关系中的数据缓存位置信息指定的固态盘的磁盘块中读取的数据。
163.接收单元701,还用于若固态盘服务器没有读取到数据,则数据服务器接收固态盘服务器返回的读取出错消息;和/或,还用于若目标缓存服务器不存在数据编号对应的数据缓存位置信息,接收目标缓存服务器返回的查询失败信息。此功能的说明请参见上述实施例的步骤s307和s308。
164.发送单元702,还用于向索引服务器发送存储位置查询请求。
165.接收单元701,还用于接收索引服务器发送的与数据编号对应的数据存储位置信息。
166.读取单元703,还用于基于数据存储位置信息,通过机械盘服务器从数据存储位置信息指定的存储位置中读取数据。
167.发送单元701、第四接收单元702和第二读取单元703通过机械盘服务器读取数据的功能说明请参见上述实施例步骤s106-s109,在此不再赘述。
168.发送单元701,还用于发送读取到的数据至客户端。读取到的数据可以为通过固态盘服务器读取到的缓存数据,或通过机械盘服务器读取到的存储数据。
169.本实施例的数据服务器通过修改配置和数据访问流程,使得数据服务器可以配置多台缓存服务器的ip地址,多台缓存服务器可以同时对其提供缓存位置查询服务解决了多台缓存服务器负载不均衡的问题。如果网络出现异常或当前提供服务的缓存服务器出现故障导致数据服务器与该缓存服务器连接失败,数据服务器会切换另一台缓存服务器为目标缓存服务器,向该目标缓存服务器发送查询请求,相对于现有切换服务器将数据访问请求发送给机械盘服务器的速度来说更快,从而解决了切换缓存服务器不及时的问题。
170.请参阅图8,其示出本发明又一实施例一种数据存储系统的结构示意图,包括数据服务器、主缓存服务器、至少一台从缓存服务器和固态盘服务器。
171.数据服务器,用于接收客户端发送的数据访问请求,从主缓存服务器和至少一台从缓存服务器中选择目标缓存服务器,向目标缓存服务器发送缓存位置查询请求;其中,缓存位置查询请求包括据访问请求所访问数据的数据编号。
172.主缓存服务器和至少一台从缓存服务器中的目标缓存服务器,用于若目标缓存服务器中存在与数据编号对应的数据缓存位置信息,向数据服务器返回数据缓存位置信息;其中,数据缓存位置信息由目标缓存服务器基于与数据编号对应的数据块编号得到。此功能说明参见上述实施例步骤s103、s104和s106,在此不再赘述。
173.数据服务器,还用于向固态盘服务器发送数据缓存位置信息。例如具体用于向固态盘服务器发送数据读取请求,数据读取请求包括数据缓存位置信息;或者数据读取请求包括映射关系,映射关系包括数据编号和数据块编号与数据缓存位置信息的对应关系。
174.固态盘服务器,用于从数据缓存位置信息指定的缓存位置中读取数据,并通过数据服务器将读取到的数据发送至客户端,此功能说明参见上述实施例步骤s112,在此不再赘述。
175.当数据服务器发送的数据读取请求中包括映射关系,固态盘服务器还用于检测所述固态盘服务器中记录的映射关系与所述数据读取请求中的映射关系;若映射关系一致,从数据缓存位置信息指定的缓存位置中读取数据,并通过数据服务器将读取到的数据发送至客户端;若映射关系不一致,发送读取出错消息至数据服务器。此功能说明请参见上述实施例步骤s306和s307,在此不再赘述。
176.此外,主缓存服务器,还用于确定待存储数据的映射关系,待存储数据的映射关系包括待存储数据的数据编号和数据块编号与待存储数据的数据缓存位置信息的对应关系,此功能说明参见上述实施例步骤s110,在此不再赘述。主缓存服务器还用于基于待存储数据的映射关系,生成缓存更新指令,并将缓存更新指令发送至固态盘服务器。此功能说明参见上述实施例步骤s111,在此不再赘述。
177.固态盘服务器,还用于根据缓存更新指令,更新固态盘服务器所存储数据的映射关系和更新固态盘服务器中的固态盘的存储数据。此功能说明参见上述实施例步骤s112,
在此不再赘述。
178.从缓存服务器,还用于基于固态盘服务器所存储数据的映射关系进行同步。此功能说明参见上述实施例步骤s113,在此不再赘述。
179.本实施例的方案通过主从缓存服务器独立,从缓存服务器基于固态盘服务器所存储数据的映射关系进行同步,解决了主从缓存服务器同步耗时的问题,提高了缓存的效率。同时,本实施例的方案通过修改查询流程,即在数据服务器向固态盘服务器发送的数据读取请求中带上了目标缓存服务器查询到的映射关系,由固态盘服务器对映射关系进行检查,保证了查询到的数据的准确性,解决了主从缓存服务器弱一致性的问题。
180.此外,数据存储系统还包括索引服务器和机械盘服务器。
181.索引服务器,用于接收数据服务器发送的存储位置查询请求,并根据存储位置查询请求返回数据存储位置信息。其中存储位置查询请求可以是固态盘服务器没有读取到数据时发送,如数据服务器在接收到读取出错消息时发送。机械盘服务器,用于接收数据服务器发送的数据读取请求,并根据数据读取请求读取数据并发送至数据服务器,由此在固态盘服务器没有读取到数据时通过索引服务器和机械盘服务器继续向数据服务器提供数据。
182.索引服务器和机械盘服务器的工作过程说明请参见上述实施例步骤s108和s109,在此不再赘述。
183.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
184.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
185.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1