分布式存儲最早是由Google提出的。其目的是通過廉價的服務器提供大規模、高并發場景下的Web訪問問題。它采用可擴展的系統結構,使用多個存儲服務器分擔存儲負載,使用位置服務器定位存儲信息。它不僅提高了系統的可靠性、可用性和訪問效率,而且易于擴展。
1.分布式存儲的興起
分布式存儲的興起與互聯網的發展密切相關。互聯網公司通常使用大規模分布式存儲系統,因為它們的數據量大,資本積累少。
不同于傳統的高端服務器、高端內存、高端處理器,互聯網公司的分布式存儲系統是由大量低成本、高性價比的普通PC服務器通過網絡連接而成。主要原因如下
(1)互聯網業務發展迅速,注重成本消耗,使得存儲系統無法依靠傳統的垂直擴展方式,即先買小型機,不夠的時候再買中型機甚至大型機。互聯網后端的分布式系統需要支持橫向擴展,即通過增加普通PC服務器來增加系統的整體處理能力。
(2)普通PC服務器性價比高,故障率高,需要在軟件層面實現自動容錯,保證數據一致性。
(3)另外,隨著服務器的不斷增加,需要在軟件層面實現自動負載均衡,使系統的處理能力得到線性擴展。
2.分布式存儲的重要性
從單機單用戶到單機多用戶,再到現在的網絡時代,應用系統發生了很多變化。然而,分布式系統仍然是目前討論的熱點。那么,分布式系統給我們帶來了什么,或者說為什么要有分布式系統?
(1)單機處理能力升級的性價比越來越低。企業發現通過更換硬件進行垂直擴展來提高性能越來越不經濟。
(2)單機處理能力存在瓶頸。在一個固定的時間點上,單個處理器有自己的性能瓶頸,也就是說即使你愿意花更多的錢去買計算能力,你也買不到;
(3)為了穩定性和可用性。如果采用點擊系統,機器正常的時候一切都OK,一旦出了問題,系統就完全沒用了。當然我們可以考慮容災備份等方案,這些方案會讓系統進化成分布式系統;
(4)云存儲和大數據發展的必然要求。云存儲和大數據是構建在分布式存儲上的應用。移動終端的計算能力和存儲空間有限,多設備間資源共享需求強烈,使得網盤、相冊等云存儲應用迅速普及。然而,云存儲的核心是后端大規模分布式存儲系統。大數據更進一步,它不僅需要存儲海量數據,還需要通過合適的計算框架或工具對這些數據進行分析,提取有價值的部分。沒有分布式存儲,就不可能分析大數據。仔細分析,會發現分布式存儲技術是互聯網后端架構的神器。掌握了這個技能,以后就很容易理解其他技術的本質了。