MogileFS学习笔记(1)

巧了我就是萌 提交于 2019-12-06 03:49:20

MogileFS


MogileFS 服务请求处理流程

1. 用户浏览器发送"GET/foo"请求到负载均衡服务器
2. 请求分配到应用服务器(perl,php,ruby等)
3. 应用请求MogileFS的Tracker(mogilefsd进程)获取文件位置(或者缓存处理等)
4. 应用返回包含文件地址 'X-REPROXY-URL: http://path/from/mogilefs/tracker'的header
5. 拦截header,返回对应的文件

MogileFS高效的原因在于不用读取相应的文件再返回,而是直接从数据库查找并返回文件的存储位置

MogileFS图片系统处理流程:

1. 客户端请求图片(带宽高等参数)
2. 图片处理服务程序
3. 程序判断是否有对应的缓存,有则直接返回
4. 调用MogileFS Tracker 查找文件
5. 对图片进行处理(缩放,水印,裁剪等)
6. 缓存图片
7. 返回请求文件

MogileFS相关安装介绍参考扶凯的博客,详细英文文档点击

MogileFS高级

  • Application : 应用,存储和读取文件

  • Tracker (mogilefsd进程): 基于事件的父级 process/message bus,管理所有的来自应用的客户端通信请求。包括均衡请求到"Query workers",处理所有的mogilefsd与子进程之间的通信。 可以在不同的主机上运行两个tracker,或者更多的用于负载均衡(推荐使用多个tracker).mogilefsd的子进程包括:

    • Replication 文件复制
    • Deletion 文件删除
    • Query 查询
    • Reaper reenqueuing files for replication after a disk fails
    • Monitor 主机和device状态监视器
  • Database : 存储MogileFS的meta数据(namespace,文件对应路径).

  • Storage Nodes : 文件存储节点

MogileFS工作原理

  • app发送请求打开一个文件
  • Tracker 做一些负载均衡的处理,决定在哪儿处理,会返回给app一些可用的位置
  • app使用其中一个位置存储文件
  • app 通过 “create_close” API 通知tracker 文件的写入位置
  • tracker 将名称加入domain的namespace(通过数据库)
  • app通过(key == "filename")向该domain发送一个get_paths请求,tracker在通过数据库或缓存系统等获取文件的保存位置,所有的该文件可访问的URL,基于权重的存储位置 ,返回响应结果
  • app按顺序尝试URL

其他

可以直接使用WebServer处理文件请求,无需后端程序(比如PHP)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!