1、常規圖片存儲策略linux
常規的通常400G下面的圖片存儲可以採用比較傳統的分文件夾的形式apache
好比文件夾層級爲 年份/行業屬性/月份/日期/用戶屬性分佈式
有幾個比較重要的原則就是server
一、單個文件夾下的文件個數不要超過2000個,多了尋址較慢,你在linux下ls就能看到數量太多的時候的效果了索引
二、文件夾層級結構不要太深,這樣server處理尋址較慢圖片
2、海量圖片存儲策略hash
一、核心難點
it
(1)海量的意思就是圖片的數量級別是上億--光是咱們創建索引就玩不轉,沒那麼牛的庫存儲class
(2)圖片總大小是依照T計算的--單個節點確定支持不了集羣
(3)圖片訪問很是easy有長尾效應--就是沒有所謂的熱點
二、解決方式
(1)、存儲方案
採用分佈式隨即的方式將一些小文件存放到分佈式集羣環境中,用hash的方式來記錄位置(一般是先hash,而後確認存儲位置)。將位置直接做爲文件名
計算哈希的常見方法: hash(key)%n =》大體的物理位置
分佈式存儲常見方案:hdfs,tfs....
(2)、訪問方案(若是咱們用apache)
硬訪問
直接讓apache依據文件名稱字找到指定文件存放位置,讀取文件流
軟訪問:
直接用apache的rewrite這個功能,將文件讀取