一般來(lái)說(shuō),當(dāng)人們考慮對(duì)象存儲(chǔ)時(shí),只考慮一件事——每TB/GB的價(jià)格。盡管這是一個(gè)不錯(cuò)的成本指標(biāo),但它的作用是使對(duì)象存儲(chǔ)一維化,并將其降級(jí)為存檔用例。此外,它扭曲了企業(yè)技術(shù)堆棧中這一日益重要的部分的價(jià)值。
坦率地說(shuō),這應(yīng)該歸咎于傳統(tǒng)對(duì)象存儲(chǔ)廠商。多年來(lái),它們?cè)诩夹g(shù)方面創(chuàng)新不足,轉(zhuǎn)而提供更便宜的產(chǎn)品。它們還會(huì)說(shuō)這就是顧客想要的,但它們錯(cuò)了。
AWS去年收入達(dá)250億美元可作為證據(jù)——其中絕大多數(shù)是高性能的主要對(duì)象存儲(chǔ)。如果我們保守地將S3存儲(chǔ)服務(wù)的規(guī)模算為200億美元,可以說(shuō),S3的規(guī)模是其他廠商的總和。再加上價(jià)格相似、增長(zhǎng)迅速的Azure Blob和Google Cloud,情況就明朗了——成本只是一個(gè)考慮因素。
這就是為什么現(xiàn)代企業(yè)關(guān)注的是更廣泛的一系列指標(biāo)——強(qiáng)調(diào)性能、運(yùn)維效率、靈活性和價(jià)格的指標(biāo),而不僅僅是價(jià)格。他們認(rèn)識(shí)到將數(shù)據(jù)放在“冰上”會(huì)降低其價(jià)值。在目標(biāo)是最大化組織數(shù)據(jù)的價(jià)值的時(shí)候,供應(yīng)商的方法似乎與之背道而馳。
企業(yè)應(yīng)該考慮什么?這分為五大類:性能、可擴(kuò)展性、S3兼容性、故障響應(yīng)、一致性。成本之外,這五個(gè)要素定義了對(duì)象存儲(chǔ)中的新指標(biāo)。
性能
傳統(tǒng)上,對(duì)象存儲(chǔ)并不以性能著稱。在價(jià)格競(jìng)爭(zhēng)中,廠商不斷犧牲性能?,F(xiàn)代對(duì)象存儲(chǔ)改變了這一點(diǎn)。
從Amazon到Minio,我們都看到了接近甚至超過(guò)Hadoop的速度。新的對(duì)象存儲(chǔ)指標(biāo)涉及到讀寫(xiě)速度(HDD為10GB/s,NVMe為35+GB/s)。對(duì)于Spark、Presto、Tensorflow、Teradata、Vertica、Splunk和分析堆棧中的其他現(xiàn)代計(jì)算框架來(lái)說(shuō),這種吞吐量非???。MPP數(shù)據(jù)庫(kù)以對(duì)象存儲(chǔ)為目標(biāo)這一事實(shí)證明,對(duì)象存儲(chǔ)越來(lái)越成為主要存儲(chǔ)。
如果對(duì)象存儲(chǔ)系統(tǒng)無(wú)法提供這些速度,則無(wú)法與所有數(shù)據(jù)交互,也無(wú)法從中提取價(jià)值。即使你將數(shù)據(jù)從傳統(tǒng)對(duì)象存儲(chǔ)中提取到內(nèi)存中的處理框架中,你仍然需要吞吐量來(lái)將數(shù)據(jù)往返于該內(nèi)存中——你根本無(wú)法從傳統(tǒng)對(duì)象設(shè)備獲得這樣的吞吐量。
這是一個(gè)關(guān)鍵點(diǎn)。新的性能指標(biāo)是吞吐量,而不是延遲。這是大規(guī)模數(shù)據(jù)所需要的——這是現(xiàn)代數(shù)據(jù)基礎(chǔ)設(shè)施中的一個(gè)標(biāo)準(zhǔn)。
應(yīng)該注意的是,雖然性能基準(zhǔn)是一個(gè)很好的代理,但是只有在該環(huán)境中運(yùn)行了特定的應(yīng)用程序之后,才能真正知道性能是什么樣子的。只有這樣,它們才能理解瓶頸到底是什么,是存儲(chǔ)軟件、驅(qū)動(dòng)器、網(wǎng)絡(luò)還是計(jì)算層。
可伸縮性
可伸縮性通常指一個(gè)命名空間中的PB數(shù)。每個(gè)供應(yīng)商都聲稱zeta規(guī)模,但隱藏了這樣一個(gè)事實(shí):隨著規(guī)模的擴(kuò)大,龐大的、單體的系統(tǒng)變得脆弱、復(fù)雜、不穩(wěn)定和昂貴。
可伸縮性的新指標(biāo)是你可以處理多少個(gè)不同的命名空間或租戶。
這個(gè)指標(biāo)是直接從hyper-scaler中獲取的,其中,構(gòu)建塊很小,但可以擴(kuò)展到數(shù)十億個(gè)。簡(jiǎn)而言之,這是云原生的方式。
當(dāng)構(gòu)建塊很小時(shí),一切都可以更有效地理解和優(yōu)化——安全性、訪問(wèn)控制、策略管理、生命周期管理、無(wú)中斷升級(jí)和更新以及最終的性能。構(gòu)建塊的大小是故障域可管理性的函數(shù)。這就是高彈性系統(tǒng)的架構(gòu)。
多租戶在現(xiàn)代企業(yè)中具有多個(gè)維度。當(dāng)然,它指的是企業(yè)如何組織對(duì)數(shù)據(jù)和應(yīng)用程序的訪問(wèn),它也指應(yīng)用程序本身以及它們?cè)谶壿嬌先绾蜗嗷ジ綦x。
現(xiàn)代多租戶方法具有以下特點(diǎn):
——租戶可以在短時(shí)間內(nèi)從幾百個(gè)發(fā)展到幾百萬(wàn)個(gè)。
——租戶之間完全隔離,使它們能夠運(yùn)行具有不同配置、權(quán)限、功能、安全性和服務(wù)級(jí)別的同一對(duì)象存儲(chǔ)軟件的不同版本。當(dāng)擴(kuò)展新服務(wù)器、更新和地理位置時(shí),這是一個(gè)實(shí)際的運(yùn)維問(wèn)題。
——有彈性和按需。
——每個(gè)操作都是API驅(qū)動(dòng)的,自動(dòng)化的,沒(méi)有人看儀表板。
——軟件足夠輕量,可以進(jìn)行容器化,并利用Kubernetes等行業(yè)標(biāo)準(zhǔn)的編排服務(wù)。
S3兼容性
Amazon S3 API是對(duì)象存儲(chǔ)的事實(shí)標(biāo)準(zhǔn),以至于每個(gè)對(duì)象存儲(chǔ)軟件供應(yīng)商都聲稱與之兼容。也就是說(shuō),AWS S3的兼容性實(shí)際上是二元的。S3兼容性的指標(biāo)是1。
這意味著,有成百上千的“角落”用例并沒(méi)有如你所愿發(fā)生。這對(duì)專有軟件或設(shè)備供應(yīng)商來(lái)說(shuō)尤其具有挑戰(zhàn)性。原因是,它們的大多數(shù)用例都是直接存檔或備份,因此API調(diào)用的多樣性很低,而且用例非常同質(zhì)。顯然,這是一個(gè)開(kāi)源軟件具有顯著優(yōu)勢(shì)的領(lǐng)域。考慮到應(yīng)用程序、操作系統(tǒng)和硬件架構(gòu)的大小和多樣性,足以覆蓋大多數(shù)“角落”用例。
對(duì)應(yīng)用程序創(chuàng)建者來(lái)說(shuō),這很重要。你需要測(cè)試應(yīng)用程序。開(kāi)源使評(píng)估供應(yīng)商聲明和確定平臺(tái)對(duì)應(yīng)用程序性能的影響變得容易。如果你的供應(yīng)商足夠好,可以作為一個(gè)門(mén)戶,并被其他人作為一個(gè)門(mén)戶,那么你可以有信心,它能滿足你的需要。關(guān)于開(kāi)源和S3的最后一點(diǎn)是,開(kāi)源意味著企業(yè)避免了供應(yīng)商鎖定,提高了透明度。
關(guān)于S3兼容,如果你正在運(yùn)行大數(shù)據(jù)應(yīng)用程序,S3 SELECT通過(guò)用SQL從對(duì)象存儲(chǔ)中只提取所需的內(nèi)容,可以大大提高性能和效率。
另外,對(duì)bucket通知的支持也是關(guān)鍵。bucket通知有助于無(wú)服務(wù)器計(jì)算——這是任何基于微服務(wù)的功能即服務(wù)中的關(guān)鍵組件。假設(shè)對(duì)象存儲(chǔ)是云中存儲(chǔ)的事實(shí)標(biāo)準(zhǔn),那么當(dāng)將對(duì)象服務(wù)器公開(kāi)給云原生應(yīng)用程序時(shí),此功能是必須的。
最后,S3實(shí)現(xiàn)需要支持Amazon S3服務(wù)器端加密API(SSE-C、SSE-S3、SSE-KMS)。更棒的是,它應(yīng)該支持可證明足夠安全的防篡改。
故障
在對(duì)象存儲(chǔ)中,最容易被忽略的指標(biāo)可能是系統(tǒng)如何處理故障。故障會(huì)發(fā)生,有多種形式。對(duì)象存儲(chǔ)系統(tǒng)需要優(yōu)雅地處理所有這些問(wèn)題。
例如,如果存在單點(diǎn)故障,那么這個(gè)指標(biāo)是零。
不幸的是,許多對(duì)象存儲(chǔ)系統(tǒng)將使用“特殊”節(jié)點(diǎn),這些節(jié)點(diǎn)必須啟動(dòng)才能使集群正常工作。其中包括名稱節(jié)點(diǎn)或元數(shù)據(jù)服務(wù)器。這就會(huì)造成單點(diǎn)故障。
即使有多個(gè)故障點(diǎn),承受災(zāi)難性失敗的能力也是至關(guān)重要的。驅(qū)動(dòng)器會(huì)出現(xiàn)故障,服務(wù)器會(huì)壞。關(guān)鍵是采用將故障視為正常情況的軟件。這意味著,當(dāng)磁盤(pán)或節(jié)點(diǎn)關(guān)閉時(shí),軟件可以不受影響地繼續(xù)運(yùn)行。
inline erasure coding和bitrot protection帶來(lái)的革命確保在軟件返回?cái)?shù)據(jù)之前,你可以丟失與奇偶校驗(yàn)塊一樣多的磁盤(pán)或節(jié)點(diǎn)(這通常是驅(qū)動(dòng)器的一半)。
故障很少大規(guī)模測(cè)試,但應(yīng)該是強(qiáng)制性的。模擬負(fù)載下的故障將提供故障總成本(數(shù)據(jù)丟失、時(shí)間和技能)的準(zhǔn)確消息。
一致性
一致性的指標(biāo)是100%。一致性是任何存儲(chǔ)系統(tǒng)中的一個(gè)關(guān)鍵組件,但嚴(yán)格的一致性很少。例如,Amazon S3 ListObject不是嚴(yán)格一致的,它只是最終一致的。
嚴(yán)格一致性是什么意思?對(duì)于確認(rèn)的PUT操作之后的所有操作,必須保持以下?tīng)顟B(tài):更新的值在從任何節(jié)點(diǎn)讀取時(shí)都可見(jiàn);更新帶有冗余,免受節(jié)點(diǎn)故障的影響。
這意味著,如果在寫(xiě)入過(guò)程中拔出插頭,不會(huì)丟失任何內(nèi)容。結(jié)果是系統(tǒng)永遠(yuǎn)不會(huì)返回?fù)p壞或過(guò)時(shí)的數(shù)據(jù)。這是一個(gè)很高的標(biāo)準(zhǔn),對(duì)交易型應(yīng)用程序到備份和恢復(fù)用例都有影響。
結(jié)論
這些是對(duì)象存儲(chǔ)中的新指標(biāo),反映了現(xiàn)代企業(yè)的使用模式,其中性能、一致性、可伸縮性、故障域和S3兼容性是云原生應(yīng)用程序和大數(shù)據(jù)分析的基礎(chǔ)。在構(gòu)建現(xiàn)代數(shù)據(jù)堆棧時(shí),除了考慮成本之外,別忘了這幾個(gè)指標(biāo)。
責(zé)任編輯:zl
-
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
52文章
8057瀏覽量
145625 -
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4172瀏覽量
85483 -
API
+關(guān)注
關(guān)注
2文章
1465瀏覽量
61676
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論