阿里專家講中臺:技術(shù)中臺-分布式架構(gòu)在螞蟻金服的實踐
來源| 阿里云峰會
文| 技術(shù)領(lǐng)導(dǎo)力社區(qū)
本文整理自,阿里高級技術(shù)專家-許文奇在2019阿里云峰會上的分享《技術(shù)中臺-分布式架構(gòu)在螞蟻金服的實踐》,結(jié)合技術(shù)領(lǐng)導(dǎo)力社區(qū)架構(gòu)專家的點評和解讀,全面解析阿里技術(shù)中臺的架構(gòu)實踐。
一、分布式架構(gòu)的優(yōu)勢和理念
01
傳統(tǒng)單體架構(gòu)特點
(本文圖片來源:阿里云峰會 版權(quán)歸作者)
通常一個初創(chuàng)型項目,都是從單體架構(gòu)開始的。
優(yōu)點就是快,易于開發(fā)、測試、部署,一個WAR包發(fā)上生產(chǎn)就完事了。
缺點也很明顯,因為所有模塊都在一個程序包里,導(dǎo)致編譯慢、啟動慢、代碼沖突,每次合并代碼的時候都是惡夢,發(fā)布成功率?完全靠運氣。
02
微服務(wù)架構(gòu) vs 單體架構(gòu)
(點擊圖片放大)
復(fù)雜度較小時采用單體應(yīng)用生產(chǎn)效率更高,復(fù)雜度到了一定規(guī)模時單體應(yīng)用的生產(chǎn)效率開始急劇下降,這時對其進(jìn)行服務(wù)化拆分才是合算的。
微服務(wù)架構(gòu)之所以得到廣泛認(rèn)可,源于對業(yè)務(wù)多變性的不可預(yù)測,微服架構(gòu)能夠不斷的自演化 ,進(jìn)而快速適應(yīng)業(yè)務(wù)變化。
03
模塊化開發(fā)
微服務(wù)架構(gòu),從業(yè)務(wù)頂層設(shè)計開始,按照業(yè)務(wù)線進(jìn)行模塊拆分,從表現(xiàn)層、邏輯層、數(shù)據(jù)層進(jìn)行獨立的剝離單體應(yīng)用。很多企業(yè)都經(jīng)歷過單體應(yīng)用到服務(wù)化應(yīng)用的拆分過程,這里要注意業(yè)務(wù)的連續(xù)性、數(shù)據(jù)的完整性問題。
04
微服務(wù)架構(gòu)的負(fù)載均衡優(yōu)勢
以前通常用LVS、F5作為接入層的負(fù)載均衡服務(wù),主要提供限流、負(fù)載、安全等等。
在微服務(wù)架構(gòu)中,由網(wǎng)關(guān)作為接入層,提供輕量級的負(fù)載均衡、協(xié)議轉(zhuǎn)換、鑒權(quán)等服務(wù),微服務(wù)通常有服務(wù)治理框架,如DUBBO等,提供服務(wù)治理、服務(wù)注冊、服務(wù)發(fā)現(xiàn)、隔離等。
05
數(shù)據(jù)訪問瓶頸解決方案--數(shù)據(jù)庫垂直切分
分布式架構(gòu)是如何解決數(shù)據(jù)訪問瓶頸的呢?首先是數(shù)據(jù)庫的垂直切分,比如,按用戶、交易、賬務(wù)拆分到獨立的數(shù)據(jù)庫當(dāng)中,緩解了數(shù)據(jù)存儲和訪問的壓力,當(dāng)然也可以做主備庫,進(jìn)行讀寫分離的。
06
數(shù)據(jù)訪問瓶頸解決方案--數(shù)據(jù)庫水平切分
其次,進(jìn)行數(shù)據(jù)庫的水平切分,比如交易數(shù)據(jù)庫和數(shù)據(jù)表的數(shù)據(jù)量太大,可以按交易時間進(jìn)行分表、分庫,拆分表的數(shù)量計算方法見上圖。
拆表拆庫是解決數(shù)據(jù)訪問、存儲問題,但是會給數(shù)據(jù)查詢帶來很大麻煩,比如跨多表、多庫的復(fù)雜查詢場景。解決的辦法很多,通常有:用ES進(jìn)行復(fù)雜查詢,篩用ID再到庫里撈數(shù)據(jù)(即復(fù)雜查詢拆分多次查詢),或用分布式海量數(shù)據(jù)庫方案,不去做太細(xì)粒度的拆分庫表,如下面會提到的OceanBase。
二、分布式架構(gòu)實踐舉例--分布式TA系統(tǒng)
07
傳統(tǒng)TA系統(tǒng)架構(gòu)
傳統(tǒng)TA系統(tǒng)架構(gòu),清算串行效率低,無法通過增加機(jī)器線性擴(kuò)展性能,一般使用大事務(wù),出現(xiàn)問題全部回滾。
08
分布式TA系統(tǒng)架構(gòu)
分布式TA系統(tǒng)架構(gòu),結(jié)構(gòu)更合理,也更復(fù)雜。分成了:接入層、業(yè)務(wù)服務(wù)層、SOFAStack層、LAAS、運維工具鏈、治理控制。
接入層:包括協(xié)議轉(zhuǎn)換、訪問控制、文件傳輸、運維工作臺。
業(yè)務(wù)服務(wù)層:即業(yè)務(wù)核心邏輯服務(wù),如:賬戶、交易、賬單、清算等。
SOFAStack:螞蟻金服的通用服務(wù)組件,許多都開源了,包括:微服務(wù)框架、分布式事務(wù)、任務(wù)調(diào)度、消息隊列、數(shù)據(jù)代理、鏈路跟蹤等。
分布式TA系統(tǒng)的需求攻克的技術(shù)難題。分布式清算任務(wù)如何高效實現(xiàn)?分布式下,加大應(yīng)用處理出錯可能性,那清算任務(wù)如何確保正確性?下面會談?wù)勅绾谓鉀Q。
09
分布式任務(wù)調(diào)度平臺
分布式任務(wù)調(diào)度平臺,支持:
自定義分片,高效利用集群計算能力。
執(zhí)行中可對任務(wù)進(jìn)行暫停/續(xù)跑,強(qiáng)制取消。
任務(wù)失敗重試機(jī)制,保障整體計算任務(wù)成功。
10
清算任務(wù)調(diào)度
清算任務(wù)調(diào)度,整個架構(gòu)分為:1)任務(wù)拆分,即申請交易文件,按一定的邏輯進(jìn)行數(shù)據(jù)分片;2)任務(wù)執(zhí)行,將執(zhí)行處理過后的數(shù)據(jù),存入流水庫;3)核心服務(wù),包括交易、清算、賬務(wù)、賬戶等。
11
清算的容錯和核對機(jī)制
清算的容錯和核對機(jī)制,包含:日初始化、文件導(dǎo)入、清算處理、收益計算、份額調(diào)整、清算導(dǎo)出、二次清算、收益導(dǎo)出。
每個環(huán)節(jié)都可以沖正重做。
可以按文件、用戶、備份點進(jìn)行作業(yè)回滾。
優(yōu)點是,任意流程可回滾、精準(zhǔn)逐筆核對,支持按中臺用戶回滾,縮短了清算時長。
三、分布式架構(gòu)下如何保障系統(tǒng)的可靠性及穩(wěn)定性
02
灰度發(fā)布機(jī)制
灰度發(fā)布機(jī)制,流程包括:beta發(fā)布、分組發(fā)布、灰度引流、全量發(fā)布。
清算灰度,可以靈活的按用戶維度抽取分片,縮短灰度時間。
13
線上全鏈路壓測
線上全鏈路壓測,通過數(shù)據(jù)訪問代理,壓測數(shù)據(jù)進(jìn)入線上影子表,不影響正常業(yè)務(wù)數(shù)據(jù),全鏈路壓測特點有:
1、壓測環(huán)境復(fù)用生產(chǎn),結(jié)果可靠;優(yōu)于線下。
2、壓測數(shù)據(jù)打標(biāo)無法進(jìn)入生產(chǎn)環(huán)境,表級隔離。
14
OceanBase高可用機(jī)制
OceanBase高可用機(jī)制,基于Paxos協(xié)議的典型三副本部署:
1)數(shù)據(jù)強(qiáng)一致性;
2)持續(xù)可用;
3)主備自動切換;
4)單機(jī)、機(jī)房、城市級故障:不停服務(wù),不丟數(shù)據(jù);
OceanBase分布式數(shù)據(jù)庫方案,優(yōu)于商用數(shù)據(jù)庫的主備庫方案,主要體現(xiàn)在:分布式數(shù)據(jù)庫,寫事務(wù)到達(dá)超過半數(shù)庫,少數(shù)庫異常不影響業(yè)務(wù),兩地三中心多活,灰度升級。
15
OceanBase常用部署方案
OceanBase的部署方案有:
同城三機(jī)房,同城多個核心機(jī)房,相距30公里以內(nèi),延遲約在0.5~2ms之間;
兩地三中心,正常情況下和同城三中心部署的延遲一致,其中一個城市的一臺ObServer 宕機(jī)會增加異地同步延遲。
16
同城雙活容災(zāi)架構(gòu)
同城容災(zāi)雙活架構(gòu),平時以主機(jī)房為主,承載日常交易,少量交易走備機(jī)房,架構(gòu)特點是:
1)同機(jī)房優(yōu)先,避免跨損耗
2)對應(yīng)用無任何侵入
3)像單機(jī)房一樣開發(fā)部署應(yīng)用
4)容災(zāi)自動切換
特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:
長按訂閱更多精彩▼
如有收獲,點個在看,誠摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!