掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
作者:JavaSpring高級(jí)進(jìn)階 2019-08-05 07:58:01
新聞
架構(gòu)
分布式
分布式 分布式系統(tǒng)從當(dāng)初的CORBA 到EJB,Web和SOA,從集群到現(xiàn)在的NoSQL 云計(jì)算和大數(shù)據(jù)Hadoop等分布式系統(tǒng),橫向水平擴(kuò)展Scala out/in是分布式系統(tǒng)設(shè)計(jì)的一個(gè)特點(diǎn),可靠性、容錯(cuò)性是兩個(gè)質(zhì)量指標(biāo)。

創(chuàng)新互聯(lián)客戶idc服務(wù)中心,提供綿陽(yáng)主機(jī)托管、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過(guò)各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開(kāi)放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。
分布式系統(tǒng)從當(dāng)初的CORBA 到EJB,Web和SOA,從集群到現(xiàn)在的NoSQL 云計(jì)算和大數(shù)據(jù)Hadoop等分布式系統(tǒng),橫向水平擴(kuò)展Scala out/in是分布式系統(tǒng)設(shè)計(jì)的一個(gè)特點(diǎn),可靠性、容錯(cuò)性是兩個(gè)質(zhì)量指標(biāo)。
與傳統(tǒng)集中式系統(tǒng)相比:
集中式系統(tǒng)是一種Scale out/in,縱向擴(kuò)展,要么向上升級(jí)服務(wù)器到中大型機(jī),要么升級(jí)多核,增加CPU核數(shù),集中式縱向擴(kuò)展適合計(jì)算聚合度比較高的數(shù)據(jù),而分布式適合計(jì)算松散數(shù)據(jù),非結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù)。無(wú)論采取哪種擴(kuò)展伸縮方案,需要根據(jù)業(yè)務(wù)數(shù)據(jù)特點(diǎn)而定。
任何分布式系統(tǒng)總是需要完成兩個(gè)任務(wù):計(jì)算和存儲(chǔ)。計(jì)算和存儲(chǔ)分離是分布式系統(tǒng)的重要特征。而通常在集中式或單機(jī)系統(tǒng)中,這兩者是可能結(jié)合在一起,比如通過(guò)一個(gè)SQL語(yǔ)句實(shí)現(xiàn)查詢后排序,查詢是從存儲(chǔ)中獲得數(shù)據(jù),排序是屬于計(jì)算,因此這個(gè)SQL語(yǔ)句實(shí)際是將計(jì)算和存儲(chǔ)耦合在一起。在應(yīng)對(duì)大數(shù)據(jù)或大并發(fā)的情況下,這種方便的捆綁帶來(lái)性能問(wèn)題,而分布式計(jì)算和分布式存儲(chǔ)雖然帶來(lái)復(fù)雜性,但是也為系統(tǒng)的處理能力打開(kāi)了上升拓展的空間。
分布式系統(tǒng)特點(diǎn):
定位命令:
透明性:
分布式系統(tǒng)是難于理解、設(shè)計(jì)、構(gòu)建 和管理的,他們將比單個(gè)機(jī)器成倍還要多的變量引入到設(shè)計(jì)中,使應(yīng)用程序的根源問(wèn)題更難發(fā)現(xiàn)。SLA(服務(wù)水平協(xié)議)是衡量停機(jī)和/或性能下降的標(biāo)準(zhǔn),大多數(shù)現(xiàn)代應(yīng)用程序有一個(gè)期望的彈性SLA水平,通常按"9"的數(shù)量增加(如,每月99.9或99.99%可用性)。每個(gè)額外的9變得越來(lái)越難實(shí)現(xiàn)。
讓事情更加復(fù)雜的是,我們?cè)絹?lái)越常見(jiàn)地看到:分布式系統(tǒng)的故障表現(xiàn)為間歇性錯(cuò)誤或性能下降(俗稱的限電)。這些失敗模式耗費(fèi)更多時(shí)間來(lái)診斷。例如,Joyent經(jīng)營(yíng)一些分布式系統(tǒng)作為其云計(jì)算基礎(chǔ)設(shè)施的一部分。在這樣一個(gè)系統(tǒng)中,包括高可用性、分布式的鍵/值存儲(chǔ),Joyent最近經(jīng)歷了瞬態(tài)應(yīng)用程序超時(shí)。對(duì)于大多數(shù)用戶系統(tǒng)運(yùn)行正常,其反應(yīng)延遲也是在SLA范圍內(nèi)。然而,有百分之5 - 10的請(qǐng)求超出了一個(gè)預(yù)定義的程序超時(shí)。這樣的失敗問(wèn)題并沒(méi)有重現(xiàn)在開(kāi)發(fā)或測(cè)試環(huán)境中,他們經(jīng)常會(huì)"消失"幾分鐘到幾小時(shí)。排除這個(gè)故障的根本是需要大量數(shù)據(jù)存儲(chǔ)的系統(tǒng)分析。
這些系統(tǒng)包括:數(shù)據(jù)存儲(chǔ)API(node . js),RDBMS(關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))和由系統(tǒng)內(nèi)部使用(PostgreSQL)以及操作系統(tǒng)和終端用戶應(yīng)用程序依賴于的鍵/值系統(tǒng)。最終,導(dǎo)致過(guò)度的根本問(wèn)題是在應(yīng)用程序語(yǔ)義鎖定,但確定之前需要相當(dāng)大的數(shù)據(jù)收集和相關(guān)性工作,包括工程師耗費(fèi)大量工作時(shí)間以及學(xué)習(xí)不同領(lǐng)域的專業(yè)知識(shí)。
分布式系統(tǒng)由兩個(gè)物理因素的限制:
這兩個(gè)約束導(dǎo)致下面值得挑戰(zhàn)的情況發(fā)生:
適用于分布式系統(tǒng)架構(gòu)的最常見(jiàn)的一個(gè)術(shù)語(yǔ)是SOA(面向服務(wù)架構(gòu))。SOA可以避免不愉快的CORBA(公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)),通過(guò)WS - *標(biāo)準(zhǔn),一套松散耦合的Web服務(wù)完成獨(dú)立的小功能,并且彼此獨(dú)立,他們是一個(gè)有彈性的分布式系統(tǒng)的基礎(chǔ)。對(duì)比上一代,服務(wù)是新流程,他們是正確的抽象層次系統(tǒng)中的離散功能。
構(gòu)建面向服務(wù)架構(gòu)的第一步是確定每個(gè)函數(shù)功能如何構(gòu)成整體業(yè)務(wù)目標(biāo),將這些業(yè)務(wù)映射到離散的服務(wù),且具有獨(dú)立的斷層邊界、擴(kuò)展性和數(shù)據(jù)負(fù)載量。確定為每個(gè)服務(wù)時(shí),您必須考慮下列事項(xiàng):
分布式系統(tǒng)的模型抽象
通常,我們最熟悉的模式(例如,一個(gè)分布式系統(tǒng)上實(shí)現(xiàn)共享內(nèi)存抽象)是太昂貴了。一個(gè)分布式系統(tǒng)越弱勢(shì)越能保證其中元素有更大的行動(dòng)自由,從而煥發(fā)潛在的更大的性能- 但它也可能導(dǎo)致很難管理。這就需要我們有極大智慧,不能以犧牲性能換來(lái)管理的方便性。因此,試圖將分布式系統(tǒng)看成一個(gè)統(tǒng)一的單一系統(tǒng)的思維會(huì)阻礙分布式系統(tǒng)的擴(kuò)展。
分布式系統(tǒng)遵循CAP定律,在高一致性 高可用性和分區(qū)容錯(cuò)性之間三選二:
對(duì)于一個(gè)數(shù)據(jù)集有兩種設(shè)計(jì)方式:
分布式系統(tǒng)的設(shè)計(jì)技巧:時(shí)鐘和順序
分布式系統(tǒng)針對(duì)計(jì)算和存儲(chǔ)的策略是不同的,對(duì)于數(shù)據(jù)的存儲(chǔ)主要是分區(qū)和復(fù)制,而對(duì)于計(jì)算主要是保證事件的順序,因?yàn)榉植际接?jì)算任務(wù)是由事件驅(qū)動(dòng)的,比如Storm等等。那么事件的順序代表了業(yè)務(wù)邏輯的順序,事件有時(shí)是樹形嵌套事件,可靠性就是必須保證一個(gè)樹形集合所有事件都得到網(wǎng)站執(zhí)行是一個(gè)事務(wù)原子的。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流