Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4078652
  • 博文数量: 251
  • 博客积分: 11197
  • 博客等级: 上将
  • 技术积分: 6862
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-05 14:41
个人简介

@HUST张友东 work@taobao zyd_com@126.com

文章分类

全部博文(251)

文章存档

2014年(10)

2013年(20)

2012年(22)

2011年(74)

2010年(98)

2009年(27)

分类: 服务器与存储

2010-10-19 08:58:01

MooseFS通过检查缓存的文件是否被其它的客户端修改,来决定缓存是否有效,感觉与我实现的那个版本的DNFS缓存机制一模一样,客户端在判断缓存是否有效时,需要连接元数据服务器进行确认,以下详细的说明在集中情况下对缓存的处理。

 

场景1

机器A读取文件X,(X的元数据被加入到机器A的缓存)

机器B读取文件X

此时,机器A欲读取/修改文件Xcache有效,因为文件没有被修改过)

 

场景2

机器A读取文件X

机器A修改文件X

此时,机器A欲读取/修改文件Xcache有效,A已经知道文件被修改)

 

场景3

机器A读取文件X

机器B修改文件X

此时,机器A欲读取/修改文件Xcache失效,A的缓存数据已不是最新的)

 

DNFS中,客户端确认缓存是否有效在open中完成,也就是说以下情况发生时,不能保证缓存机制正常的工作。

 

场景4

机器A打开文件Xopen),并读取文件X(没有关闭)

机器B修改文件X

此时,机器A继续读取文件X,由于文件还未关闭(不会调用opoen),A将不检查缓存有效性,此时A读到的数据与第一次读取的相同,但这已不是X最新的数据。

 

缓存机制的实现需要考虑很多问题,一致性的保证是难点,在网络系统中,由于网络延时,完全的一致性是不可能的,必须在效率与一致性之间做折中,如何实现与系统的应用环境有关。

阅读(3048) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~