Frangipani的CacheConsistency

简介

Fangipani 是一个分布式文件系统,构建在虚拟磁盘上Petal上。这里我们只关注于Fangipani的Cache一致性是怎么做的

架构


可以简单理解为不同的client通过Petal而拥有对文件系统的统一view。每个client拥有自己的cache,将Petal的文件读到cache中修改,同过lockserver来同步获取锁和释放锁。

cache一致性

每个客户端有一个表来保存自己持有的所有lock的状态 busy/idle,busy表示正在对文件读写操作,idle表示已经读写完毕。

FILELOCKCONTENT
file1idbusy------
file2ididle------

lockserver保存所有的client当前的lock状态,数据结构如图所示

FILEIDOWNER
1client1
2client2

owner表示当前哪一个client获得该lock
每个客户端遵循两条规则

  1. 没有获取到lock时候,不允许cache数据
  2. 当从lockserver 获取到lock时候,再向Petal获取数据
  3. 当向petal写数据时,release lock。这里注意的是,Fangipani并不会主动去释放这个锁,而只是简单的将自己lock的状态标位idle
协议

当一个client需要请求lock时,

  1. 向lockserver发起REQUEST
  2. lockerserver 查看该文件对应的锁状态,如果是空闲的,则
    发送GRANT 给client表示获得该lock,如果其他client已经获取到锁,则lockserver会向那个client发送REVOKE,当对应的client获取到该消息时候,将自己读写操作完毕后发送RELEASE给lockserver
  3. lockser 发送GRANT给请求的client
事务

将设计到的所有文件一次向上lock,操作完毕后释放(影响性能)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值