如何管理高度可擴(kuò)展系統(tǒng)中的元數(shù)據(jù)?
譯文譯者 | 布加迪
審校 | 孫淑娟
元數(shù)據(jù)過(guò)去對(duì)數(shù)據(jù)中心架構(gòu)的影響很小。元數(shù)據(jù)是有關(guān)數(shù)據(jù)的數(shù)據(jù),隱藏在某個(gè)地方以便檢索和分析,對(duì)業(yè)務(wù)運(yùn)營(yíng)幾乎沒(méi)什么影響。隨著大數(shù)據(jù)、人工智能、物聯(lián)網(wǎng)和5G等應(yīng)用系統(tǒng)規(guī)模擴(kuò)大,它們積累了眾多元數(shù)據(jù),現(xiàn)在數(shù)據(jù)和元數(shù)據(jù)之間的傳統(tǒng)關(guān)系已被顛覆。
十年前,數(shù)據(jù)和元數(shù)據(jù)的典型比率是1000:1。比如說(shuō),大小為32K的數(shù)據(jù)單元(文件、塊或?qū)ο螅⒂写蠹s32個(gè)字節(jié)的元數(shù)據(jù)。現(xiàn)有的數(shù)據(jù)引擎能夠非常有效地處理這些數(shù)量的數(shù)據(jù)。如今,對(duì)象很小時(shí),這個(gè)比率通常更像是1:10。許多組織現(xiàn)在發(fā)現(xiàn)元數(shù)據(jù)超過(guò)了所存儲(chǔ)的數(shù)據(jù)量;隨著非結(jié)構(gòu)化數(shù)據(jù)的數(shù)量持續(xù)猛增,情形只會(huì)變得更糟。
元數(shù)據(jù)激增的這種狀況引發(fā)了這些方面的問(wèn)題:將元數(shù)據(jù)存儲(chǔ)在何處、如何有效管理,最重要的是如何擴(kuò)展底層架構(gòu)以支持快速增長(zhǎng)的元數(shù)據(jù)量和快速擴(kuò)展的系統(tǒng)。除非元數(shù)據(jù)擴(kuò)展問(wèn)題得到了充分解決,否則保存元數(shù)據(jù)的系統(tǒng)最終會(huì)遇到可能影響業(yè)務(wù)運(yùn)營(yíng)和性能的問(wèn)題。
擴(kuò)展元數(shù)據(jù)的四個(gè)解決之道
處理元數(shù)據(jù)時(shí),無(wú)法有效地運(yùn)用這種傳統(tǒng)做法:添加更多的計(jì)算資源及/或?qū)嵤└鞣N解決方案來(lái)監(jiān)控和優(yōu)化IT堆棧的不同層,從而解決可擴(kuò)展性和性能問(wèn)題。
組織通常使用RocksDB之類的鍵值存儲(chǔ)(KVS)系統(tǒng)來(lái)管理元數(shù)據(jù),KVS系統(tǒng)依賴存儲(chǔ)引擎(又叫數(shù)據(jù)引擎),是對(duì)數(shù)據(jù)進(jìn)行排序和索引的軟件堆棧的一部分。
然而現(xiàn)有的數(shù)據(jù)引擎存在容量有限、CPU利用率高和內(nèi)存消耗大等先天不足,這些都是無(wú)法通過(guò)單單添加計(jì)算能力就能解決的。通常,一系列運(yùn)營(yíng)任務(wù)在此時(shí)開(kāi)始,其中很少有有效的長(zhǎng)期解決方案。
1. 分片——該過(guò)程將數(shù)據(jù)集拆分為邏輯片段,并同時(shí)運(yùn)行多個(gè)數(shù)據(jù)集。這是處理高度可擴(kuò)展系統(tǒng)生成的元數(shù)據(jù)的一種方法——至少在短期內(nèi)如此。然而,隨著越來(lái)越多的數(shù)據(jù)流入系統(tǒng),最初的分片方案常常出問(wèn)題,在開(kāi)發(fā)人員必須不斷重新分片的情況下開(kāi)始暴露出來(lái),本身成為一項(xiàng)活動(dòng)。
2. 數(shù)據(jù)庫(kù)調(diào)優(yōu)——即便使用靈活高效的NoSQL數(shù)據(jù)庫(kù),開(kāi)發(fā)人員也常常難以為遇到需要調(diào)優(yōu)的性能問(wèn)題的應(yīng)用程序?qū)iT創(chuàng)建不尋常的配置。如果工作負(fù)載或底層系統(tǒng)發(fā)生變化,這些實(shí)例就會(huì)遇到額外的、更大的性能問(wèn)題。隨著應(yīng)用系統(tǒng)越來(lái)越龐大、越來(lái)越復(fù)雜,這可能會(huì)帶來(lái)看似無(wú)窮無(wú)盡的進(jìn)一步重新調(diào)優(yōu)的循環(huán),結(jié)果耗費(fèi)開(kāi)發(fā)人員的時(shí)間。
3. 數(shù)據(jù)引擎調(diào)優(yōu)——存儲(chǔ)管理的基本操作通常由數(shù)據(jù)引擎(即存儲(chǔ)引擎)執(zhí)行。數(shù)據(jù)引擎作為應(yīng)用程序和存儲(chǔ)層之間的軟件層加以安裝,這是一種嵌入式鍵值存儲(chǔ)(KVS),用于對(duì)數(shù)據(jù)進(jìn)行排序和索引。此外,KVS日益作為應(yīng)用程序內(nèi)部的軟件層加以實(shí)施,以便在傳輸過(guò)程中對(duì)實(shí)時(shí)數(shù)據(jù)執(zhí)行不同的動(dòng)態(tài)活動(dòng)。這種類型的部署常常旨在管理元數(shù)據(jù)密集型工作負(fù)載,并防止可能導(dǎo)致性能問(wèn)題的元數(shù)據(jù)訪問(wèn)瓶頸。
數(shù)據(jù)引擎是復(fù)雜的構(gòu)件,組織常常發(fā)現(xiàn)在根據(jù)特定的性能和可擴(kuò)展性要求,調(diào)整和配置應(yīng)用程序底部的數(shù)據(jù)引擎方面存在技能方面的缺口。就連熟練的開(kāi)發(fā)人員也難以克服這一點(diǎn)。
4. 添加資源——解決任何性能問(wèn)題的傳統(tǒng)方法案都是添加額外的存儲(chǔ)資源以解決問(wèn)題。這常常是一種權(quán)宜之計(jì),成本無(wú)以為繼。
新的方法
當(dāng)前的數(shù)據(jù)架構(gòu)再也不能支持現(xiàn)代企業(yè)的需求,這促使企業(yè)需要從頭開(kāi)始設(shè)計(jì)新數(shù)據(jù)引擎,以跟上元數(shù)據(jù)增長(zhǎng)的步伐。但隨著開(kāi)發(fā)人員開(kāi)始深入數(shù)據(jù)引擎的底層,他們面臨這一挑戰(zhàn):在不影響存儲(chǔ)性能、敏捷性和成本效益的情況下,實(shí)現(xiàn)更大的規(guī)模。這就需要一種新的架構(gòu)來(lái)支持新一代數(shù)據(jù)引擎,該引擎可以有效地處理海量元數(shù)據(jù),仍能確保應(yīng)用程序可以快速訪問(wèn)元數(shù)據(jù)。
下一代數(shù)據(jù)引擎可能是新興用例的關(guān)鍵賦能因素,這些用例的特點(diǎn)是數(shù)據(jù)密集型工作負(fù)載需要前所未有的規(guī)模和性能。比如說(shuō),實(shí)施適當(dāng)?shù)臄?shù)據(jù)基礎(chǔ)設(shè)施來(lái)存儲(chǔ)和管理物聯(lián)網(wǎng)數(shù)據(jù)對(duì)于智慧城市項(xiàng)目的成功至關(guān)重要。該基礎(chǔ)設(shè)施必須有足夠的可擴(kuò)展性,以便在不犧牲性能的情況下,處理來(lái)自交通管理、安全、智能照明、廢物管理及許多其他系統(tǒng)的不斷增多的元數(shù)據(jù)。這對(duì)響應(yīng)時(shí)間和延遲高度敏感的應(yīng)用程序而言尤為重要,比如交通優(yōu)化和智能泊車。
元數(shù)據(jù)增長(zhǎng)將繼續(xù)是數(shù)據(jù)中心面臨的問(wèn)題,涉及越來(lái)越多的各種數(shù)據(jù)密集型用例。最近加大數(shù)據(jù)引擎創(chuàng)新力度的舉措為致力于使應(yīng)用程序能夠擴(kuò)展和增長(zhǎng)的團(tuán)隊(duì)提供了選擇。
原文標(biāo)題:??How to Manage Metadata in a Highly Scalable System???,作者:Adi Gelvan