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

文档序号:9505946阅读:541来源:国知局
数据读写方法及分布式存储系统的制作方法【
技术领域
】[0001]本申请涉及计算机领域,具体涉及分布式
技术领域
,尤其涉及数据读写方法及分布式存储系统。【
背景技术
】[0002]目前,对于网络中的海量数据,通常采用分布式存储系统对海量数据进行存储。在已知的分布式存储系统中,通常采用sstable文件对数据进行存储,对数据的读取则通过在所有sstable文件中进行二分查找实现。当采用上述分布式存储系统对数据进行存储时,一方面,由于sstable文件中数据是有序排列的,因此需要频繁的对各个sstable文件做归并排序,对于很大的数据长度(例如单条数据长度在IMB以上),在完全随机读取以及高吞吐的情形下,sstable文件合并过程所消耗的资源量大,从而造成系统瓶颈。另一方面,sstable文件在通常以3副本形式存储数据,存储成本较大。【
发明内容】[0003]本申请提供了数据读写方法及分布式存储系统,用于解决上述【
背景技术
】部分存在的技术问题。[0004]第一方面,本申请提供了数据读写方法,该方法包括:分片服务器接收客户端发送的对分片数据的包含分片数据的数据标识的处理请求,所述处理请求包括:写入请求、读取请求;基于预先加载在内存中的指示分片数据的数据标识与数据索引的对应关系的哈希表,对处理请求进行处理,得到处理结果,数据索引包括所述分片数据在分布式文件系统中的存储位置;将处理结果发送至客户端。[0005]第二方面,本申请提供了数据读写方法,该方法包括:接收客户端发送的查询请求,查询请求包括待处理的分片数据对应的数据标识;基于数据标识对应的哈希值所处的哈希值区间,确定用于对待处理的分片数据进行处理的分片服务器,以使客户端可向分片服务器发送对分片数据的处理请求对待处理的分片数据进行处理,其中,每一个分片服务器预先对应多个哈希值区间。[0006]第三方面,本申请提供了数据读写方法,该方法包括:接收对分片数据的处理指令,向主控服务器发送查询请求,查询请求包括分片数据的数据标识;向分片服务器发送对分片数据的处理请求,分片服务器为经由主控服务器基于分片数据的数据标识而确定的分片服务器;接收分片服务器返回的对处理请求进行处理之后得到的处理结果。[0007]第四方面,本申请提供了分布式存储系统,该系统包括:客户端,配置用于接收对分片数据的处理指令,向主控服务器发送查询请求,查询请求包括所述分片数据的数据标识;向分片服务器发送对分片数据的处理请求,分片服务器为经由主控服务器基于分片数据的数据标识而确定的分片服务器;接收分片服务器返回的对处理请求进行处理之后得到的处理结果;主控服务器,配置用于基于配置用于接收客户端发送的查询请求,查询请求包括待处理的分片数据对应的数据标识;基于数据标识对应的哈希值所处的哈希值区间,确定用于对待处理的分片数据进行处理的分片服务器,以使客户端可向分片服务器发送对分片数据的处理请求对待处理的分片数据进行处理,其中,每一个分片服务器预先对应多个哈希值区间;分片服务器,配置用于接收客户端发送的对分片数据的包含分片数据的数据标识的处理请求,处理请求包括:写入请求、读取请求;基于预先加载在内存中的指示分片数据的数据标识与数据索引的对应关系的哈希表,对处理请求进行处理,得到处理结果,数据索引包括分片数据在分布式文件系统中的存储位置;将处理结果发送至客户端。[0008]本申请提供的数据读写方法及分布式存储系统,通过分片服务器接收客户端发送的对分片数据的包含分片数据的数据标识的处理请求;基于预先加载在内存中的指示分片数据的数据标识与数据索引的对应关系的哈希表,对处理请求进行处理,得到处理结果;将处理结果发送至客户端。实现了通过加载在内存中的哈希表完成对数据的读写,使得对分片数据读取请求进行处理的时间接近于一次分布式文件系统的随机读请求的时间,从而最大限度的接近分布式文件系统的极限性能。相较于现有技术的sstable文件以二分查找的方式查找分片数据,节省了大量归并查找的时间。同时,对分片数据的写入请求的处理的耗时接近于分布式文件系统对索引和数据文件以追加写方式进行写入所消耗的时间,从而提升分布式存储系统的性能。【附图说明】[0009]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:[0010]图1示出了适用于本申请的数据读写方法的一个系统架构示意图;[0011]图2示出了根据本申请的数据读写方法的一个实施例的流程图;[0012]图3示出了适用于本申请的数据读写方法的另一个系统架构示意图;[0013]图4其示出了对分片数据进行读写的原理示意图;[0014]图5示出了根据本申请的数据读写方法的另一个实施例的流程图;[0015]图6示出了根据本申请的数据读写方法的再一个实施例的流程图;[0016]图7示出了根据本申请的分布式存储系统的一个实施例的结构示意图;[0017]图8其示出了适于用来实现本申请实施例的终端设备或主机的计算机系统800的结构示意图。【具体实施方式】[0018]下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。[0019]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。[0020]请参考图1,适用于本申请的数据读写方法的一个系统架构示意图。在图1中,示出了客户端101、主控服务器102(也可称之为Master服务器),分片服务器103(也可称之为UnitServer服务器)、分布式文件系统104。主控服务器101可以与多个分片服务器102连接。主控服务器102可以用于接收客户端101的查询请求,确定用于处理对分片数据的处理请求(例如写入请求、读取请求)的分片服务器103。分片服务器103可以用于接收客户端101发送的处理请求,对处理请求进行处理。例如,将分片数据写入分布式文件系统104中或从分布式文件系统104中读取分片数据。[0021]请参考图2,其示出了根据本申请的数据读写方法的一个实施例的流程200。本实施例所提供的数据读写方法可由分片服务器执行。该方法包括以下步骤:[0022]步骤201,分片服务器接收客户端发送的对分片数据的包含分片数据的数据标识的处理请求。[0023]在本实施例中,处理请求包括:写入请求、读取请求。在本实施例中,对数据的写入和读取可以以分片数据为单位。例如,在将一本词典对应的数据写入分布式文件系统中时,可以将字典对应的数据划分为多份数据,将每一份数据称之为分片数据。在将分片数据存储在分布式文件系统后,可以以分片数据为单元对分片数据进行读取。在实施例中,分片数据可以预先对应一个数据标识(也可称之为Key)。[0024]步骤202,基于预先加载在内存中的指示分片数据的数据标识与数据索引的对应关系的哈希表,对处理请求进行处理,得到处理结果。[0025]在本实施例中,数据索引包括分片数据在分布式文件系统中的存储位置。可以预先在分片服务器的内存中加载指示分片数据的数据标识与数据索引对应关系的哈希表。分片数据的数据标识与数据索引可以采用以下方式建立对应关系:数据标识经由哈希函数经计算后可以对应于一个哈希值,然后在哈希表中与该哈希值对应的位置上存储数据标识对应的数据索引。[0026]在本实施例中,可以基于预先在分片服务器的内存中加载指示分片数据的数据标识与数据索引对应关系的哈希表,对接收到的处理请求进行处理。例如,当处理请求为对分片数据的读取请求时,可以根据分片数据的数据标识,在哈希中查找出该分片数据的数据索引。当处理请求为对分片数据的写入请求时,可以将分片数据写入分布式文件系统后得到分布式文件系统返回的数据索引,同时,可以对分片数据的标识进行哈希函数计算后得到哈希值,然后将数据索弓I存储在哈希表中与该哈希值对应的位置上。此时,存储在分布式文件系统中的分片数据可以称之为Value,从而实现了以Key-Value形式对分片数据的存储,可以将由主控服务器、分片服务器、分布式文件系统构成的系统称之为分布式存储系统。[0027]在本实施例中,由于将所有的分片数据的数据索引存储在哈希表中,使得数据索引全量加载在内存中,从而使得对分片数据的读取请求(也可称之为查询请求)的处理时间接近于一次分布式文件系统的随机读请求的处理时间,从而最大限度的接近分布式文件系统的极限性能。相较于现有技术的sstable文件以二分查找的方式查找分片数据,节省了大量归并查找的时间。同时,对分片数据的写入请求的处理的耗时接近于分布式文件系统对索引和当前第1页1 2 3 4 5 
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1