MogileFS學習筆記(1)

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高效的緣由在於不用讀取相應的文件再返回,而是直接從數據庫查找並返回文件的存儲位置php

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 : 文件存儲節點ruby

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

相關文章
相關標籤/搜索