蚂蚁金服金融级容器引擎实践之路
小螞蟻說(shuō):
在金融級(jí)分布式架構(gòu)中使用容器,許多企業(yè)的開(kāi)發(fā)者都面臨許多挑戰(zhàn)。在2018年ATEC螞蟻金服技術(shù)探索大會(huì)上,螞蟻金服高級(jí)技術(shù)專家盛延敏在演講中分析了容器與云原生技術(shù)的本質(zhì),為容器在分布式架構(gòu)上的使用帶來(lái)了實(shí)用高效的解決方案。
關(guān)于螞蟻金服科技開(kāi)放其他的技術(shù)產(chǎn)品,你還可以參考閱讀:
《獨(dú)家 | 螞蟻金服TRaaS技術(shù)風(fēng)險(xiǎn)防控平臺(tái)解密》;
《深度|螞蟻金服分布式金融核心套件:金融核心系統(tǒng)變革助推器》;
《2.0 解析系列 | 一文詳解新一代OceanBase云平臺(tái)》……?
關(guān)注“螞蟻金服科技”,了解螞蟻金服更多前沿暖科技!
容器與云原生技術(shù)
云原生技術(shù)由來(lái)已久,它包含五部分基礎(chǔ)技術(shù),包括容器(Containers)、服務(wù)網(wǎng)絡(luò)(Service Meshes)、聲明式API(Declarative APIs)、不可變基礎(chǔ)設(shè)施(Immutable Infrastructure)、微服務(wù)(Microservices),以及公共云、混合云、專有云三種能力。
容器(特別是docker)、微服務(wù)大家都比較熟悉,先來(lái)簡(jiǎn)單解釋一下大家可能比較陌生的服務(wù)網(wǎng)絡(luò)、聲明式API和不可變基礎(chǔ)設(shè)施的作用:
“服務(wù)網(wǎng)絡(luò)”能夠解決諸如跨語(yǔ)言、跨技術(shù)棧等問(wèn)題;而聲明式API則是目前CNCF等社區(qū)非常推崇的一種理念,比如k8s里面的對(duì)象采用了api、kind、version等方式,最終描述了一種期望達(dá)到的狀態(tài);至于不可變基礎(chǔ)設(shè)施?這個(gè)概念比較難理解,我們知道k8s里面的pod是一個(gè)豌豆夾,里面可以放很多容器,每當(dāng)聲明(declare)新spec的時(shí)候,系統(tǒng)就會(huì)將pod銷毀,產(chǎn)生新的pod對(duì)象,這個(gè)概念它比較像我們購(gòu)買iphone,iphone是一個(gè)封閉的體系,用戶想換的時(shí)候就需要買一個(gè)新的,不可變基礎(chǔ)設(shè)施不意味著比較穩(wěn)定。
回顧一下云計(jì)算的發(fā)展(如上圖所示),開(kāi)始的時(shí)候大家關(guān)注虛擬化,在虛擬機(jī)中安裝軟件和中間件,讓應(yīng)用跑起來(lái)。隨著技術(shù)的進(jìn)步,大家開(kāi)始思考能不能將基礎(chǔ)架構(gòu)屏蔽,于是創(chuàng)造出以app為中心的理念,使用大規(guī)模發(fā)布的能力、自動(dòng)化的運(yùn)維,將中間件和應(yīng)用代碼耦合在一起部署在一個(gè)平臺(tái)上,上移至PaaS層。
技術(shù)再進(jìn)步,大家又想到了CaaS,通過(guò)docker的鏡像、云原生的統(tǒng)一抽象和標(biāo)準(zhǔn),讓應(yīng)用和基礎(chǔ)組件包含在一起,以鏡像的方式發(fā)布應(yīng)用,大家的視角轉(zhuǎn)移到容器、微服務(wù)體系的融合,“云原生”的時(shí)代就此來(lái)臨。
金融級(jí)分布式架構(gòu)使用容器的挑戰(zhàn)
那么在金融級(jí)分布式架構(gòu)下使用容器,我們會(huì)面臨什么樣的挑戰(zhàn)?主要有三方面:
第一,已有的基礎(chǔ)設(shè)施,包括資產(chǎn)管理、監(jiān)控體系、運(yùn)維體系,如何能平滑過(guò)渡?
第二,微服務(wù)架構(gòu),包括服務(wù)發(fā)現(xiàn)與尋址、跨語(yǔ)言支持、服務(wù)治理如何落地?
第三,如何讓專有云、公共云及混合云具備彈性伸縮能力?
螞蟻金服的解決方案叫做“CAFE”(Cloud Application Fabric Engine),它是理念以及產(chǎn)品集合,包括“兩個(gè)標(biāo)準(zhǔn)”,即云 Provider標(biāo)準(zhǔn)、Open Service Broker API標(biāo)準(zhǔn);“三個(gè)平臺(tái)”,即“應(yīng)用與容器平臺(tái)”(主要關(guān)注容器和應(yīng)用生命周期的管理)、“監(jiān)控分析平臺(tái)”(主要關(guān)注logging、trace、metrics以及鏈路、事件等平臺(tái))及“容災(zāi)應(yīng)災(zāi)平臺(tái)”(‘三地五中心’就是由它支持);“三個(gè)形態(tài)”包括專有云、公共云及混合云;其中構(gòu)建了“N個(gè)解決方案”,包括DevOps、容器以及分布式架構(gòu)的解決方案等。
上文提到的三個(gè)問(wèn)題究竟該如何應(yīng)對(duì)呢?螞蟻金服提供了從傳統(tǒng)到云原生的橋梁,幫助用戶平滑地過(guò)渡基礎(chǔ)設(shè)施;SOFAMesh原生的支持,幫助用戶快速落地微服務(wù)2.0架構(gòu);混合云的架構(gòu),實(shí)現(xiàn)彈性能力。
三個(gè)應(yīng)對(duì)之道
1. 從傳統(tǒng)到云原生的橋梁
從傳統(tǒng)到云原生,大家有很多普遍存在的困惑:比如習(xí)慣了VM(虛擬機(jī))體系該怎么辦?云原生適合我么?能否漸進(jìn)上云原生?(有些任務(wù)用傳統(tǒng)方式做,有些用云原生,兩邊是不是能互聯(lián)互通?)
為了解決傳統(tǒng)運(yùn)維體驗(yàn)的問(wèn)題,螞蟻金服提供一種方式,不將容器視為單體,而是輕量化的虛機(jī),讓用戶可以登錄、關(guān)機(jī)、開(kāi)機(jī)、重啟,這種方式與操作模式無(wú)關(guān),用戶可以通過(guò)鏡像化發(fā)布,也可以登錄到機(jī)器中重新做service的啟停。
熟悉容器技術(shù)的人都知道,如果容器本身的內(nèi)核不支持,整個(gè)容器資源都會(huì)顯示宿主機(jī)的資源,螞蟻有強(qiáng)大的團(tuán)隊(duì),可以修復(fù)這樣的內(nèi)核問(wèn)題,另外可以支持單容器操作,讓發(fā)布前后容器IP、ID保持不變,將PV和PVC綁定,創(chuàng)造兼容傳統(tǒng)運(yùn)維的用戶體驗(yàn)。做到這一點(diǎn),需要很多技術(shù)積累。
基于虛擬機(jī)的生命周期管理,我們先來(lái)復(fù)習(xí)一下原生pod的生命周期管理:一個(gè)pod的創(chuàng)建指令被接受了以后,會(huì)進(jìn)入pending(暫停)的狀態(tài),這意味著這個(gè)容器、這個(gè)pod沒(méi)調(diào)度,或者還沒(méi)有生成,直到任務(wù)被create(生成)出來(lái)后才會(huì)進(jìn)入running(運(yùn)行)狀態(tài)。如果所有的容器退出了,流程就會(huì)進(jìn)入succeed(成功),中間running和failed可能會(huì)反復(fù)。
然而,這個(gè)生命周期不能夠完全滿足企業(yè)級(jí)需求,因此我們通過(guò)升級(jí)和定制,定義了如下的CAFE Pod生命周期,通過(guò)它我們可以同時(shí)支持虛擬機(jī)發(fā)布和鏡像發(fā)布;分組、灰度和無(wú)損發(fā)布;版本管理,變更自愈(很多開(kāi)發(fā)者社區(qū)的東西并能拿來(lái)即可用,比如我們打造的底盤夯實(shí)的能力,這一能力能夠在pod出現(xiàn)問(wèn)題時(shí)及時(shí)熔斷兜底);原地升級(jí)和重建升級(jí);通過(guò)分布式架構(gòu)體系實(shí)現(xiàn)同城雙活、異地多活;通過(guò)技術(shù)風(fēng)險(xiǎn)體系實(shí)現(xiàn)etcd在線備份,宕機(jī)遷移,高可靠,可運(yùn)維,可監(jiān)控,可交付等。這一架構(gòu)通過(guò)Upgrading支持虛擬機(jī)通過(guò)鏡像原地替換的方式發(fā)布,本地的存儲(chǔ)都可以保留下來(lái),資源還可以放大,比如2G變4G。
我們還設(shè)計(jì)了全新的負(fù)載Cafe Application,在主機(jī)故障或者停機(jī)時(shí)自動(dòng)在新機(jī)器上拉起容器提供服務(wù);在升級(jí)后(非upgrade容器方式),新pod和原pod的Ip不變;支持按分組配置升級(jí)部分容器,并且長(zhǎng)時(shí)間可以保持該狀態(tài);支持原地升級(jí)(inplace)和重建升級(jí)(replace);提供類似statefulset的podname,每個(gè)容器的名字都是唯一的;每個(gè)容器都有單獨(dú)的pv,pvc,類似statefulset;在升級(jí)前可以加入一些控制,比如摘除流量,注銷注冊(cè)中心等;并支持回滾到之前版本。
此外,云原生方式還要求底層具有更強(qiáng)大的日志能力,我們要把所有在系統(tǒng)里面產(chǎn)生的pod的日志進(jìn)行收集、存儲(chǔ)、投遞。如下是整個(gè)日志搜集能力的架構(gòu)圖,這一架構(gòu)復(fù)用了螞蟻中間件團(tuán)隊(duì)積累的強(qiáng)大的技術(shù)實(shí)力,包含了兩大核心中間件。
第一是有流式投遞能力的AntQ。還有就是我們基于Elastic search做了深度改造的ZSearch,提供整個(gè)日志的存儲(chǔ)和檢索的能力。每一臺(tái)機(jī)器上會(huì)有l(wèi)ogAgent,它會(huì)和我們的LogService通信,接受dockerD來(lái)的一些event(事件),然后會(huì)和docker graph交互,拿到docker實(shí)例的文件句柄,源源不斷地把這些文件流輸送給AntQ,AntQ拿到以后,我們可以通過(guò)幾種路徑來(lái)完成整個(gè)日志的輸送,對(duì)于最實(shí)時(shí)的任務(wù)可以直接通過(guò)AntQ來(lái)投遞到實(shí)時(shí)的計(jì)算引擎;對(duì)于準(zhǔn)實(shí)時(shí)的日志查詢或者鏈路監(jiān)控的需求,我們建立index(索引),讓上層的鏈路、監(jiān)控能拿到這些數(shù)據(jù),做一些鏈路分析和日志查詢。對(duì)于非實(shí)時(shí)的需求,我們可以通過(guò)投遞到hdfs完成離線數(shù)據(jù)報(bào)表的分析和制作。
2. SOFAMesh原生支持
前面一部分講到如何從傳統(tǒng)的應(yīng)用遷移到所謂的云原生容器的方式,對(duì)任何一個(gè)公司來(lái)說(shuō)如何使用容器技術(shù)落地微服務(wù)架構(gòu),并且隨著產(chǎn)品的不斷迭代、業(yè)務(wù)需求越來(lái)越多,微服務(wù)體系是否可以支持上,支持好,這么大的技術(shù)成本對(duì)于中小公司來(lái)說(shuō)是難以為繼的。
有沒(méi)有更好的辦法呢?答案就是SOFAMesh,即SOFAStack的中間件,它可以提供全新的微服務(wù)2.0的能力。通過(guò)業(yè)務(wù)聚焦,支持多語(yǔ)言、多技術(shù)棧,通過(guò)CAFE平臺(tái)可以讓業(yè)務(wù)迅速獲得這種能力。
上圖是我們?cè)赟OFAMesh上的部署架構(gòu),其控制層面叫SOFAMesh Pilot,數(shù)據(jù)層面叫做MOSN模塊,說(shuō)白了它就是一個(gè)智能網(wǎng)關(guān),所有的信息都通過(guò)APP發(fā)給MOSN模塊,做網(wǎng)絡(luò)傳輸;MOSN模塊同時(shí)不斷地把metrics, logging等投遞到到日志,監(jiān)控和鏈路分析基礎(chǔ)設(shè)施,以便用戶全方位地掌控微服務(wù)架構(gòu)的狀況。
這套體系加上螞蟻金服沉浸多年的中間件的能力,以及數(shù)據(jù)中心,在金融場(chǎng)景中得到了大規(guī)模驗(yàn)證。
使用CAFE去打開(kāi)SOFAMesh有什么好處?最大的好處就是開(kāi)箱即用。而且它提升了技術(shù)競(jìng)爭(zhēng)力,整合PaaS能力,統(tǒng)一應(yīng)用管控。舉個(gè)簡(jiǎn)單例子,如果有一天你的老板說(shuō),可不可以對(duì)iOS的移動(dòng)流量來(lái)一個(gè)5%的線上灰度,現(xiàn)在的微服務(wù)架構(gòu)體系里面是可以做到的,但是侵入性非常大,而SOFAMesh框架可以定規(guī)則,由Pilot下發(fā),上面的MOSN模塊很容易實(shí)現(xiàn)。由此可見(jiàn),SOFAMesh爆發(fā)的能量是非常巨大的。SOFAMesh和CAFE是實(shí)現(xiàn)微服務(wù)架構(gòu)的絕佳拍檔。
3. 混合云架構(gòu)支持
最后說(shuō)一下彈性伸縮混合云。有些公司想上專有云,琢磨著能不能在公共云里面做一部分開(kāi)發(fā)測(cè)試,然后再上專有云,而專有云本身資源有限,在資源有限的情況下能不能自由遷移,彈性伸縮,節(jié)省成本,這都是很多廠商看重的。螞蟻金服近些年在這方面做了很多努力。
螞蟻金服支持混合云架構(gòu),能夠把應(yīng)用的數(shù)據(jù)、鏡像等在多朵云之間同步,在多個(gè)云上迅速拉起應(yīng)用,包括任務(wù)調(diào)度等,在專有云、公共云之間自由分配工作負(fù)載,達(dá)到彈性伸縮的能力。
上圖是我們基于CAFE容器引擎驗(yàn)證的全棧產(chǎn)品輸出能力,我們的全棧產(chǎn)品的品牌叫做Antstack,包括了金融企業(yè)需要的所有關(guān)鍵組件,大家熟知的OceanBase容器化也在這個(gè)平臺(tái)里面。Antstack底層通過(guò)資源調(diào)度提供計(jì)算存儲(chǔ)網(wǎng)絡(luò),再上層提供產(chǎn)品組件,開(kāi)發(fā)平臺(tái)等等,這些產(chǎn)品可以滿足不同金融場(chǎng)景,包括銀行保險(xiǎn)場(chǎng)景的解決方案。
最后三句話總結(jié)一下,CAFE為傳統(tǒng)運(yùn)維平滑遷移到云原生提供了很好的橋梁,為基于SOFAStack、SOFAMesh的微服務(wù)落地提供了絕佳的大規(guī)模運(yùn)維的平臺(tái),為整個(gè)企業(yè)選擇公有云、專有云、混合云架構(gòu)提供了更好靈活性和敏捷性,螞蟻金服還將繼續(xù)將運(yùn)維部署做穩(wěn)做精,就像精心制作一杯醇正的咖啡(Cafe同音),為大家?guī)?lái)更好的體驗(yàn)。
?
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的蚂蚁金服金融级容器引擎实践之路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: flutter在2019年会有怎样的表现
- 下一篇: PyTorch可视化理解卷积神经网络