1. 程式人生 > 其它 >7*24 小時業務不中斷!菜鳥鄉村應用多活落地實踐

7*24 小時業務不中斷!菜鳥鄉村應用多活落地實踐

從前期調研、方案評估、多活建設到最終核心物流業務的改造上線,僅僅只用了 2 個多月,菜鳥鄉村就完成了核心業務同城多活容災的目標,實現業務的 7*24 小時不間斷服務,最大程度保障了業務穩定性及連續性。

作者:比揚

從前期調研、方案評估、多活建設到最終核心物流業務的改造上線,僅僅只用了 2 個多月,菜鳥鄉村就完成了核心業務同城多活容災的目標,實現業務的 7*24 小時不間斷服務,最大程度保障了業務穩定性及連續性。

菜鳥鄉村作為服務農村的新型物流業務,通過數字化技術,打造縣域、鄉鎮、村三級共同配送服務體系,幫助鄉村物流降本提效,提升鄉村消費者快遞服務體驗;此外,還通過建設產地倉,形成產品分級品控、物流運輸一體化,帶動鄉村農貨上行,幫助農民增收。截至目前菜鳥鄉村物流已服務 1000 多個區縣,服務站點覆蓋 30000 多個鄉村。

面對高速發展的業務規模,除了不斷迭代業務能力的同時,菜鳥鄉村也在不斷的夯實其技術底座和業務應用的高可用能力。菜鳥鄉村的業務完全搭建在大公共雲之上,採用了雲原生架構,目的是為了藉助成熟的雲產品能力實現業務快速迭代。在調研多活容災之初,菜鳥的同學就找到了阿里雲原生高可用團隊負責業務多活容災 MSHA 的同學來一起探討針對菜鳥鄉村業務現狀和未來業務規劃的多活容災方案。經過 2 個多月的時間,菜鳥鄉村聯合阿里雲原生高可用團隊,打造了智慧化、集約化的雲化同城多活物流系統和共同配送平臺,實現了相關係統應用的同城多活容災架構建設,具備了可用區級流量比例的秒級調控(<10s),以及故障場景的可用區全方位流量(HTTP、RPC、MQ、任務排程)一鍵切 0 能力,歷次演練可用區級故障,一鍵切 0 生效時間均小於 20 秒,為菜鳥鄉村業務提供了有力的容災保障。

菜鳥鄉村應用多活的改造實踐之路

對於一家高速發展的公司來說,IT 的建設與運維通常跟不上業務的高速發展與迭代,如何高效、低成本的保障業務穩定成為業務發展中面臨的非常重要的挑戰與風險。讓我們一起來體驗菜鳥的鄉村的應用多活的改造實踐之路。

前期面臨的穩定性挑戰及高可用訴求

  • 核心業務系統僅在公共雲的單一可用區部署,存在可用區級的故障風險。
  • 保障業務快速迭代的同時,如何高效且低代價的落地容災方案。
  • 容災方案的選型問題。目標是災難發生時儘可能的縮短故障對使用者的影響時長,快速恢復業務。

從容災指標維度分析,在一個分散式系統中,一致性(Consistency)、可用性(Availability)、分割槽容錯性(Partition tolerance)中最多隻能同時實現兩點,不可能三者兼顧。在容災場景下,多數系統選擇 AP 或 CP 模式。

從實施成本維度分析,穩定性和擴充套件性效益越高,所帶來的實施成本也越大。

為了快速補全雲上基建的單可用區風險,菜鳥鄉村選擇通過“同城雙活”的容災架構來快速補齊短板,提升業務的高可用性。

結合業務現狀快速制定同城應用雙活容災方案

菜鳥鄉村與阿里雲一起針對所面臨問題以及未來業務規劃進行了深度溝通與研討。結合業務容災的訴求以及業務技術棧,阿里雲制定出了同城應用多活架構的解決方案,方案要點如下:

1、可用區級應用雙活。從 1 個可用區拓展到 2 個可用區,2 個可用區部署對等容量的應用。基於多活接入閘道器產品承接所有業務流量,並按照比例或精準路由規則將流量排程到不同可用區的後端應用,多個可用區部署的應用同時對外提供服務,實現應用多活。
2、微服務同可用區優先呼叫。基於多活產品 Agent 能力,支援開啟 Dubbo/SpringCloud 同可用區優先呼叫功能,從而避免跨可用區呼叫帶來的RT 增長。而當機房內健康的 Provider 數量低於配置的閾值時,則優先呼叫策略自動失效,避免同可用區 Provider 過少支撐不住上游的流量壓力。
3、快速容災恢復。當某一可用區發生故障時,基於多活產品的一鍵切流能力,首先通過多活接入閘道器將 HTTP 流量切換到另一可用區, 同時基於多活產品 Agent 能力將故障可用區內的 RPC(Dubbo/SpringCloud)、MQ(RocketMQ)、定時任務(SchedulerX/XXL-Job)客戶端進行故障隔離,實現全域性流量的快速容災切換。

上線前多次的容災演練與驗證

同城雙活的搭建能否平穩的執行到線上,預發環境的驗證和生產環境的容災演練是尤為關鍵的環節。

驗證工作主要包含以下兩部分:

Agent 啟動驗證。各類中介軟體的切 0 強依賴 Agent,必須確保 one Agent 能在所有業務容器正常啟動、探針可正常上報至 MSHA 管控服務,且 Agent 啟動後未影響到其他關聯服務。

容災切流能力驗證。搭建同城雙活是為了能在故障場景下及時切流,那麼接入層切 0 能力驗證、服務層切 0 能力驗證、訊息層切 0 能力驗證、排程任務層切 0 能力驗證、服務層流量封閉策略生效驗證等都是必不可少的內容。

容災演練則是在生產環境下,實際驗證容災的效果。生產環境真實演練選擇在業務低谷期,整體驗證內容跟預發環境類似,確保業務驗證通過,各類中介軟體、訊息、任務的走向符合預期。

菜鳥鄉村應用多活的業務價值

藉助於阿里雲的同城應用多活解決方案,幫助菜鳥鄉村實現了在較短的時間內業務同城容災的目標,實現業務 7*24 小時不間斷服務,即使單機房故障也能夠分鐘級恢復,最大程度保障業務的連續性。

同時菜鳥的業務高可用之路還未停止,如何引入混沌工程進行模擬真實故障注入來進行容災演練,如何將雙活切換進行常態化工作並時刻保鮮都是需要持續去完成的工作,多活容災之路不止於此,高可用之路也不止於此。菜鳥鄉村持續在路上。

如今,雲原生已經成為企業數字化轉型的關鍵策略,由於應用需要快速開發和交付,這就促使企業採用雲原生的方法來開發應用,以提高效率,並增加靈活性。對於身處雲原生時代的企業和開發者而言,不僅需要採用雲原生的手段來應對業務的高速迭代,更要關注雲原生下的高可用建設,同時也建議以開闊的視野和開放的心態去擁抱雲原生生態。

1 月 11 日,在上海的雲原生實戰峰會上,阿里雲智慧研究員丁宇釋出了《應用多活技術白皮書》,同時為了推動業界容災的發展,建立雲原生業務容災標準,阿里雲對外開源“應用多活”中介軟體:AppActive。

點選閱讀原文,立即下載《應用多活技術白皮書》!

瞭解阿里雲原生面嚮應用多活的商業化多活容災產品 MSHA,請關注:
https://www.aliyun.com/product/aliware/ahas/msha