数据读写方法及分布式存储系统的制作方法_2

文档序号:9505946阅读:来源:国知局
数据文件以追加写方式进行写入所消耗的时间,从而提升分布式存储系统的性會K。
[0028]在本实施例的一些可选的实现方式中,处理请求为写入请求,基于预先加载在内存中的指示分片数据的数据标识与数据索引的对应关系的哈希表,对处理请求进行处理,得到处理结果包括:利用主分片模块将分片数据写入分布式文件系统中,得到分片数据对应的数据索引,主分片模块为基于数据标识对应的哈希值所处的哈希值区间而确定的主分片模块;将数据标识和数据索引写入分布式文件系统中的日志文件,并且基于数据标识和数据索引,更新主分片模块对应的哈希表。
[0029]在本实施例中,分片服务器上的主分片模块可以预先对应一个哈希值区间,用于处理写入请求的主分片模块可以为基于分片数据对应的数据标识对应的哈希值所处的哈希值区间而确定的主分片模块。然后,可以利用该主分片模块将分片数据写入到分布式文件系统中,得到分布式文件系统返回的数据索引。在本实施例中,可以预先在分片服务器上创建主分片模块对应的哈希表,主分片模块可以通过该哈希表维护经由主分片模块写入到分布式文件系统中的分片数据的数据标识和数据索引,然后将该哈希表在分片服务器上的内存进行加载。在本实施例中,在利用主分片模块将分片数据写入分布式文件系统,得到分片数据对应的数据索引之后,可以基于数据标识和数据索引,更新主分片模块对应的哈希表。即首先计算写入分布式文件系统的分片数据的数据标识对应的哈希值,然后在主分片模块对应的哈希表中的该哈希值对应的位置上存储数据索引,从而建立分片数据的标识与数据索引的对应关系。
[0030]在本实施例的一些可选地实现方式中,处理请求为读取请求,基于预先加载在内存中的指示分片数据的数据标识与数据索引的对应关系的哈希表,对处理请求进行处理,得到处理结果包括:利用主分片模块基于数据标识对应的哈希值,从主分片模块对应的哈希表中的哈希值对应的位置上查找出与数据标识对应的数据索引,主分片模块为基于数据标识对应的哈希值所处的哈希值区间而确定的主分片模块;基于数据索引,从分布式文件系统中读取分片数据。
[0031]在本实施例中,可以利用主分片模块来处理对分片数据的读取请求,即从分布式文件系统中读取分片数据。可以对分片数据的数据标识进行哈希函数计算得到该数据标识对应的哈希值,然后从主分片模块对应的哈希表中的哈希值对应的位置上获取数据索引,基于该数据索引从分布式文件系统中读取出分片数据。
[0032]在本实施例的一些可选的实现方式中,处理请求为读取请求,基于预先加载在内存中的指示分片数据的数据标识与数据索引的对应关系的哈希表,对处理请求进行处理,得到处理结果包括:利用主分片模块对应的从分片模块基于数据标识对应的哈希值,从从分片模块对应的哈希表中的哈希值对应的位置上查找出与数据标识对应的数据索引,从分片模块为基于数据标识对应的哈希值所处的哈希值区间而确定的从分片模块;基于数据索弓丨,从分布式文件系统中读取分片数据。
[0033]在本实施例中,可以利用与主分片模块对应的从分片模块完成对分片数据的读取请求的处理。从分片模块可以维护一个哈希表,该哈希表可以为与其对应的主分片模块维护的哈希表的副本。从而,从分片模块可以基于分片数据的数据标识,从该哈希表中查找出与数据标识对应的数据索引,然后基于数据索引,从分布式文件系统中读取分片数据。
[0034]请参考图3,示出了适用于本申请的数据读写方法的另一个系统架构示意图。在图3中,示出了客户端301,主控服务器302,分片服务器303、分布式文件系统304。分片服务器303包括主分片模块与从分片模块。其中,主分片模块I和主分片模块2位于分片服务器I上,从分片模块I与从分片模块2位于分片服务器2上。在本实施例中,每一个主分片模块可以对应于一个从分片模块,构成分片模块对,即主分片模块I与从分片模块I构成一个分片模块对,主分片模块2与从分片模块2构成一个分片模块对。在本实施例中,主分片模块可以处理写入请求,主分片模块与从分片模块均可以处理读取请求(也可称之为查询请求)。
[0035]在本实施例的一些可选的实现方式中,当主分片模块出现故障时,将主分片模块对应的从分片模块切换为主分片模块,以对处理请求进行处理。
[0036]在本实施例中,主分片模块与其对应的从分片模块可以位于在不同的分片服务器上,并且其各自所在的分片服务器也经由不同的交换机的接入网络,从而避免因交换机故障导致的可用性灾难。同时,当主分片模块与其对应的从分片模块同时故障时,由于分片数据的数据标识与数据索引均存储于可靠性较高的分布式文件系统中,从而可以在较短的时间内从分布式文件系统中重建数据索引来恢复对写入请求和读取请求的处理。
[0037]在本实施例中,分片服务器还可以定期给主控服务器发送心跳信息,当主控服务器检测到某个分片服务器心跳信息丢失时,则可以将其上的主分片模块以及从分片模块在其它分片服务器上恢复出来。
[0038]在本实施例的一些可选地实现方式中,还包括:利用从分片模块每间隔读取周期读取日志文件中的主分片模块对应的增量信息,增量信息指示相较于上一读取周期新增加的数据标识和数据索引;基于增量信息,更新从分片模块对应的哈希表。
[0039]在本实施例中,从分片模块可以每间隔预设周期从分布式文件系统中的日志文件中,将其对应的主分片对应的日志增量部分读出来,即新增加的由该从分片模块对应的主分片写入日志中的数据标识和数据索引,从而更新从分片模块对应的哈希表,使得从分片模块对应的哈希表中维护的数据标识和数据索引的对应关系与主分片模块对应的哈希表维护的数据标识和数据索引的对应关系一致。从而当主分片模块出现故障时,将主分片模块对应的从分片模块切换为主分片模块,可以对经由主分片模块写入分布式文件系统中的分片数据进行读取。
[0040]请参考图4,其示出了根据本申请的数据读写方法对分片数据进行读写的原理示意图。在图4中,示出了客户端401,主控服务器402、分片服务器403、分片服务器403上的主分片模块与从分片模块、以及分布式文件系统404。主控服务器402记录分片模块的分布情况,即一个分片模块(主分片模块或从分片模块)在哪一个分片服务器403上。
[0041]下面以分片服务器I上的主分片模块2与分片服务器2上的与该主分片模块2对应的从分片模块2为例,说明根据对分片数据进行读写的原理:首先说明对分片数据的写入过程,主控服务器402接收客户端401发送的查询请求,基于分片数据的数据标识对应的哈希值的区间,可以确定出数据标识对应的哈希值处于主分片模块2对应的哈希值的区间内,即由主分片模块2处理对分片数据的写入请求。以及可以根据主分片模块与分片服务器的对应关系表,确定出主分片模块2位于分片服务器2上。此时,主控服务器402可以将分片服务器2与主分片模块2的标识发送给客户端401。客户端401可以向分片服务器2发送写入请求,同时,该请写入请求中可以包含主分片模块2的标识,从而使得写入请求到达分片服务器2时,可以交由主分片模块2进行处理。主分片模块2接收客户端401发送的写入请求之后,首先校验写入请求中与数据写入相关联的参数是否合法,若不合法,则向客户端返回错误信息,并终止流程。若合法,则以追加写方式将分片数据写入到分布式文件系统的数据文件(Data文件)中,接收分布式文件404系统返回的数据索引(Index),此时,可以将被写入分布式文件系统404中的数据文件的分片数据称之为Value。然后,主分片模块2可以将分片数据的标识(Key)与分片数据对应的数据索引(Index)写入分布式文件系统中的日志文件(Log文件)中,同时,利用分片数据的Key与Index更新主分片模块2对应的哈希表,并向客户端返回指示写入成功的指示信息。从分片模块2则每间隔读取周期读取分布式文件系统403的日志文件中主分片模块2对应的增量信息,即新增加的经由主分片模块2写入分布式文件系统404中的分片数据的数据标识与数据索引,将增加的分片数据的数据标识与数据索引加入到从分片模块2对应的哈希表中。
[0042]下面继续说明对上述经由主分片模块2写入分布式文件系统404中的分片数据的读取过程:由于从分片模块2可以与主分片模块2对应于同一个哈希值区间,基于上述写入分片数据的过程中确定处理分片数据的处理请求的分片服务器的原理,主控服务器402可以确定用于处理读取请求的分片模块即主分片模块2或从分片模块2。以从分片模块2处理客户端发送的读取请求为例,由于从分片模块2维护有与主分片模块2 —致的哈希表,因此,从分片模块2可以基于从分片模块2对应的加载在内存中的哈希表,查找哈希表中与分片数据的数据标识对应的数据索引,然后基于查找出的数据索引将分片数据从分布式文件系统404中读取出来。当读取成功时,将该分片数据作为查询结果返回给客户端。
[0043]在本实施例的一些可选地实现方式中,利用主分片模块将分片数据写入分布式文件系统中包括:利用主分片模块对分片数据进行复制生成分片数据对应的
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1