一种分布式存储系统及其同步缓存方法技术方案

技术编号:15653600 阅读:339 留言:0更新日期:2017-06-17 08:34
本发明专利技术公开了一种分布式存储系统,包括与网络交换机连接的若干个客户端、元数据节点、监控节点和若干个存储节点,所述每个客户端内均设置有缓存同步模块,所述每个存储节点上均设置有缓存记录模块;一种分布式存储系统的同步缓存方法,具体步骤如下:在每个客户端上设置缓存同步模块,在分布式存储服务端的若干个存储节点上,每个存储节点设置缓存同步模块,在数据进行读写操作时进行截取,并在中间插入缓存处理,最终在客户端对数据进行读取。本发明专利技术能够提高本地客户端缓存的命中率,并保证数据的一致性,最终提高了分布式存储系统中的读性能。

【技术实现步骤摘要】
一种分布式存储系统及其同步缓存方法
本专利技术属于数据存储
,特别涉及一种分布式存储系统及其同步缓存方法。
技术介绍
如图1所示为现有的分布式存储集群中,服务端包括:元数据节点、监控节点、存储节点。但是规模最大的是存储节点,保存用户的数据,并直接给客户端提供读写请求的支持。监控节点(有些系统也叫管理节点)主要是记录所有服务端和客户端的状态,这个节点会每过几秒与其它节点通信,确定各服务端和客户端是否正常。为了提高系统的读写性能,客户端和服务器存储节点都可能提供数据缓存,以加快读写的速度。但是在分布式系统中客户端实现读写缓存将带来比较复杂的问题。比如客户端在写数据时,如果缓存到本地,此时客户端出现宕机或者服务出错,将会产生数据丢失。客户端在读数据时,如果直接从本地缓存读取数据,但是之前可能其它客户端更新了相关数据,而本地读缓存并不能够获得,这时将得到的是旧数据。所以在分布式系统中,客户端程序一般不提供数据缓存,采用同步的处理方法,而仅仅在服务端存储节点提供数据缓存的方案。但是如果能够在客户端提供一个可靠的数据缓存,能够很大程度的提高存储性能。由于客户端的写缓存存在数据丢失的可能,本专利技术是针对加速客户端读性能来设计的。
技术实现思路
专利技术目的:针对现有技术中存在的问题,本专利技术提供一种通过在服务端存储节点上记录每个客户端缓存的状态信息,在服务端进行数据更新时,通知相关客户端废弃本地缓存信息,最终实现加速客户端的读性能,并通过缓存的多点同步方式,避免客户端读数据时得到旧的缓存数据,最终实现了一种可靠的分布式存储系统及其同步缓存方法。技术方案:为解决上述技术问题,本专利技术提供的一种分布式存储系统,其中包括与网络交换机连接的若干个客户端、元数据节点、监控节点和若干个存储节点,所述每个客户端内均设置有缓存同步模块,所述每个存储节点上均设置有缓存记录模块;存储节点:用于保存用户的数据,并直接给客户端提供读写请求的支持;监控节点:用于记录所有服务端和客户端的状态。一种如上所述的分布式存储系统的同步缓存方法,具体步骤如下:在每个客户端上设置缓存同步模块,在分布式存储服务端的若干个存储节点上,每个存储节点设置缓存同步模块,在数据进行读写操作时进行截取,并在中间插入缓存处理,最终在客户端对数据进行读取。进一步的,所述对数据进行写操作时缓存处理的具体方法为:步骤一:首先文件写模块接收到写请求,然后把文件分割为更小的对象,并给对象进行唯一性编号:ID;步骤二:缓存同步模块启动并建立一定大小的缓存区;然后保存每次写请求的对象数据内容和该对象的编号;最后对缓存区的占容量是否已满进行判断,当缓存区所占容量判断为已满时清除最旧的对象缓存;当缓存区所占容量判断为未满时进行步骤三操作保存对象到本地缓存包括编号和内容并置对象为“临时状态”步骤三:客户端本地缓存保存数据后,向服务器端发送对象内容、对象ID和客户端自身的ID,并将该缓存数据标识为“临时状态”;步骤四:服务端接收数据后,保存对象内容到永久存储介质上,然后更新对象ID和客户端ID到服务缓存记录中;步骤五:对于缓存记录模块中是否存在该对象ID的多条记录进行判断,如果不存在则通知客户端写操作完成并清除对象“临时状态”并最终写操作结束,如果存在则进行步骤六;步骤六:遍历该对象ID和客户端ID,然后通知其他客户端该对象ID的缓存失效,并异步等待返回结果;如果异步有结果则返回异步结果并结束,如果异步没有结果进入步骤七;步骤七:监控节点首先记录没有异步返回结果的客户端整体缓存失效,然后客户端定时通信任务触发缓存同步模块清除该客户端的所有缓存。进一步的,所述对数据进行读操作时缓存处理的具体方法为:步骤1:文件读模块收到文件读请求,然后对本地缓存是否包括对象数据进行判断,如果包含对象数据则返回读数据给请求程序,读操作过程结束;如果不包括对象数据则进入步骤二:步骤2:服务器接收读请求并从服务端中取得对象数据,然后更新对象ID和客户端ID到服务缓存记录中,并把读出的数据对象结果返回给客户端。客户端判断本地缓存是否已满,如果缓存已满则清除最旧的对象缓存并进入步骤三,如果判断缓存未满则直接进入步骤三:步骤3:保存对象数据到本地缓存,包括编号和内容并最终返回读数据,读操作过程结束。进一步的,所述对数据进行写操作时缓存处理的步骤二中缓存区的占容量是否已满的判断标准为,判断缓存区所使用的空间是否大于一定的比例(如百分之九十),如果大于该比例则判断缓存区的占容量已满,如果不大于该比例则判断缓存区的占容量未满。进一步的,所述对数据进行读操作时缓存处理的步骤2中缓存是否已满的判断标准为,判断缓存区所使用的空间是否大于一定的比例(如百分之九十),如果大于百分之九十则判断缓存已满,如果不大于百分之九十则判断缓存未满。与现有技术相比,本专利技术的优点在于:本专利技术在整个流程中,客户端宕机只是相当于本节点的缓存失效,而不影响数据的一致性。如果服务器端的存储节点存在宕机、增加或者减少的情况,那么会通知所有客户端废弃所有本地缓存数据,保证数据的一致性。因此,对于读多写少的Web之类的应用服务,整个操作过程中,一定程度增加了服务器的写负担,但是可以明显加快读请求性能和反应速度。本专利技术能够提高本地客户端缓存的命中率,并保证数据的一致性,最终提高了分布式存储系统中的读性能。附图说明图1为现有技术中分布式存储系统的结构示意图;图2为本专利技术的结构示意图;图3为本专利技术对数据进行写操作时缓存处理的整体流程图;图4为本专利技术对数据进行读操作时缓存处理的整体流程图。具体实施方式下面结合附图和具体实施方式,进一步阐明本专利技术。本专利技术提供了一种多客户端缓存与服务端的同步方法,通过在服务端存储节点上记录每个客户端缓存的状态信息,在服务端进行数据更新时,通知相关客户端废弃本地缓存信息,最终实现加速客户端的读性能。本专利技术中缓存的颗粒度是以一个对象为单位,对象可以是一个完整文件,或者一个大文件的一部分。通过这种缓存的同步方式最终避免了客户端读数据时缓存的旧数据不可靠问题。本专利技术的系统结构如附图2。在这种分布式存储中服务端有多个存储节点,每个存储节点增加一个本专利技术设计的“缓存记录模块”;客户端也会有多个,在客户端增加本专利技术设计的“缓存同步模块”。服务端保存数据的位置由分布式存储系统自身决定,可能分布到任何一台存储节点上。本专利技术的流程是截取数据的读写流程,在中间插入缓存的处理。对于保存每个对象缓存数据的方法为:1.“缓存同步模块”启动时,建立一定大小的缓存区。2.“缓存同步模块”保存每次写请求的对象数据内容和该对象的编号。当缓存区快满时(比如大约90%使用),则采用常规算法置最旧内容为脏数据。3.客户端本地缓存保存数据后,向服务器端发送对象内容、对象ID和客户端自身的ID,但是暂时置该缓存数据为“临时状态”标志。4.服务端接收数据后,保存对象内容到永久存储介质上,并把对象ID和客户端自身的ID作为“缓存记录模块”的一条记录保存。这里同一个对象ID,可以有多条客户端ID记录,因为多个客户端都可能缓存该对象。5.对于记录中存在的不是本次客户端发起的其它客户端,服务器向这些客户端发送对象ID缓存记录失效的通知,但是异步等待返回结果。6.所有缓存失效通知发完后,不等待结果,本文档来自技高网...
一种分布式存储系统及其同步缓存方法

【技术保护点】
一种分布式存储系统,其特征在于,包括与网络交换机连接的若干个客户端、元数据节点、监控节点和若干个存储节点,所述每个客户端内均设置有缓存同步模块,所述每个存储节点上均设置有缓存记录模块;存储节点:用于保存用户的数据,并直接给客户端提供读写请求的支持;监控节点:用于记录所有服务端和客户端的状态。

【技术特征摘要】
1.一种分布式存储系统,其特征在于,包括与网络交换机连接的若干个客户端、元数据节点、监控节点和若干个存储节点,所述每个客户端内均设置有缓存同步模块,所述每个存储节点上均设置有缓存记录模块;存储节点:用于保存用户的数据,并直接给客户端提供读写请求的支持;监控节点:用于记录所有服务端和客户端的状态。2.一种如权利要求1所述的分布式存储系统的同步缓存方法,其特征在于,具体步骤如下:在每个客户端上设置缓存同步模块,在分布式存储服务端的若干个存储节点上,每个存储节点设置缓存同步模块,在数据进行读写操作时进行截取,并在中间插入缓存处理,最终在客户端对数据进行读写。3.根据权利要求2所述的一种分布式存储系统的同步缓存方法,其特征在于,所述对数据进行写操作时缓存处理的具体方法为:步骤一:首先文件写模块接收到写请求,然后把文件分割为更小的对象,并给对象进行唯一性编号:ID;步骤二:缓存同步模块启动并建立一定大小的缓存区;然后保存每次写请求的对象数据内容和该对象的编号;最后对缓存区的占容量是否已满进行判断,当缓存区所占容量判断为已满时清除最旧对象缓存;当缓存区所占容量判断为未满时进行步骤三操作保存对象到本地缓存包括编号和内容并置对象为“临时状态”步骤三:客户端本地缓存保存数据后,向服务器端发送对象内容、对象ID和客户端自身的ID,并将该缓存数据标识为“临时状态”;步骤四:服务端接收数据后,保存对象内容到永久存储介质上,然后更新对象ID和客户端ID到服务缓存记录中;步骤五:对于缓存记录模块中是否存在该对象ID的多条记录进行判断,如果不存在则通知客户端写操作完成并清除对象“临时状态”并最终写操作结束,如果存在则进行...

【专利技术属性】
技术研发人员:金友兵
申请(专利权)人:南京卓盛云信息科技有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1