API – 浅谈分布式文件系统MogileFS(5)

  • A+
所属分类:分布式

Client.pm
MogileFS::Utils模块将Client.pm的api封装了起来

实例分析一【文件下载】

客户端上执行如下命令:(下载key为speach_of_dependence02的文件)

通过抓包发现有如下流程:

mogilefs-05

Master查询db的语句如下:

由于系统内devid不允许重复,于是devid隐含了hostid,由此Master根据mem中的数据能够构造出path。
Storage node上通过http来提供文件的读写服务。Client根据获得的path来GET文件。

实例分析二【文件上传】

客户端上执行如下命令:(下载key为speach_of_dependence02的文件)

通过抓包发现有如下流程:

Storage node上通过http来提供文件的读写服务。Client根据获得的path来PUT文件。

FAQ

1. Moglistkeys是怎么查询到数据库的?
----请求发送给tracker,tracker查询database,包装结果给client
2. Mogstored是怎么存储文件的?
----client根据tracker给出的path PUT文件到storage node
3. 如何保证可靠性?可恢复性?
----通过class的count属性保证文件在系统的冗余
4. File与class的关系?
----class是应用在file上的一组属性集合

缺陷

 MogileFS是根据http来提供文件读写服务的,读写的速率取决于http的吞吐量;
 如果Tracker与storage node安装包分开发布,部署将更加容易;

学习感悟

1. Brad Fitzpatrick说了他不断的在写基础设施,这就是全力降低系统内各模块的耦合度嘛,各模块的复杂度降低了,性能也上来了,维护也简易了;
2. 避免重复造轮子,系统用http的webDAV实现了文件的读写操作,说白了,这个分布式文件系统就是一个分布式http server集群;

 

再次感谢同学的投稿,同时也欢迎大家踊跃投稿,地址:tougao#ttlsa.com,将#换成@

weinxin
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: