2021年10月鄙皇,中國人民銀行等聯(lián)合發(fā)布了《關(guān)于規(guī)范金融業(yè)開源技術(shù)應用與發(fā)展的意見》(銀辦發(fā)〔2021〕146 號),規(guī)范金融機構(gòu)合理應用開源技術(shù)仰挣,提高應用水平和自主可控能力伴逸,促進開源技術(shù)健康可持續(xù)發(fā)展。前期膘壶,為助力成員單位做好開源技術(shù)應用與發(fā)展工作错蝴,北京金融科技產(chǎn)業(yè)聯(lián)盟開源專委會組織了金融業(yè)開源技術(shù)應用、創(chuàng)新等方面的案例征集颓芭,現(xiàn)對部分優(yōu)秀案例進行宣傳顷锰,發(fā)揮先進典型示范。
【金融機構(gòu)開源技術(shù)應用創(chuàng)新成果案例 第八期】
微眾銀行——金融級云原生消息總線及事件網(wǎng)格平臺建設(shè)
申報單位:深圳前海微眾銀行
技術(shù)領(lǐng)域:云原生事件網(wǎng)格
技術(shù)產(chǎn)品:DeFiBus亡问、EventMesh
業(yè)務場景:分布式金融級消息總線
應用啟動時間:2017年3月一
案例背景
實施背景
微眾銀行作為一家純線上銀行官紫,為滿足互聯(lián)網(wǎng)客戶的7×24業(yè)務服務需求,對系統(tǒng)的可用性有著極高的要求。同時為更好地提供普惠金融能力束世,微眾銀行也需要走出一條“高效率酝陈、低成本、廣覆蓋”的創(chuàng)新之路毁涉。因此沉帮,微眾銀行基于開源技術(shù)自研了分布式金融級消息總線,實現(xiàn)了對商業(yè)消息總線產(chǎn)品的全部替換贫堰,實現(xiàn)了完全自主可控遇西,同時在兩地三中心的基礎(chǔ)上,基于分布式金融級消息總線的多活特性严嗜,啟動和實施了全行業(yè)務系統(tǒng)同城多中心多活的規(guī)劃和建設(shè)粱檀,實現(xiàn)同城任何一個數(shù)據(jù)中心故障不影響對客戶的業(yè)務服務,為普羅大眾提供更加可靠的金融服務漫玄。
業(yè)務需求
為達到分布式架構(gòu)基礎(chǔ)組件的安全可控茄蚯,支持海量業(yè)務的發(fā)展,加強同城數(shù)據(jù)中心容災能力睦优,進一步提升業(yè)務連續(xù)性管理水平渗常,本項目目標是建立分布式消息總線替換集中式總線,支持多中心多活特性汗盘,實現(xiàn)應用系統(tǒng)的同城多數(shù)據(jù)中心多活改造皱碘,即應用系統(tǒng)在任一數(shù)據(jù)中心內(nèi)不可用時,能自動由同城其他數(shù)據(jù)中心接替進行業(yè)務處理隐孽,對外繼續(xù)提供服務癌椿。量化來看,分布式消息總線的設(shè)計目標為:消息總線的容災能力達到同城RPO=0菱阵、同城RTO接近于0踢俄。
存在的痛難點問題
1)消息總線支持分布式部署,每個組件均能進行獨立的擴展晴及,升級都办,任意一個節(jié)點不可用,總線仍然能提供服務虑稼。
2)分布式消息總線提供多中心多活的特性支持琳钉,系統(tǒng)在同城多個數(shù)據(jù)中心部署,應用無狀態(tài)蛛倦,單個數(shù)據(jù)中心故障時歌懒,能夠通過同城其他數(shù)據(jù)中心的機器繼續(xù)提供服務。
3)分布式消息總線對機器及網(wǎng)絡故障進行快速的自動隔離胰蝠,降低故障對業(yè)務的影響歼培。改造過程的風險控制震蒋,實現(xiàn)平滑改造,減少對業(yè)務的影響躲庄。
解決思路
在應用層面查剖,任意一個DCN在同城兩個或兩個以上數(shù)據(jù)中心部署、單個DCN內(nèi)應用部署兩個或兩個以上的實例噪窘,實現(xiàn)應用多中心多實例多活部署笋庄,應用在多中心同時提供服務,確保同城任一中心出現(xiàn)故障時倔监,還有其他數(shù)據(jù)中心的應用實例繼續(xù)提供服務直砂。
在系統(tǒng)間通訊層面,通過消息總線支持跨IDC的消息轉(zhuǎn)發(fā)浩习,打通三中心間的應用通訊静暂,使應用對消息流向無感知。同城三中心任一數(shù)據(jù)中心出現(xiàn)故障時谱秽,自動將消息流轉(zhuǎn)至其他數(shù)據(jù)中心洽蛀,由其他數(shù)據(jù)中心的下游應用繼續(xù)接收和處理消息。在系統(tǒng)間通訊時疟赊,遵循數(shù)據(jù)中心內(nèi)優(yōu)先訪問的原則郊供,以減少跨數(shù)據(jù)中心的通訊流量和端到端的交易延遲,提高系統(tǒng)間通訊的質(zhì)量和穩(wěn)定性近哟。
二創(chuàng)新成效
技術(shù)方案
2015年10月至2016年2月驮审,期間主要完成了分布式消息總線的開源選型和架構(gòu)概念設(shè)計、可行性評估和技術(shù)架構(gòu)的高層設(shè)計吉执。提交了分布式消息總線設(shè)計方案疯淫。
為了盡可能不重復造輪子,微眾銀行對比選型了一些開源產(chǎn)品鼠证,RocketMQ是一款開源的分布式消息隊列產(chǎn)品峡竣,采用Java語言開發(fā)靠抑,相對于其他類型產(chǎn)品的優(yōu)勢在于量九,分布式設(shè)計,組件自包含無第三方依賴颂碧,架構(gòu)比較簡單荠列,易于改造。同時在DCN化载城、多播肌似、request-reply等特性、熔斷诉瓦、限流川队、故障隔離等機制力细、多語言接入支持,DevOps運維治理工具等方面都十分欠缺固额,需要重新設(shè)計開發(fā)眠蚂。
2016年2月至2017年2月,期間主要完成了分布式消息總線的研發(fā)斗躏,并開始進行生產(chǎn)灰度測試逝慧,逐步開始替代集中式的消息總線。2017年3月至2017年10月啄糙,期間主要開始分布式總線替換集中式總線的流量的切換灰度以及完成了消息總線多活的改造笛臣。2019年9月,基于微眾銀行整體開源戰(zhàn)略隧饼,將實踐成果對外開源沈堡,定位為分布式金融級消息總線,項目名為DefiBus燕雁;2020年踱蛀,剝離出EventMesh開源項目,致力于打造一個動態(tài)的云原生事件驅(qū)動架構(gòu)基礎(chǔ)設(shè)施贵白。
EventMesh事件網(wǎng)格
多活架構(gòu)
技術(shù)創(chuàng)新
1)支持同步率拒、異步、多播禁荒、廣播等調(diào)用方式猬膨,系統(tǒng)間調(diào)用不需要指定所在部署區(qū)域,只需指定服務名呛伴,消息就能夠自動進行路由勃痴,解耦了系統(tǒng)間的依賴,同時也解耦了系統(tǒng)和數(shù)據(jù)中心的部署關(guān)系热康,提升了數(shù)據(jù)中心的利用率沛申。
2)消息總線是分布式設(shè)計和部署的、每個組件都分散在不同的數(shù)據(jù)中心姐军,不同的機架铁材,不同的服務器上,任何一個組件都是集群部署奕锌,可以單獨對某個節(jié)點進行在線升級著觉、對某個組件進行在線擴容,對業(yè)務無影響惊暴。
3)消息總線是多中心多活設(shè)計饼丘,在多個數(shù)據(jù)中心都有部署,當其中一個數(shù)據(jù)中心的總線服務全部不可用時辽话,可以自動切換到其他數(shù)據(jù)中心可用的總線服務上去肄鸽,對業(yè)務無影響卫病。
4)由于部署在普通的X86和ARM服務器上,對于經(jīng)常發(fā)生故障的機器典徘,以及網(wǎng)絡中斷等異常情況忽肛,總線能夠自動判斷故障并迅速自動隔離,并在機器和網(wǎng)絡恢復后烂斋,自動恢復總線服務屹逛。
5)總線能夠感知下游系統(tǒng)故障,通過熔斷機制將消息切換到另外可用的服務上去汛骂、對于處理能力下降的系統(tǒng)罕模,總線能夠通過限流機制保護系統(tǒng)不至于崩潰、各系統(tǒng)變更時可獨立進行變更帘瞭,無直接關(guān)聯(lián)影響淑掌,且具備逐臺機器進行灰度發(fā)布的能力。
6)總線設(shè)計支持高并發(fā)蝶念、消息能在毫秒級低延時進行流轉(zhuǎn)抛腕,提升業(yè)務處理能力。
業(yè)務創(chuàng)新
提高了全行業(yè)務連續(xù)性水平
優(yōu)化了跨數(shù)據(jù)中心系統(tǒng)間調(diào)用的機制
提升了系統(tǒng)跨數(shù)據(jù)中心部署的靈活性
提高了服務器利用率媒殉、降低了硬件設(shè)施成本
改造過程整體風險可控担敌,可快速復制
降低了故障機器對于業(yè)務的影響
三產(chǎn)業(yè)價值
該項目加強了基礎(chǔ)架構(gòu)的安全可控能力,提升了同城數(shù)據(jù)中心容災能力廷蓉,進一步提升了業(yè)務連續(xù)性管理水平全封,實現(xiàn)了分布式消息中間件的安全自主可控。采用被廣泛使用和生產(chǎn)驗證的開源技術(shù)組件作為底層實現(xiàn)桃犬,并基于開源組件刹悴,結(jié)合金融場景,定制開發(fā)了很多特有的高可用特性攒暇,解決了很多開源組件沒有解決的問題土匀,并在生產(chǎn)環(huán)境進行了多次故障演練,有效地降低了機器故障對業(yè)務的影響形用,驗證了消息總線的安全可靠性就轧,符合架構(gòu)安全性要求。
分布式消息總線支撐的多數(shù)據(jù)中心多活特性尾序,實現(xiàn)了同城 RPO=0钓丰,同城RTO接近于0,系統(tǒng)在同城任一數(shù)據(jù)中心內(nèi)不可用時每币,能由同城其他數(shù)據(jù)中心接替進行業(yè)務處理,對外繼續(xù)提供服務琢歇,確保系統(tǒng)服務的高可用性兰怠。有效保護客戶的資金和業(yè)務安全梦鉴,使客戶權(quán)益得到進一步的保障。分布式消息總線架構(gòu)是基于分布式架構(gòu)揭保、面向全行所有業(yè)務的架構(gòu)肥橙,項目的成功驗證了分布式消息總線架構(gòu)在銀行業(yè)實施的可行性。
業(yè)界首次創(chuàng)新性提出的EventMesh事件網(wǎng)格中間件秸侣,目前已進入全球最大開源基金會Apache軟件基金會孵化存筏。它可以用于分離應用和中間件層,在事件驅(qū)動型應用的編排場景味榛,SaaS組合式應用的標準接入場景椭坚,事件總線場景,以及多云混合云的聯(lián)合治理場景等等搏色,有著廣泛的應用前景善茎,適合全行業(yè)推廣。
本文來源:開源專委會