首頁>科技>

前言

由於外部環境的複雜以及硬體的不可靠,網際網路服務的高可用面臨著巨大的挑戰,由於斷網、斷電等事故導致的各大網際網路公司服務不可用的案例也不在少數。業務不可用,小到帶來經濟損失影響企業口碑,大到微信、支付寶這些國民級應用,影響國計民生。面對難以避免的天災人禍,容災架構的建設就成為了數字化企業的迫切訴求。

2020 年 12 月份,阿里雲應用高可用產品 AHAS(Application High Availability Service)釋出了新的功能模組 AHAS-MSHA,它是在阿⾥巴巴電商業務環境演進出來的多活容災架構解決⽅案。本篇文章我們首先介紹容災領域的幾個重要概念,然後將結合一個的電商微服務案例,分享一下如何基於 AHAS 的異地多活能力(AHAS-MSHA)和混沌工程能力(AHAS-Chaos)幫助業務實現容災架構的高可用實踐。

容災與評價指標1. 什麼是容災?

容災(Disaster Tolerance)是指在相隔較遠的異地,建立兩套或多套功能相同的系統,系統之間可以相互進行健康狀態監視和功能切換,當一處系統因意外(如火災、洪水、地震、人為蓄意破壞等)停止工作時,整個應用系統可以切換到另一處,使得該系統功能可以繼續正常工作。

2. 容災能力如何評估?

容災系統主要為了在災難發生時業務不發生中斷,那麼容災能力如何評估和量化呢?這裡需要介紹一下業界通常採用的容災能力評價指標:

RPO(Recovery Point Objective)

即資料恢復點目標,以時間為單位,即在災難發生時,系統和資料必須恢復的時間點要求。RPO 標誌系統能夠容忍的最大資料丟失量,系統容忍丟失的資料量越小,RPO 的值越小。

RTO(Recovery Time Objective)

即恢復時間目標,以時間為單位,即在災難發生後,資訊系統或業務功能從停止到必須恢復的時間要求。RTO 標誌系統能夠容忍的服務停止的最長時間,系統服務的緊迫性要求越高,RTO 的值越小。

AHAS-MSHA1. 介紹

MSHA(Multi-Site High Availability)是一個多活容災架構解決⽅案(解決方案=技術產品+諮詢服務+生態夥伴),可以將業務恢復和故障恢復解耦,支援故障場景下業務的快速恢復,助⼒企業的容災穩定性建設。

1)產品架構

MSHA 採用異地多活的容災架構,核心思想是 “隔離的冗餘”,我們將各個冗餘的邏輯資料中心稱為單元,MSHA 做到了業務流量在單元內封閉,單元之間隔離,把故障爆炸半徑控制在一個單元內,不僅能解決容災問題,提升業務連續性,並且能實現容量的擴充套件。

2)主流容災架構對比2. 功能特性故障快速恢復

秉承先恢復,再定位的原則,MSHA 提供了容災切流能力,在資料保護的前提下讓業務恢復時間故障恢復時間解耦合,保障業務連續性。

容量異地擴充套件

業務⾼速發展,受限於單地有限資源,也存在資料庫瓶頸等問題。使用 MSHA 可以在其它地域、機房快速擴建業務單元,實現快速水平擴容的目的。

資料防髒寫

多單元寫資料可能造成髒寫覆蓋的問題,MSHA 提供流量打入錯誤單元時的禁防寫,以及切流資料同步延時期間的禁寫/禁更新保護。

3. 應用場景

MSHA 可適用於以下典型業務場景的多活容災架構建設:

讀多寫少型業務業務場景:典型的業務場景就是資訊、導購類服務(如商品瀏覽、新聞資訊)。資料特點:讀多寫少型業務,核心是讀業務,能夠接受寫業務的暫時不可用。流水單據型業務業務場景:典型的業務場景就是電商交易、賬單流水類服務(如訂單、通話記錄等)。資料特點:資料可以按一定的維度進行分片且能接受資料的最終一致。業務容災實踐

下面我們透過一個電商微服務案例,來介紹不同場景的容災架構建設案例。

1. 電商業務背景1)業務應用frontend,入口 WEB 應用,負責和使用者互動cartservice,購物車應用。記錄使用者的購物車資料,使用自建的 Redisproductservice,商品應用。提供商品、庫存服務,使用 RDS MySQLcheckoutservice,下單應用。將購物車中的商品生成購買訂單,使用 RDS MySQL2)技術棧SpringBootRPC 框架:SpringCloud,註冊中心使用自建的 Eureka3)電商應用架構 1.0

電商業務初期,跟很多網際網路企業一樣,沒有考慮容災問題,只在單地域進行了部署。

2. 案例一:讀多寫少型業務容災案例1)一次故障的發生

電商業務初期發展迅速,小而美的單地域部署方式也一直沒有變化,直到一次商品應用故障的發生,導致電商業務癱瘓,頁面長時間無法訪問。故障最終得以解決,但故障導致的客戶流失和企業口碑影響,對快速發展的業務造成不小的打擊,迫使我們開始考慮高可用能力的建設。

電商業務主要分為導購、購物車、交易等業務場景,首當其衝的就是導購。它是典型的讀多寫少型業務場景,核心是導購頁面的展示(讀鏈路),通常可以接受釋出、上架商品服務的暫時不可用(寫鏈路)。結合自身容災訴求,我們先定下一個改進的小目標--“異地多讀”。

2)異地多讀容災架構改造

基於 MSHA 將導購業務改造為“異地多讀”。

多活改造 & MSHA 接入:

分割槽維度:使用 userId 來作分流標識。改造範圍:將導購鏈路相關的入口 WEB 應用 、 商品應用 進行兩地域部署。管控配置:進入 MSHA 控制檯進行各層多活資源的配置。3)故障復現

容災架構改造完成後,並沒有結束,還需驗證容災能力是否符合預期。接下來我們將歷史故障進行復現,透過製造真實的故障來驗證容災恢復能力。

【演練準備】

業務監控指標:基於 MSHA 流量監控或其他監控能力,確定業務穩態監控指標,以便在故障發生時判斷故障影響面以及在故障恢復後判斷業務的實際恢復情況。

演練預期

導購鏈路對購物車應用是弱依賴(導購頁會展示使用者放入購物車的商品數量),弱依賴故障不影響業務。導購鏈路對商品應用是強依賴,強依賴故障將導致業務不可用,故障的爆炸半徑應該控制在單元內。【故障演練】

利用 AHAS-Chaos 故障演練功能,能夠方便的進行多種故障場景的演練。

第一階段:弱依賴故障演練故障注入:對購物車應用進行故障注入預期:導購業務不受影響結果:導購頁能正常開啟,符合預期第二階段:強依賴故障演練

演練前配置的路由規則如下(userId%10000 後根據如下路由範圍規則進行匹配):

故障注入:對北京單元的商品應用進行故障注入預期:userId=6000 的使用者路由到北京單元,會受故障的影響結果:導購頁訪問異常,符合預期爆炸半徑驗證:驗證保障半徑是否控制在故障單元內預期:userId=50 的使用者路由到杭州單元,不受北京單元故障的影響結果:導購頁訪問正常,符合預期4)切流恢復

故障場景下,使用 MSHA 切流功能,驗證容災恢復能力。

容災切換驗證:將 userId=6000 切流到杭州單元預期:切流後該使用者將路由到杭州單元,不受北京單元故障的影響。結果:導購頁訪問正常(導購請求的實際呼叫鏈參見下面動圖),容災恢復能力符合預期。

後續:故障撤銷

故障注入終止演練結果反饋,記錄演練識別到的風險問題流量回切檢視穩態業務指標是否恢復3. 案例二:流水單據型業務容災案例1)新的故障

經過上述的改造,導購業務已經具備抵禦地域級故障的能力。而訂單應用大面積故障,成為了壓死訂單業務的最後一根稻草。於是,下單業務的高可用架構建設,也提上了議程。

下單是典型的流水單據型業務場景,相比導購,是更為複雜的讀寫結合業務,結合業務場景和業務容災訴求,我們選取了適合業務的容災建設方案--“異地多活”。

2)異地多活容災架構改造

基於 MSHA 將訂單業務改造為“異地多活”。

注:下單鏈路強依賴購物車應用,完整的多活容災建設,後續還應將購物車應用也改造為“異地多活”。

多活改造 & MSHA 接入

改造範圍:下單應用和訂單資料庫進行兩地域部署。MSHA 接入:將下單鏈路的應用安裝上 Agent,從而無侵入的實現 SpringCloud RPC 跨單元路由功能和資料防髒寫功能。管控配置:3)故障復現

容災架構改造完成後,接下來我們將歷史故障進行復現,透過製造真實的故障來驗證容災恢復能力。

【演練準備】

業務監控指標:基於 MSHA 流量監控或其他監控能力,確定業務穩態監控指標。

演練預期:下單鏈路對訂單應用是強依賴,強依賴故障影響業務不可用,且故障爆炸半徑控制在單元內。

【故障演練】

演練前配置的路由規則如下(userId%10000 後根據如下路由範圍規則進行匹配):

故障注入:對北京單元的訂單應用進行故障注入預期:userId=6000 的使用者路由到北京單元,會受到故障影響結果:下單異常,符合預期爆炸半徑驗證:驗證保障半徑是否控制在故障單元內預期:userId=50的使用者路由到杭州單元,不受北京單元故障的影響結果:下單正常,符合預期4)切流恢復

使用 MSHA 切流功能,驗證故障場景下的容災切換能力。

容災切換驗證:將 userId=6000 切流到杭州單元預期:切流後該使用者將路由到杭州單元,不受北京單元故障的影響結果:下單正常(下單請求的實際呼叫鏈參見下面動圖),容災恢復能力符合預期。總結

在本篇文章中,我們介紹了 AHAS 為業務容災提供的一大利器:MSHA 多活容災解決方案,並結合一個電商業務,介紹了讀多寫少型和流水單據型 2 個典型業務場景下的容災建設案例,給出容災架構建設實踐方法,同時結合 AHAS-Chaos 故障演練功能模擬一次真實可能發生的故障,驗證容災能力是否符合預期。

延伸閱讀AHAS-MSHA 多活容災解決方案官方文件:https://help.aliyun.com/document_detail/181717.htmlAHAS-Chaos 故障演練官方文件:https://help.aliyun.com/document_detail/90327.html電商業務多活實踐:https://help.aliyun.com/document_detail/184984.html強弱依賴治理&故障演練最佳實踐:https://help.aliyun.com/document_detail/185932.html

9
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 全球市場連續6年奪魁!華為預製模組化資料中心市場份額獨佔鰲頭