Client.pm
MogileFS::Utils模块将Client.pm的api封装了起来
客户端上执行如下命令:(下载key为speach_of_dependence02的文件)
1 | mogfetch — trackers = cluster – master01 : 7001 — domain = abc — key = ‘speach_of_dependence02’ — file = ‘text.txt’ |
通过抓包发现有如下流程:
mogilefs-05
Master查询db的语句如下:
1 2 | SELECT fid , dmid , dkey , length , classid , devcount FROM file WHERE dmid = ‘1’ AND dkey = ‘speach_of_dependence’ SELECT devid FROM file_on WHERE fid = ‘3’ |
由于系统内devid不允许重复,于是devid隐含了hostid,由此Master根据mem中的数据能够构造出path。
Storage node上通过http来提供文件的读写服务。Client根据获得的path来GET文件。
客户端上执行如下命令:(下载key为speach_of_dependence02的文件)
1 | mogupload — trackers = cluster – master01 : 7001 — domain = abc — key = ‘speach_of_dependence03’ — file = “speach02” |
通过抓包发现有如下流程:
Storage node上通过http来提供文件的读写服务。Client根据获得的path来PUT文件。
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集群;
文章转载来自:trustauth.cn