你應(yīng)該在系統(tǒng)中實(shí)現(xiàn)適量的故障隔離,以便產(chǎn)生實(shí)際的股東回報(bào)。你也許接著會(huì)問(wèn):“好的,多謝,那你能告訴我如何做到這點(diǎn)嗎?'
遺憾的是,答案取決于你特定的需求、發(fā)展速度、不可用性以及造成系統(tǒng)不可用的原因、客戶對(duì)可用性的期望值、簽署的可用性承諾以及各種因素的組合,它們產(chǎn)生的組合數(shù)量巨大,以至于我們不能向你描述出你的環(huán)境究竟需要什么。
簡(jiǎn)而言之,你可以應(yīng)用一-些簡(jiǎn)單的原則來(lái)提高你的可擴(kuò)展性和可用性。這里我們介紹了一些對(duì)你進(jìn)行故障隔離來(lái)說(shuō)最有用的原則。
方法1:把最賺錢的功能放入泳道
無(wú)論你做什么,都要確保把最能賺錢的功能正確地與故障和其他系統(tǒng)的需求約束隔離開來(lái)。如果你運(yùn)營(yíng)的是一個(gè)電子商務(wù)站點(diǎn),那么這可能是點(diǎn)擊“購(gòu)買”按鈕觸發(fā)的購(gòu)買流程,也可能是處理信用卡時(shí)的結(jié)賬流程。如果你運(yùn)營(yíng)的是一個(gè)提供內(nèi)容的站點(diǎn),通過(guò)專有的廣告發(fā)布系統(tǒng)賺錢,那么就要確保廣告發(fā)布系統(tǒng)的功能與系統(tǒng)其他一切功能分離開來(lái)。如果你的站點(diǎn)是靠日常的注冊(cè)費(fèi)賺錢的,那么就要確保從注冊(cè)到開賬單的流程都被正確地故障隔離了。
你也許有一些次級(jí)流程也 與站點(diǎn)賺錢的功能緊密相關(guān),那么理所當(dāng)然應(yīng)該也考慮為它們施加泳道。例如,在一個(gè)電子商務(wù)站點(diǎn)中,可能需要把搜索和瀏覽功能都放入泳道。在一個(gè)提供內(nèi)容的站點(diǎn)中,可能需要把訪問(wèn)流量最大的區(qū)域放在它們自己的一個(gè)或多個(gè)泳道中,以幫助需求和產(chǎn)能推測(cè)。社交網(wǎng)絡(luò)站點(diǎn)應(yīng)該為最常被訪問(wèn)的個(gè)人信息頁(yè)面全部或部分創(chuàng)建泳道。
方法2:把最容易引發(fā)故障的功能放入泳道
如果你在不斷地執(zhí)行季度故障回顧會(huì)議(如第8章所述),你發(fā)現(xiàn)你站點(diǎn)中的某些組件在反復(fù)地引發(fā)故障,那么在將來(lái)的余量項(xiàng)目中,絕對(duì)應(yīng)該考慮這些組件,并且應(yīng)該把這些區(qū)域隔離起來(lái)。季度故障回顧會(huì)議的目的是從我們過(guò)去的錯(cuò)誤中吸取教訓(xùn)。如果由需求造成的可用性問(wèn)題反復(fù)發(fā)生,我們就應(yīng)該把這些區(qū)域隔離起來(lái),以防它們影響產(chǎn)品或平臺(tái)的其他部分。
方法3:根據(jù)自然界限劃分泳道
在多租戶的SaaS系統(tǒng)中,這種方法尤其有用,這種系統(tǒng)通常需要沿著Z軸擴(kuò)展,需要最大可擴(kuò)展性的站點(diǎn)和平臺(tái)通常都必須依靠沿Z軸的分段進(jìn)行擴(kuò)展,而最常用的是按照客戶進(jìn)行劃分。雖然這種劃分通常首先是在架構(gòu)的存儲(chǔ)或數(shù)據(jù)庫(kù)層實(shí)現(xiàn)的,但是接下來(lái),我們應(yīng)該為從請(qǐng)求到數(shù)據(jù)存儲(chǔ)或數(shù)據(jù)庫(kù)的所有組件都創(chuàng)建泳道。
你可以把系統(tǒng)設(shè)計(jì)為在一一條泳道中運(yùn)營(yíng)一個(gè)或多個(gè)“租戶”。 如果你的平臺(tái)適合這樣做,那就充 通常,多租戶意味著你試圖通過(guò)共享資源而提高成本效率。在許多情況下,這種方法意味著分利用這一點(diǎn)。 如果你的某個(gè)租戶非常忙,就給它單獨(dú)分配一個(gè)泳道。而如果你的大多數(shù)租戶對(duì)你的平臺(tái)的使用率都很低,那么可以把它們分配到一個(gè)泳道中。原理大致如此。
故障隔離的設(shè)計(jì)備忘錄故障隔離的架構(gòu)的設(shè)計(jì)原則如下:
原則1:什么都不能共享(即盡可能少共享)。一個(gè)泳道內(nèi)共享的東西越少,這個(gè)泳道的故障隔離性越好。
原則2:什么都不能跨過(guò)泳道邊界。絕對(duì)不能跨泳道邊界進(jìn)行通信,否則就是邊界劃分不正確。
原則3:在泳道內(nèi)交易。你不能為服務(wù)創(chuàng)建泳道,因?yàn)檫@些服務(wù)之間的通信違背了原則2。
設(shè)計(jì)故障隔離的架構(gòu)的方法如下:
方法1:把最賺錢的功能放入泳道。絕對(duì)不要讓你的收款機(jī)受其他系統(tǒng)拖累。
方法2:把最容易引發(fā)故障的功能放入泳道。找出反復(fù)發(fā)作的故障的原因,把它們隔離起來(lái)。
方法3:根據(jù)自然界限劃分泳道。按照客戶劃分是很好的泳道劃分方法。
雖然方法很多,但提高網(wǎng)站設(shè)計(jì)的可擴(kuò)展性同時(shí)又不致讓你的CFO心臟病發(fā)作的道路還很漫長(zhǎng)。
本文地址:http://www.islandpacificappraisals.com//article/3896.html