免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
[轉(zhuǎn)載]分布式系統(tǒng)架構(gòu)的基本原則和實(shí)踐

 采用分布式系統(tǒng)架構(gòu)是由于業(yè)務(wù)需求決定的,若系統(tǒng)要求具備如下特性,便可考慮采用分布式架構(gòu)來(lái)實(shí)現(xiàn):

1.數(shù)據(jù)存儲(chǔ)的分區(qū)容錯(cuò),冗余

2.應(yīng)用的大訪問(wèn)、高性能要求

3.應(yīng)用的高可用要求,故障轉(zhuǎn)移


分布式系統(tǒng)遵循幾個(gè)基本原則

1.CAP原理

CAP Theorem,CAP原理中,有三個(gè)要素:
一致性(Consistency)
可用性(Availability)
分區(qū)容忍性(Partition tolerance)
CAP原理指的是,在分布式系統(tǒng)中這三個(gè)要素最多只能同時(shí)實(shí)現(xiàn)兩點(diǎn),不可能三者兼顧。因此在進(jìn)行分布式架構(gòu)設(shè)計(jì)時(shí),必須做出取舍。而對(duì)于分布式數(shù)據(jù)系統(tǒng),分區(qū)容忍性是基本要求,否則就失去了價(jià)值。因此設(shè)計(jì)分布式數(shù)據(jù)系統(tǒng),就是在一致性和可用性之間取一個(gè)平衡。對(duì)于大多數(shù)web應(yīng)用,其實(shí)并不需要強(qiáng)一致性,因此犧牲一致性而換取高可用性,是目前多數(shù)分布式數(shù)據(jù)庫(kù)產(chǎn)品的方向。

從客戶(hù)端角度,多進(jìn)程并發(fā)訪問(wèn)時(shí),更新過(guò)的數(shù)據(jù)在不同進(jìn)程如何獲取的不同策略,決定了不同的一致性。對(duì)于關(guān)系型數(shù)據(jù)庫(kù),要求更新過(guò)的數(shù)據(jù)能被后續(xù)的訪問(wèn)都能看到,這是強(qiáng)一致性。如果能容忍后續(xù)的部分或者全部訪問(wèn)不到,則是弱一致性。如果經(jīng)過(guò)一段時(shí)間后要求能訪問(wèn)到更新后的數(shù)據(jù),則是最終一致性。
但web應(yīng)用也有例外,比如支付寶系統(tǒng),就要求數(shù)據(jù)(銀行賬戶(hù))的強(qiáng)一致性,而且面對(duì)大量淘寶用戶(hù),可用性要求很高,因此只能犧牲數(shù)據(jù)的分區(qū)冗余。這一點(diǎn)也曾在和支付寶工程師交流時(shí),得到驗(yàn)證。

2.C10K問(wèn)題
分布式系統(tǒng)另一個(gè)理論是C10K問(wèn)題,即系統(tǒng)的并發(fā)用戶(hù)增加1萬(wàn)(customer tenthousand,過(guò)去一臺(tái)服務(wù)器承載假設(shè)為1萬(wàn)用戶(hù),現(xiàn)在平均3~5萬(wàn)),是否意味著增加一臺(tái)機(jī)器就能解決問(wèn)題?答案通常是否定
因?yàn)檫@涉及到系統(tǒng)的應(yīng)用架構(gòu)問(wèn)題----串行系統(tǒng)和并行系統(tǒng)的架構(gòu)和性能提升的關(guān)系:
串行系統(tǒng)一般設(shè)備越多,性能成一條向下彎曲的曲線,最差情況,可能性能不增反降;而并行分布式系統(tǒng)設(shè)備越多,性能是正比例線性增長(zhǎng)的直線


3.串行系統(tǒng)和并行系統(tǒng)的可靠性問(wèn)題
一個(gè)大系統(tǒng)一般都有超過(guò) 30 個(gè)環(huán)節(jié)(串行):如果每個(gè)環(huán)節(jié)都做到 99% 的準(zhǔn)確率,最終系統(tǒng)的準(zhǔn)確率是 74%;如果每個(gè)環(huán)節(jié)都做到98%的準(zhǔn)確率,最終系統(tǒng)的準(zhǔn)確率 54%。一個(gè) 74% 的系統(tǒng)是可用的(有商業(yè)價(jià)值的),一個(gè) 54%的系統(tǒng)僅比隨機(jī)稍好一點(diǎn),不可用。這就是做大系統(tǒng)的魅力和挑戰(zhàn)!
而以上描述只是各模塊串行系統(tǒng)所遇到的問(wèn)題

如果是并行系統(tǒng),準(zhǔn)確率=1-(1-A)^B ,其中A是單個(gè)模塊準(zhǔn)確率,B是并行模塊個(gè)數(shù)
如系統(tǒng)中每個(gè)模塊的準(zhǔn)確率是70%,那么3個(gè)模塊并行,整體準(zhǔn)確率=1-0.3^3=97.3%,如果是4個(gè)并行,準(zhǔn)確率=1-0.3^4=99.19%,我在想這就是負(fù)載均衡靠譜的數(shù)學(xué)原理
5個(gè)9或6個(gè)9的QoS一定是指數(shù)思維的結(jié)果,線性思維等于送死

而對(duì)系統(tǒng)單一模塊優(yōu)化,準(zhǔn)確性和可用性提升一個(gè)百分點(diǎn),越接近100%,難度越大,投入成本越不可控(系統(tǒng)熵永不為零)
因此可靠性系統(tǒng)必然選擇并行分布式作為架構(gòu)的基本方法。

從數(shù)據(jù)的存儲(chǔ)角度,多份冗余也是可靠性保障的一個(gè)方法。分布式存儲(chǔ)的冗余備份常規(guī)是3份(aws就這么干的),古埃及的羅塞塔rosetta石碑用古埃及象形文字、埃及拼音和古希臘文三種文字記錄一段歷史,就算象形文字缺了一部分,沒(méi)人能看懂,也能破譯補(bǔ)全,這大概也是raid5的思想起源吧


分布式系統(tǒng)架構(gòu)的實(shí)踐

1.分布式存儲(chǔ)架構(gòu)

分布式存儲(chǔ)架構(gòu)現(xiàn)階段有3種模式

 1.1一種是物理存儲(chǔ)采用集中式,存儲(chǔ)節(jié)點(diǎn)采用多實(shí)例的方式,如NFS掛載SAN、NAS等等


1.2第二種是帶有中央控制器的分布式存儲(chǔ),如luster、moosefs、googlefs等等,一般特征是具備2個(gè)角色metadataserver和storage node,將文件的元數(shù)據(jù)(描述數(shù)據(jù)的數(shù)據(jù),如文件位置、大小等等)和數(shù)據(jù)塊文件分開(kāi)存儲(chǔ)
其中metadataserver除保存文件的元數(shù)據(jù)外,還維護(hù)存儲(chǔ)節(jié)點(diǎn)的ip、狀態(tài)等信息

luster的典型架構(gòu)
MDS--meatadata server
MDT--metadata target
OSS--objstorage server
OST--objstarage target
其中MDT和OST是可以掛在NAS等中央存儲(chǔ)上的;可見(jiàn),luster借鑒了上面中央存儲(chǔ)的模式,無(wú)論元數(shù)據(jù)服務(wù)還是節(jié)點(diǎn)服務(wù)都將服務(wù)實(shí)例和存儲(chǔ)分離,但進(jìn)化了一步,將元數(shù)據(jù)和數(shù)據(jù)塊分離

luster系統(tǒng)很好解決了數(shù)據(jù)分布式存儲(chǔ),,在超級(jí)計(jì)算領(lǐng)域Lustre應(yīng)用廣泛,如美國(guó)LLNL國(guó)家實(shí)驗(yàn)室計(jì)算機(jī)系統(tǒng)、我國(guó)的天河超級(jí)計(jì)算機(jī)系統(tǒng)均采用Lustre搭建分布式存儲(chǔ)系統(tǒng)。Lustre在全球排名前30個(gè)超級(jí)計(jì)算機(jī)系統(tǒng)中有15個(gè)在使用。

但有一個(gè)問(wèn)題,就是metadata server的SPoF(single point offailure)問(wèn)題,即單點(diǎn)故障;一旦metadataserver掛了,整個(gè)集群也就掛了。實(shí)際應(yīng)用中,是有解決方案的,如dell的官網(wǎng)有個(gè)pdf,就是采用heartbeat和drbd網(wǎng)絡(luò)raid的方式,啟動(dòng)2個(gè)實(shí)例,再如和keepalived一起組成故障轉(zhuǎn)移的方案等等,可以自己試試




再來(lái)看moosefs架構(gòu)
moosefs架構(gòu)和luster很相似,但進(jìn)化了一步,mater(也就是metadataserver)可以有從機(jī)備份了,而且可以多個(gè)
而且服務(wù)實(shí)例和存儲(chǔ)放在一起,沒(méi)有像luster,自此服務(wù)和數(shù)據(jù)不離不棄了;其實(shí)luster也可以簡(jiǎn)化成不離不棄模式,moosefs也可以學(xué)他搞個(gè)后端存儲(chǔ),但隨著云計(jì)算、追求低成本的趨勢(shì),采用SAN這樣存儲(chǔ)設(shè)備就太貴了



1.3第三種分布式存儲(chǔ)是去中心化、全對(duì)稱(chēng)的架構(gòu)(non-center or symmetric)
其設(shè)計(jì)思想是采用一致性哈希consistenthash算法(DHT的一種實(shí)現(xiàn),關(guān)于一致性hash具體參考后面的鏈接)來(lái)定位文件在存儲(chǔ)節(jié)點(diǎn)中的位置,從而取消了metadataserver的角色



整個(gè)系統(tǒng)只有storage node一個(gè)角色,不區(qū)分元數(shù)據(jù)和數(shù)據(jù)塊;
典型系統(tǒng)如sheepdog,但sheepdog是為滿足kvm鏡像和類(lèi)EBS塊存儲(chǔ)而設(shè)計(jì)的,不是常規(guī)的分布式文件系統(tǒng),架構(gòu)如下


為了維護(hù)存儲(chǔ)節(jié)點(diǎn)的信息,一般采用P2P技術(shù)的totem singlering算法(corosync是一種實(shí)現(xiàn))來(lái)維護(hù)和更新node路由信息
對(duì)稱(chēng)架構(gòu)有一個(gè)問(wèn)題,采用totemsingle ring算法的存儲(chǔ)節(jié)點(diǎn)數(shù)量有限,因?yàn)閚ode數(shù)量超過(guò)1000,集群內(nèi)的通信風(fēng)暴就會(huì)產(chǎn)生(此處更正,應(yīng)該是環(huán)太大,令牌傳遞效率下降,不會(huì)產(chǎn)生通信風(fēng)暴),效率下降,sheepdog提出了一個(gè)解決方案,就是在一致性hash環(huán)上做嵌套處理,如圖



1.4半對(duì)稱(chēng)結(jié)構(gòu)
其實(shí)介于1.2metadataserver中央控制和1.3全對(duì)稱(chēng)的架構(gòu)之間還有一種,就是把metadata也做成對(duì)稱(chēng)結(jié)構(gòu),我們可以稱(chēng)半對(duì)稱(chēng)結(jié)構(gòu),典型應(yīng)用如fastdfs,淘寶一大牛fishman寫(xiě)的,主要用作圖片存儲(chǔ),可以實(shí)現(xiàn)排重存儲(chǔ)
看圖,tracker cluster就是metadata server的角色,實(shí)現(xiàn)了對(duì)稱(chēng)架構(gòu)設(shè)計(jì)
國(guó)內(nèi)幾個(gè)大的網(wǎng)站都使用了fastdfs,在實(shí)際使用中,發(fā)現(xiàn)storageserver之間同步數(shù)據(jù)較慢,一直沒(méi)仔細(xì)研究




2.分布式數(shù)據(jù)庫(kù)
分布式數(shù)據(jù)庫(kù)一般都基于分布式文件系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)的分片sharding,每中數(shù)據(jù)庫(kù)都有自己的應(yīng)用特性,就不做介紹,列出幾個(gè)典型的應(yīng)用,供參考
Google的big table,實(shí)現(xiàn)數(shù)據(jù)的追加存儲(chǔ)append,順序?qū)懭肟焖?,不適合隨機(jī)讀的場(chǎng)景
hadoop的HBase
mongodb
hypertable2010年以前,百度在用,今年infoq的中國(guó)qcon,百度的楊棟也講了百度用hypertable的血淚史

3.分布式應(yīng)用架構(gòu)
分布式應(yīng)用架構(gòu)涉及具體應(yīng)用場(chǎng)景,設(shè)計(jì)上除考慮上面的CAP和C10K等等經(jīng)典分布式理論,還應(yīng)根據(jù)業(yè)務(wù)進(jìn)行權(quán)衡。
基本的思路是

3.1在做完需求和模塊設(shè)計(jì)后,要對(duì)各模塊進(jìn)行解藕Decoupling
傳統(tǒng)的企業(yè)應(yīng)用設(shè)計(jì)一般是一條操作從頭跑到尾(串行系統(tǒng)),拿視頻網(wǎng)站的流程距離,傳統(tǒng)應(yīng)用設(shè)計(jì)是先上傳是視頻,然后存儲(chǔ),編碼,最后發(fā)布一條龍
如下圖




3.2在進(jìn)行分布式設(shè)計(jì)時(shí),先將各模塊解藕,通過(guò)異步消息通知的方式將各模塊鏈接,如下圖


3.3最后,要考慮這個(gè)應(yīng)用的壓力承載點(diǎn)在哪,根據(jù)用戶(hù)規(guī)模估算各模塊的并行數(shù)量(如本例中的encode壓力大,就增加encode模塊的并行系統(tǒng)數(shù)量),如下圖

以上是分布式系統(tǒng)構(gòu)建的基本原則和實(shí)踐步驟,在實(shí)際應(yīng)用中,仍有很多細(xì)節(jié)要考慮。但有一點(diǎn)要再?gòu)?qiáng)調(diào),就是要根據(jù)業(yè)務(wù)來(lái)選擇各層、各模塊的技術(shù),做好業(yè)務(wù)適用、成本和難度之間的權(quán)衡。

技術(shù)本無(wú)好壞,在于適當(dāng)?shù)氖褂煤头e累。

參考:


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
苦練基本功之分布式系統(tǒng)學(xué)習(xí)
阿里P8大牛手?jǐn)]的分布式架構(gòu)文檔:ZK+高可用+緩存+事務(wù)+中間件等
分布式架構(gòu)--基本思想?yún)R總
組件化、分布式、服務(wù)化、微服務(wù)、CAP定論、BASE
程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」
大規(guī)模分布式存儲(chǔ)系統(tǒng):原理解析與架構(gòu)實(shí)戰(zhàn).pfd
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服