400-638-8808
|
微信公眾號(hào)








穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無阻

協(xié)同辦公 資源管理

超大郵件 超級(jí)功能

智能反垃圾郵件技術(shù)
易管理 免維護(hù)

微信掃一掃 關(guān)注"天下數(shù)據(jù)"商品一律九折
![]()
搜索"朗玥科技"關(guān)注,了解最新優(yōu)惠

分布式文件存儲(chǔ)系統(tǒng)主要被分為三種類型:分布式文件存儲(chǔ)、塊存儲(chǔ)、對(duì)象存儲(chǔ)。這三種存儲(chǔ)系統(tǒng)都有著自己的特點(diǎn)和適用場(chǎng)景。
其中分布式文件存儲(chǔ)和對(duì)象存儲(chǔ)是聯(lián)系非常緊密的,大多對(duì)象存儲(chǔ)系統(tǒng)都是在分布式文件系統(tǒng)基礎(chǔ)上實(shí)現(xiàn)的。
很幸運(yùn)自己在過去的工作中對(duì)這三種系統(tǒng)都有過或深或淺的接觸,因此有了想要把這其中零散的知識(shí)點(diǎn)做一個(gè)整理,畢竟才疏學(xué)淺,希望跟有興趣的同學(xué)共同進(jìn)步。
對(duì)于分布式文件存儲(chǔ)系統(tǒng),我們常常根據(jù)它的特點(diǎn)和功能模塊做劃分,才能從各個(gè)不同的角度去學(xué)習(xí)、了解和實(shí)現(xiàn)一個(gè)分布式文件存儲(chǔ)系統(tǒng)
系統(tǒng)架構(gòu)
對(duì)于目前所接觸到的主流分布式文件系統(tǒng)來看,根據(jù)系統(tǒng)架構(gòu)的特點(diǎn)大多可做如下劃分:
有無中心管理節(jié)點(diǎn)
存儲(chǔ)節(jié)點(diǎn)是否有主從之分
這兩種架構(gòu)都有著自己明顯的優(yōu)勢(shì)和缺點(diǎn),對(duì)整個(gè)分布式文件系統(tǒng)的實(shí)現(xiàn)起決定作用,直接影響采用何種一致性協(xié)議保持備份間的一致性,以及集群如何管理,數(shù)據(jù)丟失或損壞該如何恢復(fù)、數(shù)據(jù)清理等等功能的實(shí)現(xiàn),后面會(huì)單獨(dú)對(duì)此做闡述和說明
集群管理
集群管理主要解決以下幾個(gè)問題:
存儲(chǔ)節(jié)點(diǎn)上下線通知,自動(dòng)剔除不可用節(jié)點(diǎn)等
集群各節(jié)點(diǎn)心跳和狀態(tài)的維護(hù),是否健康,可讀可寫
維護(hù)系統(tǒng)的邏輯模型,如分區(qū)、用戶等邏輯概念的關(guān)系,如swift系統(tǒng)中提到的region,zone,node,patition等邏輯概念及從屬關(guān)系
數(shù)據(jù)定位
即客戶端如何根據(jù)文件名快速查找到數(shù)據(jù)的位置并獲取到文件內(nèi)容,目前接觸到分布式存儲(chǔ)系統(tǒng)在解決數(shù)據(jù)定位問題上,有兩種方式。一種可以稱作為計(jì)算方式,即最常見的hash算法定位,另外一種可稱為查詢時(shí),將映射關(guān)系存儲(chǔ)起來,通過查詢的方式定位文件位置。
其中,哈希算法是最常見的數(shù)據(jù)分布方式,其方法是按照數(shù)據(jù)的某一特征計(jì)算哈希值,并將哈希值與機(jī)器中的磁盤建立映射關(guān)系,以swift為代表的一致性哈希算法也屬于此類的改良品種,用哈希的方式優(yōu)點(diǎn)是明顯的,不需要記錄的元信息,任何節(jié)點(diǎn)只需要知道哈希函數(shù)的計(jì)算方式即可以知道數(shù)據(jù)存儲(chǔ)的位置,但是也存在一些問題,及增加或減少節(jié)點(diǎn)勢(shì)必或多或少都會(huì)引起數(shù)據(jù)的遷移。
而講到的另外一種查詢的方式,一般不會(huì)集中去存儲(chǔ)文件映射的元數(shù)據(jù)信息,因?yàn)殡S著集群規(guī)模的增長(zhǎng),元數(shù)據(jù)服務(wù)器較為容易成為瓶頸,所以常常是采用多個(gè)元數(shù)據(jù)服務(wù)機(jī)制去解決這個(gè)問題。
存儲(chǔ)引擎
存儲(chǔ)引擎,即數(shù)據(jù)最終是以何種形式存儲(chǔ)在單機(jī)系統(tǒng)上。大多分布式文件系統(tǒng)的底層存儲(chǔ)形式都是依賴本地文件系統(tǒng)接口,如Swift,Ceph等底層文件存儲(chǔ),畢竟分布式文件系統(tǒng)本身已經(jīng)很復(fù)雜了,很難從上層一直到底層存儲(chǔ)都自己去實(shí)現(xiàn),而本地文件系統(tǒng)已經(jīng)很成熟完善,所以大部分分布式文件系統(tǒng)都是依賴本地文件系統(tǒng)去實(shí)現(xiàn)的。
對(duì)不同的分布式文件系統(tǒng)在單機(jī)上的存儲(chǔ)格式是不一樣的,以swift為例它是以一個(gè)個(gè)文件的形式存儲(chǔ)在單機(jī)文件系統(tǒng)中,即一個(gè)文件就對(duì)應(yīng)在單機(jī)上也就是一個(gè)文件(忽略對(duì)象存儲(chǔ)那一層的大文件映射關(guān)系),而還有另外一種分布式文件系統(tǒng),在單機(jī)文件系統(tǒng)中是多個(gè)文件合并存儲(chǔ),以一個(gè)大文件的形式存儲(chǔ)在單機(jī)文件系統(tǒng)中,同時(shí)記錄每個(gè)文件的操作日志,可以理解為對(duì)小文件進(jìn)行了合并。
這兩種存儲(chǔ)方式都有各自的利弊,并有各自的適用場(chǎng)景。對(duì)文件進(jìn)行合并的日志文件系統(tǒng),雖然會(huì)有文件的二次定位問題,但它有一個(gè)明顯的優(yōu)勢(shì),即小文件的讀寫性能會(huì)有明顯的提升,而對(duì)于swift采用的這種不進(jìn)行合并存儲(chǔ)的系統(tǒng)來說,實(shí)現(xiàn)相對(duì)容易,但小文件的讀寫磁盤必然會(huì)成為性能的瓶頸。
存儲(chǔ)副本
副本(replica/copy)的存在是為保證分布式系統(tǒng)中數(shù)據(jù)冗余,在不同的節(jié)點(diǎn)上持久化同一份數(shù)據(jù),當(dāng)出現(xiàn)某一個(gè)節(jié)點(diǎn)的存儲(chǔ)的數(shù)據(jù)丟失時(shí),可以從副本上讀到數(shù)據(jù),是分布式系統(tǒng)解決數(shù)據(jù)丟失異常的唯一手段。
對(duì)于可靠性要求高的數(shù)據(jù)進(jìn)行三備份存儲(chǔ),甚至要求副本跨分區(qū)存儲(chǔ);而對(duì)于可靠性要求低的數(shù)據(jù),兩備份就能滿足需求。隨著存儲(chǔ)的數(shù)據(jù)量增加,多副本存儲(chǔ)會(huì)導(dǎo)致存儲(chǔ)成本增加,因此有了糾刪碼的方式,可以極大的節(jié)省存儲(chǔ)成本,并且可以提升數(shù)據(jù)的可靠性。
多副本存儲(chǔ)引發(fā)出了一些需要解決的關(guān)鍵問題,如副本數(shù)據(jù)的一致性,如何保證副本數(shù)量和位置正確等等。
一致性協(xié)議
一致性協(xié)議是分布式文件系統(tǒng)核心問題之一,說的是如何保持副本內(nèi)容的一致性。常見的三種一致性模型如下:
強(qiáng)一致性:當(dāng)更新操作在某個(gè)副本上執(zhí)行成功后,之后所有的讀操作都要能夠獲得最新的數(shù)據(jù)。
弱一致性:當(dāng)更新某數(shù)據(jù)時(shí),用戶讀到最新的數(shù)據(jù)需要一段時(shí)間。
最終一致性:它是一種特殊形式的弱一致性。它不能保證當(dāng)某個(gè)數(shù)據(jù)X更新后,在所有后續(xù)對(duì)X的操作能夠看到新數(shù)據(jù),而是 在經(jīng)過一個(gè)時(shí)間片段之后,才能保證 。在這個(gè)時(shí)間片段內(nèi),數(shù)據(jù)可能是不一致的。
在多個(gè)副本節(jié)點(diǎn)沒有主從之分的分布式系統(tǒng)中,數(shù)據(jù)一致性的保證往往由客戶端保證,這里的客戶端指的是分布式文件系統(tǒng)的接入層,如swift的proxy節(jié)點(diǎn),swift采用的是Quorum 仲裁協(xié)議,即 R+W>N。Swift 默認(rèn)配置是 N=3,W=2>N/2,R=1 或 2,即每個(gè)對(duì)象會(huì)存在 3 個(gè)副本,這些副本會(huì)盡量被存儲(chǔ)在不同區(qū)域的節(jié)點(diǎn)上;W=2 表示至少需要更新 2 個(gè)副本才算寫成功;當(dāng) R=1 時(shí)意味著某一個(gè)讀操作成功便立刻返回,此種情況下可能會(huì)讀取到舊版本(弱一致性模型);當(dāng) R=2 時(shí),需要通過在讀操作請(qǐng)求頭中增加 x-newest=true 參數(shù)來同時(shí)讀取 2 個(gè)副本的元數(shù)據(jù)信息,然后比較時(shí)間戳來確定哪個(gè)是最新版本(強(qiáng)一致性模型)
而當(dāng)多副本之間是有主從節(jié)點(diǎn)之分的系統(tǒng)中,數(shù)據(jù)的一致性大多由主節(jié)點(diǎn)保證,客戶端的寫請(qǐng)求發(fā)往主節(jié)點(diǎn),主節(jié)點(diǎn)更新成功,同時(shí)將請(qǐng)求轉(zhuǎn)發(fā)至從節(jié)點(diǎn),收到所有從節(jié)點(diǎn)的成功響應(yīng)后,再返回成功(強(qiáng)一致模型)。
兩種方式的優(yōu)缺點(diǎn)后續(xù)會(huì)從實(shí)現(xiàn)以及性能角度展開說明。
數(shù)據(jù)恢復(fù)
對(duì)于有中心控制節(jié)點(diǎn)和無中心控制節(jié)點(diǎn)的分布式文件系統(tǒng),數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)也會(huì)大為不同
有中心節(jié)點(diǎn)的系統(tǒng),數(shù)據(jù)恢復(fù)大多是由中心節(jié)點(diǎn)負(fù)責(zé)控制調(diào)度,因?yàn)橹挥兴写鎯?chǔ)節(jié)點(diǎn)和存儲(chǔ)介質(zhì)的全局信息,而每個(gè)存儲(chǔ)節(jié)點(diǎn)能做的就是等待中心節(jié)點(diǎn)的調(diào)度執(zhí)行數(shù)據(jù)恢復(fù)的任務(wù)
無中心節(jié)點(diǎn)的系統(tǒng),數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)只能由各個(gè)存儲(chǔ)節(jié)點(diǎn)負(fù)責(zé),如swift,根據(jù)ring的信息獲取副本的位置,通過數(shù)據(jù)恢復(fù)的進(jìn)程,維持副本的數(shù)量和位置的正確性
數(shù)據(jù)清理
對(duì)于用戶調(diào)用刪除接口進(jìn)行刪除的數(shù)據(jù),是直接刪除?還是標(biāo)記刪除?直接刪除固然是最簡(jiǎn)潔方便的,但是同時(shí)也意味著如果是誤刪的情況下數(shù)據(jù)無法找回,而對(duì)于標(biāo)記刪除,需要一個(gè)額外的模塊對(duì)標(biāo)記刪除的數(shù)據(jù)進(jìn)行掃描,再實(shí)施真正的刪除,在某種程度上減少了數(shù)據(jù)丟失的風(fēng)險(xiǎn)。
異常處理
異常處理是分布式系統(tǒng)中需要處理的核心問題之一,只有合理處理了各種可預(yù)知的和未知的異常,才能保證分布式存儲(chǔ)系統(tǒng)的可用性和可靠性。常見的異常有節(jié)點(diǎn)宕機(jī)、網(wǎng)絡(luò)異常、硬件故障等等,異常處理不恰當(dāng)導(dǎo)致不可用和系統(tǒng)性能問題都有經(jīng)歷過,而對(duì)于分布式文件系統(tǒng)改如何處理遺產(chǎn)個(gè),以及如何通過壓力異常測(cè)試保證系統(tǒng)可用性等等,都是比較大的話題,在后續(xù)進(jìn)行展開。
通信協(xié)議
通信協(xié)議主要指的是分布式文件系統(tǒng)中節(jié)點(diǎn)之間的通信主要采取何種協(xié)議,以swift為例的節(jié)點(diǎn)間所有的通信都采用的是HTTP協(xié)議,另外一種常見的通信協(xié)議即采用RPC協(xié)議進(jìn)行通信。
采用HTTP協(xié)議,從系統(tǒng)的使用和可測(cè)性角度來說是有利的,但同時(shí)也意味著一次請(qǐng)求到達(dá)不同的節(jié)點(diǎn)都會(huì)經(jīng)過不斷的解析和封裝,勢(shì)必是會(huì)有些損耗的,尤其是在跟rpc協(xié)議相比,之前做過性能對(duì)比,但對(duì)于存儲(chǔ)系統(tǒng)來說,這點(diǎn)延時(shí)就不算什么了。
采用RPC協(xié)議,在代碼實(shí)現(xiàn)上來說是簡(jiǎn)單方便的,但跟HTTP協(xié)議比起來,在做一些分層的功能和性能測(cè)試時(shí),可測(cè)性會(huì)受到影響,就是稍微麻煩一些的,但總的說來還可接受。
讀寫流程
分布式文件系統(tǒng)的架構(gòu)決定了其讀寫流程必然會(huì)有些不同,如有中心節(jié)點(diǎn)的系統(tǒng),客戶端的寫操作首先會(huì)到中心節(jié)點(diǎn)獲取該寫到哪個(gè)節(jié)點(diǎn)的信息,而對(duì)于有主從之分的存儲(chǔ)節(jié)點(diǎn)來說,客戶端的讀操作一般會(huì)優(yōu)去主節(jié)點(diǎn)讀。。。
以上,簡(jiǎn)單的給自己列了一個(gè)框架,然后再分別將其填滿。靡不有初,鮮克有終,希望自己可以堅(jiān)持!
天下數(shù)據(jù)推出香港服務(wù)器、美國(guó)服務(wù)器等獨(dú)立海外主機(jī)產(chǎn)品,滿足客戶對(duì)租用海外服務(wù)器多樣性需求,不僅很好的解決了香港、美國(guó)及東南亞一帶的訪問速度問題,而且也兼顧了國(guó)內(nèi)用戶的訪問速度,方便在國(guó)內(nèi)進(jìn)行數(shù)據(jù)的上傳和維護(hù)工作。
產(chǎn)品與服務(wù)
香港服務(wù)器 香港高防服務(wù)器 美國(guó)服務(wù)器 韓國(guó)服務(wù)器 新加坡服務(wù)器 日本服務(wù)器 臺(tái)灣服務(wù)器云服務(wù)器
香港云主機(jī) 美國(guó)云主機(jī) 韓國(guó)云主機(jī) 新加坡云主機(jī) 臺(tái)灣云主機(jī) 日本云主機(jī) 德國(guó)云主機(jī) 全球云主機(jī)高防專線
海外高防IP 海外無限防御 SSL證書 高防CDN套餐 全球節(jié)點(diǎn)定制 全球?qū)>GPLC關(guān)于我們
關(guān)于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團(tuán)隊(duì)建設(shè) 加入天下數(shù)據(jù) 媒體報(bào)道 榮譽(yù)資質(zhì) 付款方式關(guān)注我們
微信公眾賬號(hào)
新浪微博
天下數(shù)據(jù)手機(jī)站 關(guān)于天下數(shù)據(jù) 聯(lián)系我們 誠(chéng)聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊(cè) 網(wǎng)站地圖
天下數(shù)據(jù)18年專注海外香港服務(wù)器、美國(guó)服務(wù)器、海外云主機(jī)、海外vps主機(jī)租用托管以及服務(wù)器解決方案-做天下最好的IDC服務(wù)商
《中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證》 ISP證:粵ICP備07026347號(hào)
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運(yùn)營(yíng))聯(lián)合版權(quán)
深圳總部:中國(guó).深圳市南山區(qū)深圳國(guó)際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號(hào)建安商業(yè)大廈7樓
7×24小時(shí)服務(wù)熱線:4006388808香港服務(wù)電話:+852 67031102
本網(wǎng)站的域名注冊(cè)業(yè)務(wù)代理北京新網(wǎng)數(shù)碼信息技術(shù)有限公司的產(chǎn)品