你好,我是聶鵬程。
在上一篇文章中,通過對分布式發(fā)展歷程的學(xué)習(xí),我們對分布式技術(shù)有了一個整體印象。接下來,我們就再來看看可以用哪些指標(biāo)去具體地衡量一個分布式系統(tǒng)。如果你已經(jīng)對分布式系統(tǒng)的指標(biāo)了解得很清楚了,可以直接跳過這篇文章,學(xué)習(xí)下一講的內(nèi)容。
分布式系統(tǒng)的指標(biāo)
從分布式技術(shù)的起源可以看出,分布式系統(tǒng)的出現(xiàn)就是為了用廉價(jià)的、普通的機(jī)器解決單個計(jì)算機(jī)處理復(fù)雜、大規(guī)模數(shù)據(jù)和任務(wù)時存在的性能問題、資源瓶頸問題,以及可用性和可擴(kuò)展性問題。換句話說,分布式的目的是用更多的機(jī)器,處理更多的數(shù)據(jù)和更復(fù)雜的任務(wù)。
由此可以看出,性能、資源、可用性和可擴(kuò)展性是分布式系統(tǒng)的重要指標(biāo)。沒錯,它們就是分布式系統(tǒng)的“三圍”。接下來,我們一起來看看這幾個指標(biāo)吧。
性能(Performance)
性能指標(biāo),主要用于衡量一個系統(tǒng)處理各種任務(wù)的能力。無論是分布式系統(tǒng)還是單機(jī)系統(tǒng),都會對性能有所要求。
不同的系統(tǒng)、服務(wù)要達(dá)成的目的不同,關(guān)注的性能自然也不盡相同,甚至是相互矛盾。常見的性能指標(biāo),包括吞吐量(Throughput)、響應(yīng)時間(Response Time)和完成時間(Turnaround Time)。
吞吐量指的是,系統(tǒng)在一定時間內(nèi)可以處理的任務(wù)數(shù)。這個指標(biāo)可以非常直接地體現(xiàn)一個系統(tǒng)的性能,就好比在客戶非常多的情況下,要評判一個銀行柜臺職員的辦事效率,你可以統(tǒng)計(jì)一下他在1個小時內(nèi)接待了多少客戶。常見的吞吐量指標(biāo)有QPS(Queries Per Second)、TPS(Transactions Per Second)和BPS(Bits Per Second)。
- QPS,即查詢數(shù)每秒,用于衡量一個系統(tǒng)每秒處理的查詢數(shù)。這個指標(biāo)通常用于讀操作,越高說明對讀操作的支持越好。所以,我們在設(shè)計(jì)一個分布式系統(tǒng)的時候,如果應(yīng)用主要是讀操作,那么需要重點(diǎn)考慮如何提高QPS,來支持高頻的讀操作。
- TPS,即事務(wù)數(shù)每秒,用于衡量一個系統(tǒng)每秒處理的事務(wù)數(shù)。這個指標(biāo)通常對應(yīng)于寫操作,越高說明對寫操作的支持越好。我們在設(shè)計(jì)一個分布式系統(tǒng)的時候,如果應(yīng)用主要是寫操作,那么需要重點(diǎn)考慮如何提高TPS,來支持高頻寫操作。
- BPS,即比特?cái)?shù)每秒,用于衡量一個系統(tǒng)每秒處理的數(shù)據(jù)量。對于一些網(wǎng)絡(luò)系統(tǒng)、數(shù)據(jù)管理系統(tǒng),我們不能簡單地按照請求數(shù)或事務(wù)數(shù)來衡量其性能。因?yàn)檎埱笈c請求、事務(wù)與事務(wù)之間也存在著很大的差異,比方說,有的事務(wù)大需要寫入更多的數(shù)據(jù)。那么在這種情況下,BPS更能客觀地反映系統(tǒng)的吞吐量。
響應(yīng)時間指的是,系統(tǒng)響應(yīng)一個請求或輸入需要花費(fèi)的時間。響應(yīng)時間直接影響到用戶體驗(yàn),對于時延敏感的業(yè)務(wù)非常重要。比如用戶搜索導(dǎo)航,特別是用戶邊開車邊搜索的時候,如果響應(yīng)時間很長,就會直接導(dǎo)致用戶走錯路。
完成時間指的是,系統(tǒng)真正完成一個請求或處理需要花費(fèi)的時間。任務(wù)并行(也叫作任務(wù)分布式)模式出現(xiàn)的其中一個目的,就是縮短整個任務(wù)的完成時間。特別是需要計(jì)算海量數(shù)據(jù)或處理大規(guī)模任務(wù)時,用戶對完成時間的感受非常明顯。
資源占用(Resource Usage)
資源占用指的是,一個系統(tǒng)提供正常能力需要占用的硬件資源,比如CPU、內(nèi)存、硬盤等。
一個系統(tǒng)在沒有任何負(fù)載時的資源占用,叫做空載資源占用,體現(xiàn)了這個系統(tǒng)自身的資源占用情況。比如,你在手機(jī)上安裝一個App,安裝的時候通常會提示你有多少KB,這就是該App的空載硬盤資源占用。對于同樣的功能,空載資源占用越少,說明系統(tǒng)設(shè)計(jì)越優(yōu)秀,越容易被用戶接受。
一個系統(tǒng)滿額負(fù)載時的資源占用,叫做滿載資源占用,體現(xiàn)了這個系統(tǒng)全力運(yùn)行時占用資源的情況,也體現(xiàn)了系統(tǒng)的處理能力。同樣的硬件配置上,運(yùn)行的業(yè)務(wù)越多,資源占用越少,說明這個系統(tǒng)設(shè)計(jì)得越好。
可用性(Availability)
可用性,通常指的是系統(tǒng)在面對各種異常時可以正確提供服務(wù)的能力??捎眯允欠植际较到y(tǒng)的一項(xiàng)重要指標(biāo),衡量了系統(tǒng)的魯棒性,是系統(tǒng)容錯能力的體現(xiàn)。
系統(tǒng)的可用性可以用系統(tǒng)停止服務(wù)的時間與總的時間之比衡量。假設(shè)一個網(wǎng)站總的運(yùn)行時間是24小時,在24小時內(nèi),如果網(wǎng)站故障導(dǎo)致不可用的時間是4個小時,那么系統(tǒng)的可用性就是4/24=0.167,也就是0.167的比例不可用,或者說0.833的比例可用。
除此之外,系統(tǒng)的可用性還可以用某功能的失敗次數(shù)與總的請求次數(shù)之比來衡量,比如對網(wǎng)站請求1000次,其中有10次請求失敗,那么可用性就是99%。
你可能經(jīng)常在一個系統(tǒng)的宣傳語中見到或聽到3個9(或3N,3 Nines)、5個9(或9N,9 Nines)。這些宣傳語中所說的3個9、5個9,實(shí)際上就是系統(tǒng)廠商對可用性的一種標(biāo)榜,表明該系統(tǒng)可以在99.9%或99.999%的時間里能對外無故障地提供服務(wù)。
講到了可用性,你可能還會想到一個非常近似的術(shù)語:可靠性(Reliability)。那可靠性和可用性有什么區(qū)別呢?
可靠性通常用來表示一個系統(tǒng)完全不出故障的概率,更多地用在硬件領(lǐng)域。而可用性則更多的是指在允許部分組件失效的情況下,一個系統(tǒng)對外仍能正常提供服務(wù)的概率。
杰夫 · 迪恩(Jeff Dean)曾在Google I/O大會上透露:谷歌一個基于1000臺通用計(jì)算機(jī)的集群,一年之內(nèi)就有1000+硬盤會出現(xiàn)故障。由于現(xiàn)在比較常見的分布式系統(tǒng)基本上都是基于通用計(jì)算機(jī)的,這就意味著在這些系統(tǒng)中無法實(shí)現(xiàn)真正的可靠,所以我們也會在一些場合見到可靠性和可用性交換使用的情況。
可擴(kuò)展性(Scalability)
可擴(kuò)展性,指的是分布式系統(tǒng)通過擴(kuò)展集群機(jī)器規(guī)模提高系統(tǒng)性能(吞吐量、響應(yīng)時間、 完成時間)、存儲容量、計(jì)算能力的特性,是分布式系統(tǒng)的特有性質(zhì)。
分布式系統(tǒng)的設(shè)計(jì)初衷,就是利用集群多機(jī)的能力處理單機(jī)無法解決的問題。然而,完成某一具體任務(wù)所需要的機(jī)器數(shù)目,即集群規(guī)模,取決于單個機(jī)器的性能和任務(wù)的要求。
當(dāng)任務(wù)的需求隨著具體業(yè)務(wù)不斷提高時,除了升級系統(tǒng)的性能做垂直/縱向擴(kuò)展外,另一個做法就是通過增加機(jī)器的方式去水平/橫向擴(kuò)展系統(tǒng)規(guī)模。
這里垂直/縱向擴(kuò)展指的是,增加單機(jī)的硬件能力,比如CPU增強(qiáng)、內(nèi)存增大等;水平/橫向擴(kuò)展指的就是,增加計(jì)算機(jī)數(shù)量。好的分布式系統(tǒng)總是在追求“線性擴(kuò)展性”,也就是說系統(tǒng)的某一指標(biāo)可以隨著集群中的機(jī)器數(shù)量呈線性增長。
衡量系統(tǒng)可擴(kuò)展性的常見指標(biāo)是加速比(Speedup),也就是一個系統(tǒng)進(jìn)行擴(kuò)展后相對擴(kuò)展前的性能提升。
- 如果你的擴(kuò)展目標(biāo)是為了提高系統(tǒng)吞吐量,則可以用擴(kuò)展后和擴(kuò)展前的系統(tǒng)吞吐量之比進(jìn)行衡量。
- 如果你的目標(biāo)是為了縮短完成時間,則可以用擴(kuò)展前和擴(kuò)展后的完成時間之比進(jìn)行衡量。
不同場景下分布式系統(tǒng)的指標(biāo)
我們都希望自己的分布式系統(tǒng)是高性能、高可用、高擴(kuò)展和低資源占用的。但出于硬件成本、開發(fā)效率等因素的約束,我們無法在性能、可用性、可靠性和資源占用做到面面俱到。因此,在不同的業(yè)務(wù)場景中,設(shè)計(jì)者們需要有所取舍。
接下來,將一起看一下典型的電商、IoT、電信、HPC(高性能計(jì)算)、大數(shù)據(jù)、云計(jì)算、區(qū)塊鏈等業(yè)務(wù)或系統(tǒng)對不同指標(biāo)的訴求。
- 電商系統(tǒng)。對于一個電商系統(tǒng)而言,系統(tǒng)設(shè)計(jì)者最看重的是吞吐量,為了處理更多的用戶訪問或訂單業(yè)務(wù),甚至不惜犧牲一些硬件成本。
- IoT。對于一個IoT系統(tǒng)而言,設(shè)計(jì)者最看重的是資源占用指標(biāo),因?yàn)樵谝恍┕δ軜O簡的IoT設(shè)備上RAM、ROM的可用資源通常都是KB級的。
- 電信業(yè)務(wù)。對于電信業(yè)務(wù)而言,最重要的無疑是響應(yīng)時間、完成時間,以及可用性。因?yàn)?,你在打電話時不希望你的聲音半天才被對方聽到,也不希望半天才聽到對方的回應(yīng),更不希望你的電話無法撥出。
- HPC。HPC系統(tǒng)最顯著的特點(diǎn)是任務(wù)執(zhí)行時間極長,一個天體物理任務(wù)的分析和計(jì)算通常耗時數(shù)周甚至數(shù)月。因此,通過水平擴(kuò)展來提高系統(tǒng)的加速比,是HPC系統(tǒng)設(shè)計(jì)者需要關(guān)注的。
- 大數(shù)據(jù)。大數(shù)據(jù)任務(wù)的處理時間可能相對HPC系統(tǒng)來講比較短,但常見的完成時間也達(dá)到了小時級,所以擴(kuò)展性也是大數(shù)據(jù)系統(tǒng)首先要考慮的。
- 云計(jì)算。對于一個云計(jì)算系統(tǒng)而言,常見任務(wù)是虛擬主機(jī)或容器的創(chuàng)建、資源調(diào)整、銷毀等操作,如何減少這些操作的完成時間,從而提升用戶體驗(yàn)是設(shè)計(jì)者們要重點(diǎn)關(guān)注的。另外,云計(jì)算系統(tǒng)本質(zhì)上賣的是資源,那么降低系統(tǒng)本身的資源開銷,也是系統(tǒng)設(shè)計(jì)的重中之重。
- 區(qū)塊鏈。區(qū)塊鏈的吞吐量比較低,比特幣的TPS只有7次每秒,單平均一次交易的確認(rèn)就需要10分鐘左右,因此吞吐量和完成時間通常是區(qū)塊鏈系統(tǒng)設(shè)計(jì)者的首要目標(biāo)。
總結(jié)與思考
按照不同維度,分布式系統(tǒng)的指標(biāo)可以分為性能、資源占用、可用性、可擴(kuò)展性這四大類。我們自然希望自己的系統(tǒng),是高性能、高可用、高擴(kuò)展和低資源占用的,但考慮到硬件成本、開發(fā)效率等因素,必須要在設(shè)計(jì)不同的系統(tǒng)、業(yè)務(wù)時有所取舍。
所以,這里也分析了典型的電商、IoT、電信、HPC(高性能計(jì)算)、大數(shù)據(jù)、云計(jì)算、區(qū)塊鏈等業(yè)務(wù)或系統(tǒng)的不同訴求,進(jìn)而得出了系統(tǒng)設(shè)計(jì)者需要關(guān)注哪些指標(biāo)。你在設(shè)計(jì)其他類型的系統(tǒng)時,可以按照這個思路進(jìn)行取舍。
在文中提到了,分布式系統(tǒng)的指標(biāo)之間會存在一些沖突或約束。
思考一下: 在這些指標(biāo)中,哪些指標(biāo)之間是相互制約、相互沖突的,它們又是如何制約的呢?
在分布式系統(tǒng)中,性能、資源占用、可用性和可擴(kuò)展性這些指標(biāo)之間確實(shí)存在相互制約和沖突。以下是對這些指標(biāo)之間關(guān)系的詳細(xì)分析:文章來源:http://www.zghlxwxcb.cn/news/detail-849224.html
- 性能與資源占用:
- 性能通常指的是系統(tǒng)能夠快速有效地處理請求的能力,包括吞吐量(如QPS、TPS、BPS)和響應(yīng)時間等。
- 為了提高性能,系統(tǒng)可能需要更多的資源,如CPU、內(nèi)存和硬盤等。然而,資源是有限的,增加資源占用會帶來更高的成本。
- 可用性與性能:
- 可用性關(guān)注的是系統(tǒng)的穩(wěn)定性和可靠性,即系統(tǒng)能夠持續(xù)提供服務(wù)的程度。
- 在某些情況下,為了保證高可用性,可能需要犧牲一些性能,例如通過冗余設(shè)計(jì)來確保服務(wù)不間斷,這可能會增加系統(tǒng)的負(fù)載,從而影響性能。
- 可擴(kuò)展性與資源占用:
- 可擴(kuò)展性描述的是系統(tǒng)在負(fù)載增加時能夠通過添加資源來維持或提升性能的能力。
- 良好的可擴(kuò)展性意味著在需要時可以添加資源,但這也意味著在不需要時可能會有更多的資源閑置,從而導(dǎo)致資源占用率不高。
- 可用性與可擴(kuò)展性:
- 高可用性要求系統(tǒng)能夠在組件失敗時繼續(xù)提供服務(wù),這通常需要設(shè)計(jì)復(fù)雜的容錯機(jī)制。
- 而可擴(kuò)展性要求系統(tǒng)能夠靈活地增減資源以應(yīng)對負(fù)載變化,這可能需要系統(tǒng)具備一定的彈性設(shè)計(jì)。
- 兩者之間的沖突在于,有時候?yàn)榱吮WC可用性而設(shè)計(jì)的復(fù)雜機(jī)制可能會限制系統(tǒng)的可擴(kuò)展性,因?yàn)椴皇撬械娜蒎e機(jī)制都能夠輕易地適應(yīng)規(guī)模的擴(kuò)大或縮小。
總的來說,設(shè)計(jì)分布式系統(tǒng)時,需要在性能、資源占用、可用性和可擴(kuò)展性之間做出權(quán)衡。在不同的業(yè)務(wù)場景和需求下,這些指標(biāo)的重要性可能會有所不同,因此系統(tǒng)設(shè)計(jì)者需要根據(jù)具體情況來決定哪些指標(biāo)更為重要,以及如何平衡這些指標(biāo)之間的關(guān)系。文章來源地址http://www.zghlxwxcb.cn/news/detail-849224.html
到了這里,關(guān)于02 _ 分布式系統(tǒng)的指標(biāo):啥是分布式的三圍的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!