Frangipani
frangipani是一种分布式的文件系统
缓存一致性
Frangipani使用锁的机制实现缓存一致性:
当一个节点要缓冲或者修改一个文件时,需要向锁服务器获得锁
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7EvB1wnC-1660206148639)(/Users/rock/Library/Application Support/typora-user-images/image-20220811160506923.png)]
而一个节点自身又维护着锁的状态
- BUSY:锁在忙
- IDEL: 锁空闲
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m7TCIa41-1660206148640)(/Users/rock/Library/Application Support/typora-user-images/image-20220811160626997.png)]
依靠4种单向消息交付:
-
REQUEST: 请求锁
- 无人持有该锁,则授予锁
- 有人持有锁,则对其发送REVOKE等待其释放
-
GRANT:授予锁
-
REVOKE:请求释放锁
- 当BUSY时,等待处理完再释放
- 当IDEL时,提交修改的缓冲,然后释放锁
-
RELEASE:释放锁