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