[发明专利]一种分布式存储系统及其同步缓存方法在审
申请号: | 201710190374.8 | 申请日: | 2017-03-28 |
公开(公告)号: | CN106850856A | 公开(公告)日: | 2017-06-13 |
发明(设计)人: | 金友兵 | 申请(专利权)人: | 南京卓盛云信息科技有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 南京苏高专利商标事务所(普通合伙)32204 | 代理人: | 梁耀文 |
地址: | 211103 江苏省南京*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 存储系统 及其 同步 缓存 方法 | ||
技术领域
本发明属于数据存储技术领域,特别涉及一种分布式存储系统及其同步缓存方法。
背景技术
如图1所示为现有的分布式存储集群中,服务端包括:元数据节点、监控节点、存储节点。但是规模最大的是存储节点,保存用户的数据,并直接给客户端提供读写请求的支持。监控节点(有些系统也叫管理节点)主要是记录所有服务端和客户端的状态,这个节点会每过几秒与其它节点通信,确定各服务端和客户端是否正常。
为了提高系统的读写性能,客户端和服务器存储节点都可能提供数据缓存,以加快读写的速度。但是在分布式系统中客户端实现读写缓存将带来比较复杂的问题。比如客户端在写数据时,如果缓存到本地,此时客户端出现宕机或者服务出错,将会产生数据丢失。客户端在读数据时,如果直接从本地缓存读取数据,但是之前可能其它客户端更新了相关数据,而本地读缓存并不能够获得,这时将得到的是旧数据。
所以在分布式系统中,客户端程序一般不提供数据缓存,采用同步的处理方法,而仅仅在服务端存储节点提供数据缓存的方案。但是如果能够在客户端提供一个可靠的数据缓存,能够很大程度的提高存储性能。由于客户端的写缓存存在数据丢失的可能,本发明是针对加速客户端读性能来设计的。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供一种通过在服务端存储节点上记录每个客户端缓存的状态信息,在服务端进行数据更新时,通知相关客户端废弃本地缓存信息,最终实现加速客户端的读性能,并通过缓存的多点同步方式,避免客户端读数据时得到旧的缓存数据,最终实现了一种可靠的分布式存储系统及其同步缓存方法。
技术方案:为解决上述技术问题,本发明提供的一种分布式存储系统,其中包括与网络交换机连接的若干个客户端、元数据节点、监控节点和若干个存储节点,所述每个客户端内均设置有缓存同步模块,所述每个存储节点上均设置有缓存记录模块;
存储节点:用于保存用户的数据,并直接给客户端提供读写请求的支持;
监控节点:用于记录所有服务端和客户端的状态。
一种如上所述的分布式存储系统的同步缓存方法,具体步骤如下:在每个客户端上设置缓存同步模块,在分布式存储服务端的若干个存储节点上,每个存储节点设置缓存同步模块,在数据进行读写操作时进行截取,并在中间插入缓存处理,最终在客户端对数据进行读取。
进一步的,所述对数据进行写操作时缓存处理的具体方法为:
步骤一:首先文件写模块接收到写请求,然后把文件分割为更小的对象,并给对象进行唯一性编号:ID;
步骤二:缓存同步模块启动并建立一定大小的缓存区;然后保存每次写请求的对象数据内容和该对象的编号;最后对缓存区的占容量是否已满进行判断,当缓存区所占容量判断为已满时清除最旧的对象缓存;当缓存区所占容量判断为未满时进行步骤三操作保存对象到本地缓存包括编号和内容并置对象为“临时状态”
步骤三:客户端本地缓存保存数据后,向服务器端发送对象内容、对象ID和客户端自身的ID,并将该缓存数据标识为“临时状态”;
步骤四:服务端接收数据后,保存对象内容到永久存储介质上,然后更新对象ID和客户端ID到服务缓存记录中;
步骤五:对于缓存记录模块中是否存在该对象ID的多条记录进行判断,如果不存在则通知客户端写操作完成并清除对象“临时状态”并最终写操作结束,如果存在则进行步骤六;
步骤六:遍历该对象ID和客户端ID,然后通知其他客户端该对象ID的缓存失效,并异步等待返回结果;如果异步有结果则返回异步结果并结束,如果异步没有结果进入步骤七;
步骤七:监控节点首先记录没有异步返回结果的客户端整体缓存失效,然后客户端定时通信任务触发缓存同步模块清除该客户端的所有缓存。
进一步的,所述对数据进行读操作时缓存处理的具体方法为:
步骤1:文件读模块收到文件读请求,然后对本地缓存是否包括对象数据进行判断,如果包含对象数据则返回读数据给请求程序,读操作过程结束;如果不包括对象数据则进入步骤二:
步骤2:服务器接收读请求并从服务端中取得对象数据,然后更新对象ID和客户端ID到服务缓存记录中,并把读出的数据对象结果返回给客户端。客户端判断本地缓存是否已满,如果缓存已满则清除最旧的对象缓存并进入步骤三,如果判断缓存未满则直接进入步骤三:
步骤3:保存对象数据到本地缓存,包括编号和内容并最终返回读数据,读操作过程结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京卓盛云信息科技有限公司,未经南京卓盛云信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710190374.8/2.html,转载请声明来源钻瓜专利网。