Frangipani系统框架和工作原理

一.Frangipani介绍

Frangipani是一个分布式的共享文件系统,具有强一致性,可扩展,容错性且用户无感知的特点。但Frangipani文件系统是类unix文件系统的,并不能像GFS一样,不能存储和处理大文件。

二.Frangipani基础架构和组件

各个组件描述:

  1. client:用户进行代码文件编写,并将数据缓存到Frangipani。
  2. Frangipani:进行本地缓存,拉取和传送数据
  3. petal: petal由许多petal server以及磁盘组成,一个petal server对应一个client,存储一个对应的client的文件。
  4. petal_server:Frangipani中的数据进行保存和存取。内部含有lock_server
  5. lock_server:读写请求锁,用来保证缓存一致性
    在这里插入图片描述

三.Frangipani——缓存一致性实现

方法:通过lock来实现读写的一致性(仿照uinx文件的读写锁)。client对相关文件进行读的时候,会独占锁,其他用户需要对文件进行操作的时候,只能等锁释放掉,才能对文件进行操作,保证的数据的一致性。
数据操作流程

四.Frangipani——分布式事务

利用锁,天然的保证了操作的原子性和隔离性

五.分布式崩溃恢复

  1. petal奔溃:Petal有自己的copy-on-write snapshot机制,且满足crash-consistent。Frangipani直接使用Petal的snapshot进行备份,snapshot包含了所有的log和数据信息,可以直接调用revocery demon进行恢复
  2. client奔溃:采用WAL
    a. 先将操作写入log
    b.修改数据
    c.写入成功,client释放锁
    client奔溃在a前面:数据写入没有成功,用checksum检查log_entry不完整,进行丢弃
    client奔溃在a后面:petal重新执行一遍log,恢复数据

六.其他问题

在这里插入图片描述
解决思路:日志中会存储versionId,每次进行日志写入的时候,versionId会加一,存元数据的block的version也会相应的修改。只要保证block的versionId大于等于对应log的versionId,就能确定数据已写入petal

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值