1. 用户浏览器发送"GET/foo"请求到负载均衡服务器 2. 请求分配到应用服务器(perl,php,ruby等) 3. 应用请求MogileFS的Tracker(mogilefsd进程)获取文件位置(或者缓存处理等) 4. 应用返回包含文件地址 'X-REPROXY-URL: http://path/from/mogilefs/tracker'的header 5. 拦截header,返回对应的文件
MogileFS高效的缘由在于不用读取相应的文件再返回,而是直接从数据库查找并返回文件的存储位置php
1. 客户端请求图片(带宽高等参数) 2. 图片处理服务程序 3. 程序判断是否有对应的缓存,有则直接返回 4. 调用MogileFS Tracker 查找文件 5. 对图片进行处理(缩放,水印,裁剪等) 6. 缓存图片 7. 返回请求文件
Application
: 应用,存储和读取文件后端
Tracker
(mogilefsd进程): 基于事件的父级 process/message bus,管理全部的来自应用的客户端通讯请求。包括均衡请求到"Query workers",处理全部的mogilefsd与子进程之间的通讯。 能够在不一样的主机上运行两个tracker,或者更多的用于负载均衡(推荐使用多个tracker).mogilefsd的子进程包括:浏览器
Database
: 存储MogileFS的meta数据(namespace,文件对应路径).缓存
Storage Nodes
: 文件存储节点ruby
能够直接使用WebServer处理文件请求,无需后端程序(好比PHP)服务器