存儲系統(tǒng)的關(guān)注點
關(guān)于存儲系統(tǒng),一般我們關(guān)注下面幾個方面:
數(shù)據(jù)分布與負載均衡
數(shù)據(jù)存儲的可靠性與一致性
數(shù)據(jù)訪問性能
系統(tǒng)容錯能力
系統(tǒng)擴展能力
在單機存儲系統(tǒng)中有一種獨立磁盤冗余陣列(RAID,redundant array of independent disks)技術(shù),
是把相同的數(shù)據(jù)存儲在多個硬盤不同地方的方法。通過把數(shù)據(jù)放在多個硬盤上,輸入輸出操作能以平衡的方式交疊,改良性能。
這個技術(shù)基本解決了我們上面提到的前三點,數(shù)據(jù)可以通過磁盤陣列控制程序均勻分布在多個硬盤上,
以實現(xiàn)負載均衡,并通過冗余來保障可靠性。類似單機掛載多磁盤,數(shù)據(jù)在磁盤陣列上的冗余副本要保持一致也容易。
存儲系統(tǒng)的訪問性能基本受制于磁盤的性能,通過分散到多磁盤確實達到了提升性能的效果。
真正的問題難點在于后兩點:
磁盤陣列解決了單一磁盤的脆弱性,但并不能提升存儲子系統(tǒng)整體的可用性,或者說容錯能力。
同理擴展能力同樣受制于磁盤陣列的物理擴展槽的限制。
分布式存儲的定義與分類
所以分布式存儲應(yīng)運而生,作為存儲系統(tǒng)它同樣需要面對上述問題。
先來看下它的定義:
分布式存儲系統(tǒng)是大量普通PC服務(wù)器通過網(wǎng)絡(luò)互聯(lián),對外作為一個整體提供存儲服務(wù)。
從上面的定義看,更多時候我們把分布式存儲作為一種服務(wù)面向各種不同的數(shù)據(jù)存儲需求。
從數(shù)據(jù)存儲模型上,我們可以進一步分類分布式存儲服務(wù)為:
文件模型:對應(yīng)分布式文件系統(tǒng),如:GFS、HDFS
關(guān)系模型:對應(yīng)分布式數(shù)據(jù)庫系統(tǒng),如:Google Spanner、Taobao OceanBase
鍵值模型:很多NoSQL系統(tǒng)采用,如:Redis
分布式存儲的得與失
面對單機存儲系統(tǒng)面對兩個難點,分布式存儲系統(tǒng)通過集群方式擴展到幾百甚至幾千臺集群規(guī)模來解決系統(tǒng)擴展能力,
通過軟件層面對單機服務(wù)器的硬件容錯能力大大提升了整體集群的容錯能力。
在獲得這些好處時,自然也有所犧牲,所謂有得必有失。
說到存儲不得不提單機數(shù)據(jù)庫存儲的事務(wù)特性:A(原子性)C(一致性)I(隔離性)D(持久性),
而擴展到分布式存儲后,受限于分布式C(一致性)A(可用性)P(分區(qū)容忍性)理論,幾乎不可能滿足完整得事務(wù)特性。
各種分布式存儲服務(wù)實現(xiàn)都對單機存儲的事務(wù)特性作了權(quán)衡取舍,滿足特定的服務(wù)場景需求。
另外分布式存儲系統(tǒng)是基于網(wǎng)絡(luò)互聯(lián)的,所以除了基本得磁盤訪問性能開銷,還多了網(wǎng)絡(luò)性能開銷。
通常一般機械硬盤得平均尋道時間為10ms,而機房內(nèi)網(wǎng)得網(wǎng)絡(luò)訪問開銷一般小于0.5 ms,相對性能損失較小。
而原本由磁陣控制程序負責得數(shù)據(jù)在磁盤中的分布、負載均衡策略和一致性保障,
在分布式存儲中都需要軟件在整個機器集群層面去考慮,復雜度大大提高。
來源:CSDN
原文:https://blog.csdn.net/mindfloating/article/details/47811665