電路中的組件可以以各種方式連接,最簡(jiǎn)單的兩種連接方法就是串聯(lián)和并聯(lián)。串聯(lián)電路中的組件,如電阻器和電容器,是按照一條路徑連接的。在這種電路中,電流會(huì)流經(jīng)每個(gè)組件,電阻和電壓是累加的。一個(gè)電路有3個(gè)電阻器,另一個(gè)電路有3個(gè)電池圖中還標(biāo)示出所產(chǎn)生的電阻和電壓。如果任何一個(gè)組件出了故障,如一個(gè)電阻熔斷,那么整個(gè)電路都會(huì)出故障。
展示的是兩個(gè)并聯(lián)電路,上面的那個(gè)電路有3個(gè)電阻(和個(gè)電壓電源或電容器),下面的電路有3個(gè)電池??傠娮枋敲總€(gè)電阻的倒數(shù)之和的倒數(shù)。根據(jù)定義,總電阻一定小于最小的電阻。此外還要注意,電壓并未改變,且電池只供應(yīng)一部分電流,從而延長(zhǎng)了它們的使用壽命。注意,在這種電路中,一個(gè)組件出了故障并不會(huì)引發(fā)整個(gè)電路的故障。
系統(tǒng)架構(gòu)和電路有許多相似之處。服務(wù)器和網(wǎng)絡(luò)設(shè)備就是組件。系統(tǒng)中有的組件是Web服務(wù)器,有些是應(yīng)用服務(wù)器,有些是負(fù)率載均衡器,還有可能會(huì)是數(shù)據(jù)庫服務(wù)器。這些組件都可以并聯(lián)連接,也可以串聯(lián)連接。一個(gè)簡(jiǎn)單的例子就是具有很大流量的靜態(tài)站點(diǎn)。你可以用10個(gè)Web服務(wù)器放置同一個(gè)靜態(tài)站點(diǎn)來提供流量。也可以使用一個(gè)負(fù)載均衡器來定向流量,或分配10個(gè)獨(dú)立的P地址,通過DNS與你的域關(guān)聯(lián)在一起。這些Web服務(wù)器是以并聯(lián)方式連接的,就像圖9-3中的電池。一臺(tái)Web服務(wù)器需要處理的流量只是總量的一小部分,如果一臺(tái)服務(wù)器出現(xiàn)了故障,整個(gè)站點(diǎn)仍是可用的,因?yàn)檫€有其他9臺(tái)Web服務(wù)器。
作為一個(gè)更典型的串聯(lián)架構(gòu)的例子,讓我們來添加一些層。一個(gè)標(biāo)準(zhǔn)的三層站點(diǎn),有一臺(tái)Web服務(wù)器、一臺(tái)應(yīng)用服務(wù)器和一臺(tái)數(shù)據(jù)庫服務(wù)器,我們用一個(gè)架構(gòu)把它們串聯(lián)起來。為了完成一個(gè)請(qǐng)求,Web服務(wù)器必須先接受它,然后把它傳遞給應(yīng)用服務(wù)器,應(yīng)用服務(wù)器再査詢數(shù)據(jù)庫。然后應(yīng)用服務(wù)器接收返回的數(shù)據(jù)據(jù),對(duì)數(shù)據(jù)進(jìn)行操作,再將結(jié)果發(fā)回Web服務(wù)器,最終由Web服務(wù)器滿足客戶的請(qǐng)求。如果該電路或架構(gòu)中的任何組件壞了,整個(gè)系統(tǒng)都會(huì)中斷工作。
這把我們帶回了現(xiàn)實(shí)世界中的架構(gòu)。幾乎總會(huì)有要求把系統(tǒng)組件串聯(lián)連接在一起。在你考慮到負(fù)載均衡器、Web和應(yīng)用層、數(shù)據(jù)庫、存儲(chǔ)系統(tǒng)等時(shí),要保持系統(tǒng)運(yùn)行就需要許多組件。當(dāng)然,以并聯(lián)方式添加組件,即使各個(gè)層是以串聯(lián)方式連接的,也有助于減少由一個(gè)組件出故障而導(dǎo)致整個(gè)系統(tǒng)出故障的風(fēng)險(xiǎn)。把流量分配到多臺(tái)web服務(wù)器上,這樣如果只有一臺(tái)Web服務(wù)器出故障了,也不會(huì)導(dǎo)致整個(gè)系統(tǒng)出故障。在Web和應(yīng)用層,許多人承認(rèn)這一理念。而在數(shù)據(jù)庫和網(wǎng)絡(luò)層,許多人則會(huì)忽視這個(gè)問題。如果Web和應(yīng)用服務(wù)器都是以并聯(lián)方式連接的,但它們卻都要串聯(lián)到一個(gè)數(shù)據(jù)庫上,那么這一個(gè)組件就會(huì)造成災(zāi)難性的故障。
至于網(wǎng)絡(luò)組件,我們常常能看到一些架構(gòu)很注意以并聯(lián)方式連接服務(wù)器,但完全忽略了網(wǎng)絡(luò)設(shè)備,尤其是防火墻。防火墻在網(wǎng)絡(luò)中是很常見的,關(guān)于防火墻的討論。在這種情況下,流量要先經(jīng)過防火墻,然后再經(jīng)過負(fù)載均衡器、防火墻、交換機(jī),隨后到達(dá)Web服務(wù)器、應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器,最后再原路返回。至少要經(jīng)歷7種組件各兩次。如果經(jīng)過了6個(gè)組件,再加一個(gè)組件,又有什么大不了呢?
串聯(lián)的組件會(huì)使故障風(fēng)險(xiǎn)成倍增加。一個(gè)簡(jiǎn)單的例子是,如果我們有兩臺(tái)串聯(lián)的服務(wù)器,每臺(tái)有9.9%的可用性或正常運(yùn)行時(shí)間,那么系統(tǒng)的總可用性就會(huì)小于99.9%×99.9%=99.8%6。如果我們以串聯(lián)方式加入第三個(gè)組件,同樣,我們得到的可用性會(huì)更低,即99.9%×99.9%×99.9%0=99.7%0。以串聯(lián)方式加入系統(tǒng)的組件越多,系統(tǒng)的可用性越低。表94列出了一些簡(jiǎn)單的計(jì)算,可以看出,隨著可用性降低,每月停機(jī)的時(shí)間會(huì)增加。以串聯(lián)方式每向系統(tǒng)加入一個(gè)組件(可用性為99.9%),每月的停機(jī)時(shí)間就會(huì)增加約43分鐘。
像當(dāng)今大多數(shù)電路一樣,你的網(wǎng)站建設(shè)系統(tǒng)也比簡(jiǎn)單的串聯(lián)或并列許接多了,因此,要精確預(yù)計(jì)可用性,比我們這個(gè)簡(jiǎn)單的例子要復(fù)雜多了。你能了解到串聯(lián)的組件會(huì)大大提高系統(tǒng)停機(jī)的風(fēng)險(xiǎn)。當(dāng)然,減少串聯(lián)的組件,或者并聯(lián)地添加這些組件的多個(gè)版本,就可以減少這種風(fēng)險(xiǎn)。
本文地址:http://www.khwajamoinuddinchishty.com//article/3514.html