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)服務器