優(yōu)惠活動 - 12周年慶本月新客福利
優(yōu)惠活動 - 12周年慶本月新客福利
優(yōu)惠活動 - 12周年慶本月新客福利

如何進(jìn)行網(wǎng)站故障隔離

故障隔離程度最好的系統(tǒng),是那些絕對不調(diào)用它們的功能或數(shù)據(jù)范圍以外的東西并且與之沒有任何交互的系統(tǒng)??梢韵胂笠唤M混凝土襯托的房間,每個(gè)房間有一扇門,每扇門后面是一個(gè)長長的隔離通道,通道的盡頭有另一扇門;也就是說,一扇門可以訪問混凝土襯托的房間,而另一扇門可以訪問一個(gè)共享的房間,該房間中有無窮多個(gè)桌子和人。在每個(gè)混凝土房間中,有一條信息,坐在那許多桌子后面的某個(gè)人,可能需要這條信息。要得到這條信息,他就要沿著這個(gè)具有他所需信息的房間的專用通道走到其中,然后再返回自己所在的桌子。在完成這趟旅行之后,他可以決定再去那個(gè)房間,獲取第二條信息,也可以決定沿著另一個(gè)通道,去另一個(gè)房間。任何人都不能直接從一個(gè)房間進(jìn)人另一個(gè)房間,他必須經(jīng)過長途旅行才能得到自己想要的信息。如果太多人因?yàn)橐酵粋€(gè)房間而被堵在同一個(gè)通道中,那么共享房間中的人立刻就會知道,他們可以決定旅行到另一個(gè)房間,也可以決定就地等待。


 
在這個(gè)例子中,我們不僅展示了如何看待故障隔離的設(shè)計(jì),還說明了這種設(shè)計(jì)的兩個(gè)好處。第一個(gè)好處是,通道堵塞時(shí),不會妨礙人們從共享房間移動到另一. 個(gè)房間。第二個(gè)好處是,每個(gè)人都會立即知道哪個(gè)房間已經(jīng)滿了。與這個(gè)例子相反的是,每個(gè)房間都連接到一個(gè)共享通道上,通道被阻塞了,就很難判斷是哪個(gè)房間滿了,而從共享房間進(jìn)人這個(gè)共享通道的人口只有一個(gè)。這時(shí)雖然這里的每個(gè)房間都是隔離的,但如果 而且也不能從共享房間旅行到其他房間了。這個(gè)例子也說明了故障隔離的架構(gòu)的第一個(gè)原則。
 
原則1:什么都不能共享
 
這一原則過于極端,從經(jīng)濟(jì)上來說不可行。但即使加此,它仍然是故障隔離的架構(gòu)的起點(diǎn)。如果故障隔離的設(shè)計(jì)或架構(gòu)的第一個(gè)原則是絕對不能共事任何東西。當(dāng)然,對于某些公司來說,你想確保產(chǎn)能故障或系統(tǒng)故障不會引發(fā)多個(gè)系統(tǒng)的問題,就需要隔離系統(tǒng)組件。對于某些組件,這樣做也許非常困難,如邊界路由器或網(wǎng)關(guān)路由器。也就是說,考慮到某些情況下的經(jīng)濟(jì)和技術(shù)約束,這條原則應(yīng)用得越全面,得到的結(jié)果就越好。
 
人們常常會忽略的方面是URI/URL。例如,考慮為不同的分組使用不同的子域。如果按照客戶分組,那么可以考慮采用custl allscale.com到custNallscale.com,依此類推。理想狀況下,域分組也涉及隔離的Web服務(wù)器和應(yīng)用服務(wù)器以及那個(gè)URI/URL專用的數(shù)據(jù)庫和存儲。如果經(jīng)濟(jì)因素允許而又有相應(yīng)的需求,那么你應(yīng)該采用專門的負(fù)載均衡器、DNS和訪問交換機(jī)。
 
如果你劃分了兩條泳道卻讓它們與一個(gè)共享數(shù)據(jù)庫通信,那么從全局來看它們?nèi)匀皇且粋€(gè)泳道。也許從服務(wù)角度看,你有兩個(gè)較小的故障隔離區(qū)域(如應(yīng)用服務(wù)器),當(dāng)一個(gè)應(yīng)用服務(wù)器發(fā)生故障時(shí),這種方法是有幫助的,但如果數(shù)據(jù)庫發(fā)生了故障,那么這兩個(gè)服務(wù)泳道都會停機(jī)。
 
原則2:什么都不能跨過泳道邊界
 
在設(shè)計(jì)故障隔離的系統(tǒng)時(shí),還有一個(gè)重要的原則。如果你有同步通信的系統(tǒng),甚至是有異步通信的系統(tǒng),那么它們就可能引發(fā)潛在的故障。雖然異步通信的系統(tǒng)引發(fā)這種故障的可能性較小,但在需求極大的場景中,超時(shí)設(shè)置不足以完成整個(gè)通信流程時(shí),它們也會引發(fā)大量問題。
 
你不能構(gòu)建了一個(gè)故障隔離的區(qū)域,同時(shí)卻讓這個(gè)區(qū)域與區(qū)域之外的東西通信?;叵胍幌挛覀兡莻€(gè)混凝土房間的比喻,混凝土房間和它們的通道是故障隔離的區(qū)域或域。大的共享房間是Intemet。如果不返回桌子所在的位置(我們的瀏覽器),然后選擇另一條通道,是不能從一個(gè)房間進(jìn)人另一個(gè)房間的。這樣我們就能知道瓶頸或問題所在的確切位置,然后找出處理這些問題的方法。
 
不同區(qū)域之間的任何通信以及我們上述場景中的任何通道之間的通信,都可能使故障隔離出現(xiàn)問題。一個(gè)通道中堆滿了人,不僅可能引發(fā)這個(gè)通道的問題,還可能引發(fā)通過其他通道連接的房間的問題。如果沒有全面的診斷,我們怎么能輕松地發(fā)現(xiàn)問題到底發(fā)生在哪里呢?反過來,任何一個(gè)房間堆滿了人,也可能會給其他房間帶來意想不到的影響,從而降低了房間的可用性。
 
原則3:在泳道內(nèi)交易
 
考慮到網(wǎng)站建設(shè)故障隔離的名字和前面的原則,這個(gè)原則似乎應(yīng)該是不言而喻的,但我們在很久之前就學(xué)到了不要做任何假設(shè)。在技術(shù)領(lǐng)域,假設(shè)就是災(zāi)難之母。你見到過泳者排在泳池邊上準(zhǔn)備出發(fā),他們眼前卻橫置著一條條泳道的分道線嗎?當(dāng)然沒有。不過,這樣的障礙游泳倒是挺有趣的。這對于技術(shù)泳道來說同樣如此。例如,聲稱自己創(chuàng)建了一個(gè)數(shù)據(jù)庫泳道,這是不對的。交易是怎么到達(dá)數(shù)據(jù)庫的?顯然會有跨泳道的通信,而根據(jù)原則2,這種情況不應(yīng)該發(fā)生。對于這個(gè)例子,你可能創(chuàng)建了一個(gè)池,但由于交易是要跨界的,所以根據(jù)我們的定義,它不是泳道。

本文地址:http://m.blackside-inc.com//article/3895.html
相關(guān)文章:
最新文章: