故障隔離的架構(gòu)會(huì)給平臺(tái)或產(chǎn)品的可用性帶來很大的好處。當(dāng)一個(gè)故障隔離城或泳道在平臺(tái)或系統(tǒng)架構(gòu)級(jí)別出了故障,你失去的只是駐留在這些泳道的服務(wù)器中的功能、地理位置或客戶群。當(dāng)然,前提是你的泳道架構(gòu)設(shè)計(jì)正確,其他泳道不會(huì)調(diào)用這個(gè)出問題的泳道。在這個(gè)例子中,不論哪個(gè)泳道出故障都不會(huì)給可用性帶來什么好處,但影響卻有大小之分,所以泳道的架構(gòu)就顯得非常重要。為了說明這一點(diǎn), 讓我們來對(duì)比一下支持高可用性的泳道架構(gòu)和架構(gòu)設(shè)計(jì)不良的泳道架構(gòu)。
我們?cè)诮榻B各個(gè)主題時(shí),都采用了虛構(gòu)的AllScale公司為例,這次也不例外。AllScale公司的團(tuán)隊(duì)決定把創(chuàng)建泳道的概念應(yīng)用到新開發(fā)的客戶關(guān)系管理系統(tǒng)(CRM)和已有的人力資源管理系統(tǒng)(HRM)上。這兩個(gè)系統(tǒng)都是SaaS (軟件即服務(wù))平臺(tái)。CTO約翰尼.菲克斯和他的團(tuán)隊(duì)從無到有地開發(fā)了CRM平臺(tái),這個(gè)平臺(tái)支持公司層面上的多租戶,也就是說,多個(gè)公司可以駐留在一個(gè)物理數(shù)據(jù)庫中,這樣可以減少整體成本,更有效地利用資本。AllScale公司的架構(gòu)師還認(rèn)識(shí)到了長期擴(kuò)展的需求,因?yàn)樗鼈兊目蛻羰遣粩嘣鲩L的。因此,他們決定,對(duì)于新開發(fā)的CRM解決方案和已有的HRM解決方案,都以客戶為邊界,劃分應(yīng)用和數(shù)據(jù)庫。約翰尼和AllScale公司的團(tuán)隊(duì)決定了,不再需要?jiǎng)澐值淖钚〉目蛻舴謮K是公司內(nèi)的一個(gè)部門。AllScale公 司的架構(gòu)師還確定了要在美國范圍內(nèi),運(yùn)行多個(gè)活動(dòng)的數(shù)據(jù)中心。
AllScale公司的架構(gòu)師選擇了泳道,或者說故障隔離的架構(gòu)。他們大致按一個(gè)非常 大的公司部門配以幾個(gè)較小的公司的方式分配數(shù)據(jù)中心,這些客戶所需的所有服務(wù)都來自于這個(gè)數(shù)據(jù)中心。數(shù)據(jù)中心的選址盡量靠近數(shù)據(jù)中心所服務(wù)的公司的企業(yè)總部。任何一個(gè)組件發(fā)生了故障,那么只有駐留在這個(gè)數(shù)據(jù)中心的客戶會(huì)在發(fā)生停機(jī)或服務(wù)中斷的過程中在數(shù)據(jù)中心之間進(jìn)行通信。因此,一旦一個(gè)數(shù)據(jù)中心中從數(shù)據(jù)庫到邊界路由器的任何服務(wù)都不能受到影響。
局城網(wǎng)分段和多個(gè)數(shù)據(jù)庫,就可以把多個(gè)部門或一組公司放到數(shù)據(jù)中心的一個(gè)故障隔離域中。 這 Aslal公司的架構(gòu)師進(jìn)一步發(fā)現(xiàn)了一種利用泳道在數(shù)據(jù)中心中進(jìn)行擴(kuò)展的方法。 借助虛擬樣地,服務(wù)也不能跨故障隔離城通信。這樣的話,除了共享的網(wǎng)絡(luò)設(shè)備外(如路由器和邊界路由 樣還可以對(duì)內(nèi)部路由器后的系統(tǒng)和服務(wù)進(jìn)行故障隔離,包括局城網(wǎng)、數(shù)據(jù)庫、應(yīng)用服務(wù)器等。同期,它允許公司把eca飯本的產(chǎn)品發(fā)布給相互隔離的客戶分段,從而進(jìn)步降低了風(fēng)險(xiǎn))。其他任何設(shè)備故障都會(huì)被隔離在數(shù)據(jù)中心的一一個(gè)區(qū)或城中。在實(shí)現(xiàn)時(shí),這種設(shè)計(jì)超出了預(yù)故障隔離的架構(gòu),而不是以客戶為邊界。在這種情況下,該團(tuán)隊(duì)可能會(huì)為登錄服務(wù)創(chuàng)建一個(gè)泳道,另一種方法是按照服務(wù)來劃分故際隔離城。讓我們假討AlSeal的團(tuán)隊(duì)以服務(wù)為邊界創(chuàng)建了為更新銷售線索集的服務(wù)創(chuàng)建一個(gè)泳道,為查看銷售線索的服務(wù)創(chuàng)建一個(gè)泳道,為制作銷售線索衡量指標(biāo)的報(bào)表的服務(wù)創(chuàng)建一個(gè)泳道。這種方法的問題在于,一旦其中任何一個(gè)服務(wù)出了故障,都可能給其他服務(wù)帶來意想不到的影響。例如,在上述例子中,一旦登錄服務(wù)發(fā)生故障,導(dǎo)致系統(tǒng)無法訪問,那么盡管其他服務(wù)仍然可用,但可以想見,系統(tǒng)的用量會(huì)逐漸下降,因?yàn)樾碌牡卿洸僮鞫疾槐唤邮芰恕_@樣要與平臺(tái)進(jìn)行交互的客戶在登錄失敗后會(huì)100%受到影響。
這并不是說,絕對(duì)不應(yīng)該采用這種面向服務(wù)的隔離方法。恰好相反,這種方法可以很好地隔離代碼庫、通過隔離來縮短上市時(shí)間以及通過緩存特定服務(wù)的動(dòng)作來減少擴(kuò)展需求。然而,一旦你的服務(wù)要依賴于其他服務(wù),無論是以前面提到的同步方式,還是要按照時(shí)間序列,一個(gè)服務(wù)要在另一個(gè)服務(wù)之前調(diào)用,那么你都使自己陷人了故障高發(fā)的境地。這時(shí)你可以通過確保先發(fā)生的服務(wù)具有更高的可用性和冗余度,以降低它們出故障的風(fēng)險(xiǎn),或者也可以進(jìn)行多次劃分,進(jìn)一步隔離故障。
如果要采用前一種方法,即讓先發(fā)生的服務(wù)具有更高的可用性,常用的方法是極大地增加產(chǎn)能。此外,對(duì)每個(gè)公司進(jìn)行功能減負(fù)),也會(huì)有助于隔離某些問題。對(duì)于新的登錄代碼,強(qiáng)制性地讓少量用戶采用特定的登錄池服務(wù),可以減少新代碼帶給AllScale公司的風(fēng)險(xiǎn)。在服務(wù)器上建立連接限制,可以在出于某些原因造成服務(wù)變慢時(shí),仍然使某些客戶能夠正確登錄系統(tǒng)。
設(shè)計(jì)為能夠禁用的,我們稱之為功能減負(fù)。有了功能減負(fù)的設(shè)計(jì),就可以把產(chǎn)品中的某個(gè)功能禁用掉,從而不會(huì)影響到,其他功能。公司路動(dòng)能減負(fù)投貴的常見原因是,限制新的功能發(fā)布對(duì)可用性和 口可擴(kuò)展性的負(fù)面影響。功能減負(fù)實(shí)施得當(dāng),就能夠在修復(fù)問題代碼成系統(tǒng)時(shí),讓一個(gè)新發(fā)布的版本保留在生產(chǎn)環(huán)境中,需無需回退整個(gè)發(fā)布。通常可以通過一個(gè)軟開關(guān)讓有問題的代碼成系統(tǒng)離線,在引發(fā)意外行為的問題得到解決后,再讓它上線。
采用這種方法,AlSal公同既按照服務(wù)進(jìn)行了劃分,又以公司為基礎(chǔ)按照客戶進(jìn)行 我們傾向于采用后一種方法,即進(jìn)行網(wǎng)站設(shè)計(jì)的多次劃分來隔離故障,因?yàn)樗瑫r(shí)解決了可擴(kuò)展性和可離,然后又在這個(gè)服務(wù)泳道中,采用泳道進(jìn)行了面向客戶的劃分。此外,AlSale公司還可以交 了劃分。首先ASCal公司以面向技術(shù)的劃分方法為主要?jiǎng)澐址椒ǎㄟ^登錄服務(wù)泳道實(shí)現(xiàn)了隔離劃分的順序,首先為組公司創(chuàng)建一 個(gè)客戶豆莢 (或泳道),然后在豆莢中,用泳道來劃分服務(wù),其中一一種服務(wù)可以是登錄服務(wù)。雖然大多數(shù)公司認(rèn)為面向客戶的劃分方法更自然,但無論哪種方法都是可行的。劃分類型,其中將介紹AKF立方以及如何把它應(yīng)用到服務(wù)、數(shù)據(jù)庫和存儲(chǔ)結(jié)構(gòu)上。
本文地址:http://123beaconmarketing.com//article/3892.html