mogileFS的工作方式(譯)

下面簡要闡述 MogileFS 是怎麼工作的.

mogileFS由如下一些部分構成:

  • Application: 想要 保存/加載 文件的應用
  • Tracker (the mogilefsd process): 基于事件的(event-based) 父 進程/消息 總線來管理所有來之于客戶端應用的交互(requesting operations to be performed), 包括將請求負載平衡到 “query workers” 中,讓mogilefsd的子進程去處理. 你可以在不同的機器上運行兩個Tracker, 為了高可用性, 或使用更多的Tracker為了負載平衡(你需要運行多于兩個的Tracker). mogilefsd的子進程有:
    • Replication 個機器間復制文件
    • Deletion 從命名空間刪除是立即的,從文件系統刪除是異步的
    • Query 響應客戶端的請求
    • Reaper 在磁盤失敗後將文件復制請求重新放到隊列中
    • Monitor 監測主機和設配的健康度和狀態
  • Database 數據庫用來存放MogileFS的元數據 (命名空間, 和文件在哪裡). 這應該設置一個高可用性(HA)的環境以防止單點失敗.
  • Storage Nodes 實際文件存放的地方. 存儲節點是一個HTTP服務器,用來做 刪除,存放等事情,任何WebDAV服務器都可以, 不過推薦使用 mogstored 。 mogilefsd 可以配置到兩個機器上使用不同端口… mogstored 為所有 DAV 操作 (和流量監測), 並且你自己選擇的快速的HTTP服務器用來做 GET 操作(給客戶端提供文件). 典型的用戶沒一個加載點有一個大容量的 SATA 磁盤,他們被加載到 /var/mogdata/devNN.

High-level 流程:

  • 應用程序請求打開一個文件 (通過RPC 通知到 tracker, 找到一個可用的機器). 做一個 “create_open” 請求.
  • tracker 做一些負載均衡(load balancing)處理,決定應該去哪兒,然後給應用程序一些可能用的位置。
  • 應用程序寫到其中的一個位置去 (如果寫失敗,他會重新嘗試並寫到另外一個位置去).
  • 應用程序 (client) 通過”create_close” 告訴tracker文件寫到哪裡去了.
  • tracker 將該名稱和域命的名空間關聯 (通過數據庫來做的)
  • tracker, 在後台, 開始復制文件,知道他滿足該文件類別設定的復制規則
  • 然後,應用程序通過 “get_paths” 請求 domain+key (key == “filename”) 文件, tracker基于每一位置的I/O繁忙情況回復(在內部經過 database/memcache/etc 等的一些抉擇處理), 該文件可用的完整 URLs地址列表.
  • 應用程序然後按順序嘗試這些URL地址. (tracker’持續監測主機和設備的狀態,因此不會返回死連接,默認情況下他對返回列表中的第一個元素做雙重檢查,除非你不要他這麼做..)

轉自 : http://www.sunnyu.com/?p=32

分享此文章


0 回應 到 “mogileFS的工作方式(譯)”


  1. 沒有留言

留言回覆