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