GFS
GFS是三個單詞的首字母,它的全稱是Google File System。
我們都知道作業系統都有自己的檔案系統,比如windows的檔案系統是ntfs,linux的檔案系統是ext4,而谷歌的檔案系統是什麼呢?說白了,它就是一個分散式檔案系統,它透過使用廉價的機器,搭建得高可用的,能夠儲存海量資料的分散式系統。
集中分散式我們知道,分散式系統指的是網路上可以互相連線的機器構成的軟體系統,它們整體對外提供服務,而面對大量的機器裝置,如何管理它們就成為了問題,而谷歌採取的就是我們熟悉的集中分散式,透過一箇中央集權裝置進行其它裝置的管理,為了提高管理效率,這個中央集權裝置採用記憶體儲存其它裝置節點的資訊。為了防止資料的丟失,透過日誌的方式記錄各個節點操作細心,如果你有過資料庫相關的知識的話,你會發現這和mysql和redis的持久化很像。
容錯性谷歌的檔案和機器都是普通的廉價機器,為了避免出現問題,所以對資料都進行了備份,也就是一個數據存在了三個地方,兩個地方的資料是冗餘備份。
當客戶端訪問檔案的時候,可以從三個地方按照一定規則訪問。
工作模式當客戶端想要讀取或者寫入檔案的時候,它會透過集中裝置master進行寫入讀取裝置的查詢,然後master給出檔案的路徑位置之後,客戶端直接和其它檔案系統連線操作,這樣可以避免master成為系統的瓶頸。
雖然master只有一個,但是它也是有備份的,只有這樣才能夠保證系統的高可靠性,而對於master的一致性管理,則是透過分散式演算法進行資料的同步。
裝置塊檔案是透過塊進行管理的,關於塊的大小,谷歌採用的是64M,這個大小的設計可以減少客戶端和master之間的通訊,因為大部分檔案都可以在這個塊裡寫入,但同時,過小的檔案也會造成塊空間的浪費。
總結GFS的提出並沒有使用很多看似高大上的技術,但是它卻實實在在解決了海量資料儲存在廉價機器上的願望。因為它大大減少了成本,所以它的思想被廣泛應用,這也是Hadoop誕生的原因。
現在來看,GFS也並非非常完美,但是技術就是這樣,它是不斷髮展前進的,並且它總是伴隨著解決實際需求問題而產生髮展的。