[发明专利]维护集群缓存一致性的方法及系统有效
申请号: | 201110322252.2 | 申请日: | 2011-10-21 |
公开(公告)号: | CN102387204A | 公开(公告)日: | 2012-03-21 |
发明(设计)人: | 司成祥;许鲁 | 申请(专利权)人: | 中国科学院计算技术研究所;天津中科蓝鲸信息技术有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08 |
代理公司: | 北京泛华伟业知识产权代理有限公司 11280 | 代理人: | 王勇 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 维护 集群 缓存 一致性 方法 系统 | ||
技术领域
本发明属于信息技术领域,尤其涉及集群缓存的一致性技术。
背景技术
数据缓存技术作为一种重要的输入输出(Input&Output,IO)性能优化手段被广泛应用于集群存储系统中,它将未来可能被访问的数据保存在主存中,利用应用IO负载中普遍存在的数据访问局部性原理来加速存储系统的IO性能,屏蔽慢速磁盘设备对应用性能的影响。但是,在集群存储系统中,当一个应用部署在不同缓存节点上并行运行时,每个缓存节点都是单独管理缓存。这样就很容易导致不同节点上缓存内容出现版本上的不一致。
现有维护缓存集群数据一致性的方法大致有以下三种:主动更新,回调,租约。对于主动更新,每次访问都需要与存储节点同步,降低了缓存的有效性。对于回调,需要存储节点额外记住所有客户端读取的数据,负担过重。对于租约,需要缓存节点与存储节点的协调,协商协议往往比较复杂。
发明内容
因此,本发明的目的在于克服上述问题,提供一种集群缓存一致性方法,来有效地维护集群节点之间的缓存一致性。
本发明的目的是通过以下技术方案实现的:
一方面,本发明提供了一种维护集群缓存一致性的方法,该方法在一个自治组中的任一节点进行缓存更新时,自动将该更新同步镜像到同一自治组中的其它缓存节点,所述自治组由共享相同存储空间的多个缓存节点组成。
上述方法中,包括以下步骤:
步骤1)当缓存节点收到来自应用服务器的写请求时,将该写请求的数据写入自身缓存,同时复制该写请求并且将所复制的写请求发送给同一自治组中的其它缓存节点;
步骤2)同一自治组中的其它缓存节点在收到所复制的写请求时,将其中的数据写入自身缓存,并向发送该请求的缓存节点发送应答;
步骤3)当同一自治组中的所有缓存节点完成对缓存中数据的更新后,收到来自应用服务器的写请求的缓存节点发送写应答给应用服务器。
上述方法中,每个自治组所共享的存储空间包括多个关联区域,每个缓存节点各自维持一张关联区域锁状态表,在该状态表中,每个表项对应一个关联区域,该表项记录了关联区域当前的锁状态。
上述方法中,在步骤1)和步骤2)中还包括以下步骤:
对于进入缓存节点的写请求,检查其要访问的关联区域是否处于加锁状态,若处于加锁状态,则立刻回退到发送该写请求的缓存节点,将产生冲突的请求加入等待重发队列,随机的等待一段时间Trand,重新启动更新操作;否则,对该关联区域进行加锁。
上述方法中,所述等待时间Trand以如下公式进行计算:
Trand=rand*ΔT*n;
其中,rand为一定范围内的随机整数,n为请求累计发送次数,ΔT为一个网络请求从发送到收到回复的最大时间消耗。
上述方法中,在步骤1)和步骤2)中,还包括对写请求所访问的关联区域进行解锁的步骤。
上述方法中,每个关联区域的大小可以为128K。
又一方面,本发明提供了一种维护集群缓存一致性的系统,该系统包括一个或多个自治组,所述自治组是由共享相同存储空间的多个缓存节点组成的,自治组中的每个缓存节点上包括缓存一致性模块,其用于将来自应用服务器的写请求的数据写入自身缓存,同时对该数据进行复制并发送给同一自治组中的其它缓存节点,以及在同一自治组中的所有缓存节点完成对缓存中数据的更新后,发送写应答给应用服务器;以及用于将从同一自治组中的其它缓存节点的接收的写请求的数据写入自身缓存,并发送应答给发送该写请求的缓存节点。
上述系统中,每个自治组所共享的存储空间包括多个关联区域,每个缓存节点各自维持一张关联区域锁状态表,在该状态表中,每个表项对应一个关联区域,该表项记录了关联区域当前的锁状态。
上述系统中,每个缓存节点还包括缓存并发控制模块,该模块用于对于进入缓存节点的写请求,检查其要访问的关联区域是否处于加锁状态,若处于加锁状态,则立刻回退到发送该写请求的缓存节点,将产生冲突的请求加入等待重发队列,随机的等待一段时间Trand,重新启动更新操作;否则,对该关联区域进行加锁;以及用于在将写请求的数据写入到该关联区域后,对该关联区域进行解锁。
上述系统中,所述等待时间Trand以如下公式进行计算:
Trand=rand*ΔT*n;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所;天津中科蓝鲸信息技术有限公司,未经中国科学院计算技术研究所;天津中科蓝鲸信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110322252.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:车载摄像头取得图像的显示方法及装置
- 下一篇:一种蓟柄锈菌的离体保存方法