亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)的三要素

 更新時(shí)間:2021年12月27日 14:17:35   作者:海陸云  
大家好,本篇文章主要講的是分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)的三要素,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽

前言

CAP 理論指出,在分布式系統(tǒng)中,不能同時(shí)滿(mǎn)足一致性、可用性和分區(qū)容錯(cuò)性,指導(dǎo)了分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)的設(shè)計(jì)。

隨著數(shù)據(jù)量和訪(fǎng)問(wèn)量的增加,單機(jī)性能已經(jīng)不能滿(mǎn)足用戶(hù)需求,分布式集群存儲(chǔ)成為一種常用方式。把數(shù)據(jù)分布在多臺(tái)存儲(chǔ)節(jié)點(diǎn)上,可以為大規(guī)模應(yīng)用提供大容量、高性能、高可用、 高擴(kuò)展的存儲(chǔ)服務(wù)。而分布式存儲(chǔ)系統(tǒng)就是其具體實(shí)現(xiàn)。

分布式存儲(chǔ)系統(tǒng)的關(guān)鍵三要素:顧客、導(dǎo)購(gòu)與貨架。

什么是分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)?

分布式存儲(chǔ)系統(tǒng)的核心邏輯:將用戶(hù)需要存儲(chǔ)的數(shù)據(jù)根據(jù)某種規(guī)則存儲(chǔ)到不同的機(jī)器上,當(dāng)用戶(hù)想要獲取指定數(shù)據(jù)時(shí),再按照規(guī)則到存儲(chǔ)數(shù)據(jù)的機(jī)器里獲取。

如下圖所示,當(dāng)用戶(hù)(即應(yīng)用程序)想要訪(fǎng)問(wèn)數(shù)據(jù) D,分布式操作引擎通過(guò)一些映射方式,比如 Hash、一致性 Hash、數(shù)據(jù)范圍分類(lèi)等,將用戶(hù)引導(dǎo)至數(shù)據(jù) D 所屬的存儲(chǔ)節(jié)點(diǎn)獲取數(shù)據(jù)。

在這里插入圖片描述

獲取數(shù)據(jù)的整個(gè)過(guò)程與商店購(gòu)物的過(guò)程類(lèi)似,顧客到商店購(gòu)物時(shí),導(dǎo)購(gòu)會(huì)根據(jù)顧客想要購(gòu)買(mǎi)的商品引導(dǎo)顧客到相應(yīng)的貨架,然后顧客從這 個(gè)貨架上獲取要購(gòu)買(mǎi)的商品,完成購(gòu)物。這里的顧客就是圖中的應(yīng)用程序,導(dǎo)購(gòu)就相當(dāng)于分布式操作引擎,它會(huì)按照一定的規(guī)則找到相應(yīng)的貨架,貨架就是存儲(chǔ)數(shù)據(jù)的不同機(jī)器節(jié)點(diǎn)。

這個(gè)過(guò)程就是分布式存儲(chǔ)系統(tǒng)中獲取數(shù)據(jù)的通用流程,顧客、導(dǎo)購(gòu)和貨架組成了分布式存儲(chǔ)系統(tǒng)的三要素,分別對(duì)應(yīng)著分布式領(lǐng)域中的數(shù)據(jù)生產(chǎn)者 / 消費(fèi)者、數(shù)據(jù)索引和數(shù)據(jù)存儲(chǔ)。

分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)三要素

顧客就是數(shù)據(jù)的生產(chǎn)者和消費(fèi)者,顧客代表兩類(lèi)角色,生產(chǎn)者會(huì)生產(chǎn)數(shù)據(jù)(比如, 商店購(gòu)物例子中的供貨商就屬于生產(chǎn)類(lèi)顧客),將數(shù)據(jù)存儲(chǔ)到分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中,消費(fèi)者是從分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)中獲取數(shù)據(jù)進(jìn)行消費(fèi)(比如,商店購(gòu)物例子中購(gòu)買(mǎi)商品的用戶(hù)就屬于消費(fèi)類(lèi)顧客);導(dǎo)購(gòu)就是數(shù)據(jù)索引,將訪(fǎng)問(wèn)數(shù)據(jù)的請(qǐng)求轉(zhuǎn)發(fā)到數(shù)據(jù)所在的存儲(chǔ)節(jié)點(diǎn);貨架就是存儲(chǔ)設(shè)備,用于存儲(chǔ)數(shù)據(jù)。

顧客:生產(chǎn)和消費(fèi)數(shù)據(jù)

顧客相當(dāng)于分布式存儲(chǔ)系統(tǒng)中的應(yīng)用程序,而數(shù)據(jù)是應(yīng)用程序的原動(dòng)力。根據(jù)數(shù)據(jù)的產(chǎn)生和使用,顧客分為生產(chǎn)者和消費(fèi)者兩種類(lèi)型。生產(chǎn)者負(fù)責(zé)給存儲(chǔ)系統(tǒng)添加數(shù)據(jù),而消費(fèi)者則可以使用系統(tǒng)中存儲(chǔ)的數(shù)據(jù)。

就像是火車(chē)票存儲(chǔ)系統(tǒng),鐵路局就相當(dāng)于生產(chǎn)者類(lèi)型的顧客,而乘客就相當(dāng)于消費(fèi)者類(lèi)型的顧客。鐵路局將各個(gè)線(xiàn)路的火車(chē)票信息發(fā)布到訂票網(wǎng)站的后臺(tái)數(shù)據(jù)庫(kù)中,乘客通過(guò)訂票網(wǎng)站訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),來(lái)進(jìn)行查詢(xún)余票、訂票、退票等操作。

在這里插入圖片描述

生產(chǎn)者和消費(fèi)者生產(chǎn)和消費(fèi)的數(shù)據(jù)通常是多種多樣的,不同應(yīng)用場(chǎng)景中數(shù)據(jù)的類(lèi)型、格式等都不一樣。根據(jù)數(shù)據(jù)的特征,這些不同的數(shù)據(jù)通常被劃分為三類(lèi):結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù):

結(jié)構(gòu)化數(shù)據(jù):指關(guān)系模型數(shù)據(jù),其特征是數(shù)據(jù)關(guān)聯(lián)較大、格式固定?;疖?chē)票信息比如起點(diǎn)站、終點(diǎn)站、車(chē)次、票價(jià)等,就是一種結(jié)構(gòu)化數(shù)據(jù)。結(jié)構(gòu)化數(shù)據(jù)具有格式固定的特征,因此一般采用分布式關(guān)系數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)和查詢(xún)。半結(jié)構(gòu)化數(shù)據(jù):指非關(guān)系模型的,有基本固定結(jié)構(gòu)模式的數(shù)據(jù),其特征是數(shù)據(jù)之間關(guān)系比較簡(jiǎn)單。比如 HTML 文檔,使用標(biāo)簽書(shū)寫(xiě)內(nèi)容。半結(jié)構(gòu)化數(shù)據(jù)大多可以采用鍵值對(duì)形式來(lái)表示,比如 HTML 文檔可以將標(biāo)簽設(shè)置為 key,標(biāo)簽對(duì)應(yīng)的內(nèi)容可以設(shè)置為 value,因此一般采用分布式鍵值系統(tǒng)進(jìn)行存儲(chǔ)和使用。非結(jié)構(gòu)化數(shù)據(jù):指沒(méi)有固定模式的數(shù)據(jù),其特征是數(shù)據(jù)之間關(guān)聯(lián)不大。比如文本數(shù)據(jù)就是一種非結(jié)構(gòu)化數(shù)據(jù)。這種數(shù)據(jù)可以存儲(chǔ)到文檔中,通過(guò) ElasticSearch(一個(gè)分布式全文搜索引擎)等進(jìn)行檢索。

導(dǎo)購(gòu):確定數(shù)據(jù)位置

導(dǎo)購(gòu)是分布式存儲(chǔ)系統(tǒng)必不可少的要素,如果沒(méi)有導(dǎo)購(gòu), 顧客就需要逐個(gè)貨架去尋找自己想要的商品。如果去訂票網(wǎng)站訂火車(chē)票,按照自己的需求點(diǎn)擊查詢(xún)車(chē)票后,系統(tǒng)會(huì)逐個(gè)掃描分布式存儲(chǔ)系統(tǒng)中每臺(tái)機(jī)器的數(shù)據(jù),尋找你想要購(gòu)買(mǎi)的火車(chē)票。如果系統(tǒng)中存儲(chǔ)的數(shù)據(jù)不多,響應(yīng)時(shí)間也不會(huì)太長(zhǎng),畢竟計(jì)算機(jī)的速度還是很快的;但如果數(shù)據(jù)分布在幾千臺(tái)甚至上萬(wàn)臺(tái)機(jī)器中,系統(tǒng)逐個(gè)機(jī)器掃描后再給你響應(yīng),嚴(yán)重影響購(gòu)票體驗(yàn)。

因此在分布式存儲(chǔ)系統(tǒng)中,必須有相應(yīng)的數(shù)據(jù)導(dǎo)購(gòu),否則系統(tǒng)響應(yīng)會(huì)很慢,效率很低。為解決這個(gè)問(wèn)題,數(shù)據(jù)分片技術(shù)就走入了分布式存儲(chǔ)系統(tǒng)中。

數(shù)據(jù)分片技術(shù):指分布式存儲(chǔ)系統(tǒng)按照一定的規(guī)則將數(shù)據(jù)存儲(chǔ)到相對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)中,或者到相對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)中獲取想要的數(shù)據(jù),優(yōu)點(diǎn):

降低單個(gè)存儲(chǔ)節(jié)點(diǎn)的存儲(chǔ)和訪(fǎng)問(wèn)壓力;通過(guò)規(guī)定好的規(guī)則快速找到數(shù)據(jù)所在的存儲(chǔ)節(jié)點(diǎn),從而大大降低搜索延遲,提高用戶(hù)體驗(yàn)。

當(dāng)鐵路局發(fā)布各個(gè)線(xiàn)路的火車(chē)票信息時(shí),會(huì)按照一定規(guī)則存儲(chǔ)到相應(yīng)的機(jī)器中, 比如北京到上海的火車(chē)票存儲(chǔ)到機(jī)器 A 中,西安到重慶的火車(chē)票存儲(chǔ)到機(jī)器 B 中。當(dāng)乘客查詢(xún)火車(chē)票時(shí),系統(tǒng)就可以根據(jù)查詢(xún)條件迅速定位到相對(duì)應(yīng)的存儲(chǔ)機(jī)器,然后將數(shù)據(jù)返回給用戶(hù),響應(yīng)時(shí)間就大大縮短了。如圖所示,當(dāng)查詢(xún)北京 - 上海的火車(chē)票相關(guān)信息時(shí),可以與機(jī)器 A 進(jìn)行數(shù)據(jù)交互。

在這里插入圖片描述

例子中按照數(shù)據(jù)起點(diǎn)、終點(diǎn)的方式劃分?jǐn)?shù)據(jù),將數(shù)據(jù)分為幾部分存儲(chǔ)到不同的機(jī)器節(jié)點(diǎn)中,就是數(shù)據(jù)分片技術(shù)的一種。當(dāng)查詢(xún)數(shù)據(jù)時(shí),系統(tǒng)可以根據(jù)查詢(xún)條件迅速找到對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn),從而實(shí)現(xiàn)快速響應(yīng)。 還有其他很多數(shù)據(jù)分片的方案。比如,按照數(shù)據(jù)范圍,采用哈希映射、一致性哈希環(huán)等對(duì)數(shù)據(jù)劃分。

針對(duì)數(shù)據(jù)范圍的數(shù)據(jù)分片方案:按照某種規(guī)則劃分?jǐn)?shù)據(jù)范圍,然后將在這個(gè)范圍內(nèi)的數(shù)據(jù)歸屬到一個(gè)集合中。這就好比數(shù)學(xué)中通常講的整數(shù)區(qū)間,比如 1~1000 的整數(shù),[1,100] 的整數(shù)屬于一個(gè)子集、[101,1000] 的整數(shù)屬于另一個(gè)子集。

對(duì)于前面講的火車(chē)票的案例,按照數(shù)據(jù)范圍分片的話(huà),可以將屬于某條線(xiàn)的所有火車(chē)票數(shù)據(jù)劃分到一個(gè)子集或分區(qū)進(jìn)行存儲(chǔ),比如機(jī)器 A 存儲(chǔ)京廣線(xiàn)的火車(chē)票數(shù)據(jù),機(jī)器 B 存儲(chǔ)京滬線(xiàn)的火車(chē)票數(shù)據(jù)。數(shù)據(jù)范圍的方案是按照范圍或區(qū)間進(jìn)行存儲(chǔ)或查詢(xún)。

如圖所示,當(dāng)用戶(hù)查詢(xún)北京 - 上海的火車(chē)票相關(guān)信息時(shí),首先判斷查詢(xún)條件屬于哪個(gè)范圍,由于北京 - 上海的火車(chē)線(xiàn)路屬于京滬線(xiàn),因此系統(tǒng)按照規(guī)則將查詢(xún)請(qǐng)求轉(zhuǎn)到存取京滬線(xiàn)火車(chē)票數(shù)據(jù)的機(jī)器 B,然后由機(jī)器 B 進(jìn)行處理并給用戶(hù)返回響應(yīng)結(jié)果。

在這里插入圖片描述

為了提高分布式系統(tǒng)的可用性與可靠性,除了通過(guò)數(shù)據(jù)分片減少單個(gè)節(jié)點(diǎn)的壓力外,數(shù)據(jù)復(fù)制也是一個(gè)非常重要的方法。數(shù)據(jù)復(fù)制是將數(shù)據(jù)進(jìn)行備份,以使得多個(gè)節(jié)點(diǎn)存儲(chǔ)該數(shù)據(jù)。

數(shù)據(jù)復(fù)制和數(shù)據(jù)分片技術(shù)的區(qū)別:

在這里插入圖片描述

數(shù)據(jù) A 被拆分為兩部分存儲(chǔ)在兩個(gè)節(jié)點(diǎn) Node1 和 Node2 上,屬于數(shù)據(jù)分片;數(shù)據(jù) B 同一份完整的數(shù)據(jù)在兩個(gè)節(jié)點(diǎn)中均有存儲(chǔ),就屬于數(shù)據(jù)復(fù)制。

在實(shí)際的分布式存儲(chǔ)系統(tǒng)中,數(shù)據(jù)分片和數(shù)據(jù)復(fù)制通常是共存的:

數(shù)據(jù)通過(guò)分片方式存儲(chǔ)到不同的節(jié)點(diǎn)上,以減少單節(jié)點(diǎn)的性能瓶頸問(wèn)題;而數(shù)據(jù)的存儲(chǔ)通常用主備方式保證可靠性,對(duì)每個(gè)節(jié)點(diǎn)上存儲(chǔ)的分片數(shù)據(jù),采用主備方式存儲(chǔ),以保證數(shù)據(jù)的可靠性。主備節(jié)點(diǎn)上數(shù)據(jù)的一致,是通過(guò)數(shù)據(jù)復(fù)制技術(shù)實(shí)現(xiàn)的。

Kafka 集群消息存儲(chǔ)架構(gòu)圖,消息數(shù)據(jù)以 Partition(分區(qū))進(jìn)行存儲(chǔ),一個(gè) Topic(主題)可以由多個(gè) Partition 進(jìn)行存儲(chǔ),Partition 可以分布到多個(gè) Broker 中;同時(shí),Kafka 還提供了 Partition 副本機(jī)制(對(duì)分區(qū)存儲(chǔ)的信息進(jìn)行備份,比如 Broker 1 中的 Topic-1 Partion-0 是對(duì) Broker 0 上的 Topic-1 Partition-0 進(jìn)行的備份),從而保證了消息存儲(chǔ)的可靠性。

在這里插入圖片描述

貨架:存儲(chǔ)數(shù)據(jù)

貨架是用來(lái)存儲(chǔ)數(shù)據(jù)的,因?yàn)閿?shù)據(jù)是由顧客產(chǎn)生和消費(fèi)的,因此貨架存儲(chǔ)的數(shù)據(jù)類(lèi)型與顧客產(chǎn)生和消費(fèi)的數(shù)據(jù)類(lèi)型是一致的,即包括結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。

針對(duì)這三種不同的數(shù)據(jù)類(lèi)型,存儲(chǔ)“貨架”劃分為三種:

分布式數(shù)據(jù)庫(kù):通過(guò)表格來(lái)存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),方便查找。常用的分布式數(shù)據(jù)庫(kù)有 MySQL Sharding、Microsoft SQL Azure、Google Spanner、Alibaba OceanBase 等。分布式鍵值系統(tǒng):通過(guò)鍵值對(duì)來(lái)存儲(chǔ)半結(jié)構(gòu)化數(shù)據(jù)。常用的分布式鍵值系統(tǒng)有 Redis、 Memcache 等,可用作緩存系統(tǒng)。分布式存儲(chǔ)系統(tǒng):通過(guò)文件、塊、對(duì)象等來(lái)存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)。常見(jiàn)的分布式存儲(chǔ)系統(tǒng) 有 Ceph、GFS、HDFS、Swift 等。

對(duì)存儲(chǔ)介質(zhì)的選擇,本質(zhì)是選擇將數(shù)據(jù)存儲(chǔ)在磁盤(pán)還是內(nèi)存(緩存) 上:

磁盤(pán)存儲(chǔ)量大,但 IO 開(kāi)銷(xiāo)大,訪(fǎng)問(wèn)速度較低,常用于存儲(chǔ)不經(jīng)常使用的數(shù)據(jù)。比如,電商系統(tǒng)中,排名比較靠后或購(gòu)買(mǎi)量比較少、甚至無(wú)人購(gòu)買(mǎi)的商品信息,通常就存儲(chǔ)在磁盤(pán)上。內(nèi)存容量小,訪(fǎng)問(wèn)速度快,因此常用于存儲(chǔ)需要經(jīng)常訪(fǎng)問(wèn)的數(shù)據(jù)。比如,電商系統(tǒng)中, 購(gòu)買(mǎi)量比較多或排名比較靠前的商品信息,通常就存儲(chǔ)在內(nèi)存中。

知識(shí)擴(kuò)展:業(yè)界主流的分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)有哪些?

貨架針對(duì)結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),分別對(duì)應(yīng)不同的“貨架”,即分布式數(shù)據(jù)庫(kù)、分布式鍵值系統(tǒng)和分布式文件系統(tǒng)進(jìn)行存儲(chǔ)。

主流的分布式數(shù)據(jù)庫(kù),主要包括 MySQL Sharding、SQL Azure、 Spanner、OceanBase 等。

在這里插入圖片描述

主流的分布式存儲(chǔ)系統(tǒng),主要包括 Ceph、GFS、HDFS 和 Swift 等。

在這里插入圖片描述

總結(jié)

分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)的三要素,即顧客、導(dǎo)購(gòu)和貨架,對(duì)應(yīng)到分布式領(lǐng)域的術(shù)語(yǔ)就是數(shù)據(jù)生產(chǎn)者 / 消費(fèi)者、數(shù)據(jù)索引和數(shù)據(jù)存儲(chǔ)。

顧客包括產(chǎn)生數(shù)據(jù)的顧客和消費(fèi)數(shù)據(jù)的顧客兩類(lèi);導(dǎo)購(gòu)是數(shù)據(jù)索引引擎,包括數(shù)據(jù)存儲(chǔ)時(shí)確定數(shù)據(jù)位置,以及獲取數(shù)據(jù)時(shí)確定數(shù)據(jù)所在位置;貨架負(fù)責(zé)數(shù)據(jù)存儲(chǔ),包括磁盤(pán)、緩存等存儲(chǔ)介質(zhì)等。

不同應(yīng)用場(chǎng)景中,顧客產(chǎn)生的數(shù)據(jù)類(lèi)型、格式等通常都不一樣。根據(jù)數(shù)據(jù)的特征,這些不同的數(shù)據(jù)可以被劃分為三類(lèi):結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)。與之相對(duì)應(yīng)的,貨架也就是數(shù)據(jù)存儲(chǔ)系統(tǒng),也包括三類(lèi):分布式數(shù)據(jù)庫(kù)、分布式鍵值系統(tǒng)和分布式文件系統(tǒng)。

在這里插入圖片描述

到此這篇關(guān)于分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)的三要素的文章就介紹到這了,更多相關(guān)分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論