摘要:繼高可用架構團隊的Sentinel、Chaosblade開源后,第三個重磅高可用產(chǎn)品:應用多活AppActive正式開源,形成高可用的三架馬車,幫助企業(yè)構建穩(wěn)定可靠的企業(yè)級生產(chǎn)系統(tǒng),提高企業(yè)面對容災、容錯、容量等問題的穩(wěn)態(tài)系統(tǒng)建設能力。
1月11日,在上海的云原生實戰(zhàn)峰會上,阿里云智能研究員丁宇發(fā)布了“應用多活技術白皮書”,同時為了推動業(yè)界容災的發(fā)展,建立云原生業(yè)務容災標準,阿里云對外開源“應用多活”中間件:AppActive。
01 什么是AppActive
“業(yè)務大規(guī)模擴展機房資源不可用怎么辦?機房掛了怎么辦?業(yè)務突然奔潰怎么辦?臺風地震導致斷電怎么辦?”
2013年,當時淘寶完成去O沒多久,雙十一的規(guī)模較上年進一步飛增。阿里的工程師正面臨著上述的這一系列問題,一方面是機房資源非常緊張,容量不足,另一方面是杭州出現(xiàn)罕見的高溫天氣,機房面臨斷電的風險。異地多活架構在這個背景下孵化出來,它的載體是集團版本的UnitRouter&UnitBrain。
隨著淘寶的業(yè)務規(guī)模演進,異地多活也從近距離同城雙機房到遠距離異地雙活,再到三地四單元、多地多活,沉淀了豐富的機房級應用多活經(jīng)驗。
2019年,阿里巴巴系統(tǒng)全面上云,異地多活架構也跟著上云的節(jié)奏孵化出阿里云云產(chǎn)品AHAS-MSHA,服務集團和云上客戶。
2022年1月11日,AHAS-MSHA代碼正式開源,命名為AppActive。
AppActive是一個面向業(yè)務應用構建云原生高可用多活容災架構的開源中間件,它的主要價值:
·分鐘級RTO?;謴蜁r間快,阿里內(nèi)部生產(chǎn)級別恢復時間平均在30s以內(nèi),外部客戶生產(chǎn)系統(tǒng)恢復時間平均在1分鐘。
·資源充分利用。資源不存在閑置的問題,多機房多資源充分利用,避免資源浪費。
·切換成功率高。依托于成熟的多活技術架構和可視化運維平臺,相較于現(xiàn)有容災架構,切換成功率高,阿里內(nèi)部年切流數(shù)千次的成功率高達99.9%以上。
·流量精準控制。應用多活支持流量自頂?shù)降追忾],依托精準引流能力將特定業(yè)務流量打入對應機房,企業(yè)可基于此優(yōu)勢能力孵化全域灰度、重點流量保障等特性。
02 為什么開源
通過服務阿里集團近9年實戰(zhàn)經(jīng)驗及服務云上客戶2年多的商業(yè)化迭代積累,AHAS-MSHA已經(jīng)在涵蓋阿里的十余家大型企業(yè)的容災場景中落地,使用量在持續(xù)增長,代碼的穩(wěn)定性和功能特性也經(jīng)過充分的檢驗。
2021年,國內(nèi)外多家知名公司、云平臺出現(xiàn)較嚴重服務中斷、宕機事件。這也為企業(yè)敲響警鐘,越來越多的企業(yè)把容災建設提上日程。在解決容災問題的同時,為了保持對成本的控制、支撐未來的多云架構演進和災難容災的確定性,許多企業(yè)選擇以多活容災的方式進行嘗試。
但是業(yè)內(nèi)對于多活沒有統(tǒng)一的認知,對于“多活”這個詞不同企業(yè)有不同的定義,很多企業(yè)往往以為已經(jīng)實現(xiàn)了“多活”,可當故障來臨的時候,才發(fā)現(xiàn)當前系統(tǒng)的故障逃逸能力非常弱,業(yè)務恢復和故障定位無法解耦,拖累了企業(yè)生產(chǎn),造成了外部輿情、資金損失等問題;另外,有的企業(yè)在了解“多活”之后,下意識想要企業(yè)內(nèi)部先投入資源進行技術預演,但由于缺少經(jīng)驗,往往會造成人力物力等資源的重復浪費。隨著云原生技術發(fā)展,越來越多的客戶采用云原生技術進行系統(tǒng)構建。如何在云原生上構建穩(wěn)定高可用的系統(tǒng),是一個核心挑戰(zhàn)?!岸嗷睢钡恼J知偏差會加劇企業(yè)在基礎設施成本、應用改造成本、運維成本等成本面的投入,但存在效率低下、錯用甚至無用或者不用的問題,從而享受不到“多活”帶來的穩(wěn)定性紅利。因此“多活”需要一個相對統(tǒng)一的標準與認知,加深使用者對它的理解和使用,從而提高業(yè)務系統(tǒng)的穩(wěn)定性。
在當前云原生發(fā)展的現(xiàn)狀和市場認知下,AppActive的項目負責人中西表示,應用多活的開源和解讀,可以初步定義“多活”的標準和實現(xiàn),幫助開發(fā)者形成統(tǒng)一的“多活”認知。在企業(yè)構建多活架構時,基于應用多活共享已有的成熟經(jīng)驗,避免多余的資源浪費。同時,不同的企業(yè)具備不同的業(yè)務場景和優(yōu)勢,反向推動應用多活進一步完善和演進成熟的多活形態(tài)及能力。希望依靠社區(qū)的力量,讓“多活”成為一項事實意義的普惠技術,而不是望而卻步的部分人可用技術,幫助更多的企業(yè)和個人構建生產(chǎn)級別的高可用架構。
03 開源的內(nèi)容
1 AppActive標準介紹
在應用多活的標準定義里有LRA(同城多活)、UDA(異地多活)、HCA(混合云多活)和BFA(業(yè)務流量多活),詳細見《應用多活技術白皮書》。在AppActive v0.1版本中,我們優(yōu)先實現(xiàn)BFA和UDA的基礎能力,在后續(xù)版本中完善BFA和UDA的同時,新增LRA、HCA能力。本文重點介紹BFA、UDA。
1.業(yè)務流量多活(BFA,Business Flow Active)
BFA,指的是應用多活的最終呈現(xiàn)是業(yè)務,多活容災系統(tǒng)具備按照業(yè)務特征進行生產(chǎn)流量的精細化調(diào)配。
AppActive在BFA指標中,支持流量自動糾偏,強路由到指定機房自閉環(huán),屬于流量的精細化調(diào)配。
在非法流量打入機房時,機房的各層插件均會依托于統(tǒng)一的調(diào)度規(guī)則進行處理:
·接入層識別錯誤流量,自動糾錯到正確的機房。
·服務層識別錯誤流量,自動糾錯到正確的機房。
·數(shù)據(jù)層識別錯誤流量,為保證數(shù)據(jù)質量,拋出異常,寫入失敗。
2.異地多活(UDA,Ultra Distance Active)
UDA,指的是在超遠距離(機房間距超過300公里)時,業(yè)務系統(tǒng)仍具備較好的訪問性能。進入容災態(tài)時,RTO、RPO在分鐘級。
AppActive在UDA指標中,支持訪問性能良好。
在接入層支持流量解析,將請求流量進行解析,將流量打入機房的應用機器?;趹脗萐ervlet插件、Dubbo插件、MySQL插件的能力,業(yè)務流量請求在單一機房里面自閉環(huán),最終讀寫到本機房的數(shù)據(jù)庫。
在超遠距離場景下,由于流量封閉在機房內(nèi)部,因此業(yè)務系統(tǒng)仍舊具備較好的訪問性能。
進入容災態(tài)的RPO由開源數(shù)據(jù)同步組件或商業(yè)化同步工具進行保障,RTO在AppActive 0.1版本中僅提供初級的流量切換能力,后續(xù)版本會演進到生產(chǎn)級別RTO保障工具。
2 AppActive模塊介紹
AppActive屬于應用多活的一種定義和實現(xiàn),它有數(shù)據(jù)平面和管控平面的整體實現(xiàn)。
數(shù)據(jù)平面分為4部分,均支持在不變更原有企業(yè)使用技術組件基礎上,以插件的形式增加能力:
·接入網(wǎng)關。接入網(wǎng)關作為業(yè)務流量打入機房的第一跳,負責應用多活入口流量的識別和分發(fā),具備機房路由和應用路由兩個核心能力。
·服務層。業(yè)務流量在機房內(nèi)部和跨機房的同步調(diào)用方式,一般有Consumer、Provider、注冊中心等角色,具備流量路由、流量保護、故障隔離三個核心能力,避免調(diào)用錯誤導致的數(shù)據(jù)臟寫,加速切流期間的業(yè)務恢復。
·消息層。業(yè)務流量在機房內(nèi)部和跨機房的異步調(diào)用方式,基于消息削峰填谷,一般有Producer、Consumer、Broker等角色,具備流量路由、流量保護、故障隔離三個核心能力,避免消息錯投導致的數(shù)據(jù)臟寫,保護切流期間消息不丟。
·數(shù)據(jù)層:涵蓋業(yè)務應用數(shù)據(jù)讀寫、數(shù)據(jù)存儲和數(shù)據(jù)同步,其具備流量路由、數(shù)據(jù)一致性保護、數(shù)據(jù)同步三個核心能力。
管控平面核心涵蓋多活容災規(guī)則的日常運維和災難場景的流量切換。
當前AppActive處于v0.1版本,開源:
·上述的數(shù)據(jù)平面所有層的定義基礎實現(xiàn)。
·接入層網(wǎng)關的Nginx插件實現(xiàn)。
·服務層Dubbo2.x插件實現(xiàn)。
·數(shù)據(jù)層開源MySQL插件實現(xiàn)。
·管控平面流量切換的基礎能力。
開發(fā)者可基于v0.1的能力,進行應用多活的基本功能運行和驗證。
04 AppActive后續(xù)規(guī)劃
1.豐富接入層、服務層、數(shù)據(jù)層插件,支持更多技術組件到AppActive支持的列表中。
2.增加消息層的插件實現(xiàn),支持消息應用多活能力。
3.增加其他層在應用多活的標準和實現(xiàn)。
4.支持Web白屏化,follow應用多活UDA的標準,提升RTO。
5.遵循應用多活HCA標準支持混合云多活形態(tài)。
6.遵循應用多活LRA標準支持同城多活形態(tài)
05 起點
“異地多活”和“單元化”源于阿里,也受到了業(yè)界的認可。阿里也一直希望應用多活的產(chǎn)品生態(tài)可以做到標準和開放,對業(yè)界做出貢獻。
基于應用多活的標準技術,業(yè)務應用在不同的云廠商之間,不同的基礎設施之間,不同的芯片之間都可以實現(xiàn)互通互聯(lián)。業(yè)務應用在資源充分利用的同時,達到分鐘級甚至秒級的RTO指標,真正意義的做到不懼故障。