螞蟻金服金融級容器引擎實踐之路

摘要: 螞蟻金服的解決方案叫作「CAFE」(Cloud Application Fabric Engine)。docker

小螞蟻說:api

在金融級分佈式架構中使用容器,許多企業的開發者都面臨許多挑戰。在2018年ATEC螞蟻金服技術探索大會上,螞蟻金服高級技術專家盛延敏在演講中分析了容器與雲原生技術的本質,爲容器在分佈式架構上的使用帶來了實用高效的解決方案。網絡

關於螞蟻金服科技開放其餘的技術產品,你還能夠參考閱讀:架構

獨家 | 螞蟻金服TRaaS技術風險防控平臺解密》;app

深度|螞蟻金服分佈式金融核心套件:金融核心系統變革助推器》;框架

2.0 解析系列 | 一文詳解新一代OceanBase雲平臺》…… 運維

容器與雲原生技術iphone

雲原生技術由來已久,它包含五部分基礎技術,包括容器(Containers)、服務網絡(Service Meshes)、聲明式API(Declarative APIs)、不可變基礎設施(Immutable Infrastructure)、微服務(Microservices),以及公共雲、混合雲、專有云三種能力分佈式

容器(特別是docker)、微服務你們都比較熟悉,先來簡單解釋一下你們可能比較陌生的服務網絡、聲明式API和不可變基礎設施的做用:ide

「服務網絡」可以解決諸如跨語言、跨技術棧等問題;而聲明式API則是目前CNCF等社區很是推崇的一種理念,好比k8s裏面的對象採用了api、kind、version等方式,最終描述了一種指望達到的狀態;至於不可變基礎設施?這個概念比較難理解,咱們知道k8s裏面的pod是一個豌豆夾,裏面能夠放不少容器,每當聲明(declare)新spec的時候,系統就會將pod銷燬,產生新的pod對象,這個概念它比較像咱們購買iphone,iphone是一個封閉的體系,用戶想換的時候就須要買一個新的,不可變基礎設施不意味着比較穩定。

回顧一下雲計算的發展(如上圖所示),開始的時候你們關注虛擬化,在虛擬機中安裝軟件和中間件,讓應用跑起來。隨着技術的進步,你們開始思考能不能將基礎架構屏蔽,因而創造出以app爲中心的理念,使用大規模發佈的能力、自動化的運維,將中間件和應用代碼耦合在一塊兒部署在一個平臺上,上移至PaaS層。

技術再進步,你們又想到了CaaS,經過docker的鏡像、雲原生的統一抽象和標準,讓應用和基礎組件包含在一塊兒,以鏡像的方式發佈應用,你們的視角轉移到容器、微服務體系的融合,「雲原生」的時代就此來臨。

金融級分佈式架構使用容器的挑戰

那麼在金融級分佈式架構下使用容器,咱們會面臨什麼樣的挑戰?主要有三方面:

第一,已有的基礎設施,包括資產管理、監控體系、運維體系,如何能平滑過渡?

第二,微服務架構,包括服務發現與尋址、跨語言支持、服務治理如何落地?

第三,如何讓專有云、公共雲及混合雲具有彈性伸縮能力?

螞蟻金服的解決方案叫作「CAFE」(Cloud Application Fabric Engine),它是理念以及產品集合,包括「兩個標準」,即雲 Provider標準、Open Service Broker API標準;「三個平臺」,即「應用與容器平臺」(主要關注容器和應用生命週期的管理)、「監控分析平臺」(主要關注logging、trace、metrics以及鏈路、事件等平臺)及「容災應災平臺」(‘三地五中心’就是由它支持);「三個形態」包括專有云、公共雲及混合雲;其中構建了「N個解決方案」,包括DevOps、容器以及分佈式架構的解決方案等。

上文提到的三個問題究竟該如何應對呢?螞蟻金服提供了從傳統到雲原生的橋樑,幫助用戶平滑地過渡基礎設施;SOFAMesh原生的支持,幫助用戶快速落地微服務2.0架構;混合雲的架構,實現彈性能力。

三個應對之道

1. 從傳統到雲原生的橋樑

從傳統到雲原生,你們有不少廣泛存在的困惑:好比習慣了VM(虛擬機)體系該怎麼辦?雲原生適合我麼?可否漸進上雲原生?(有些任務用傳統方式作,有些用雲原生,兩邊是否是能互聯互通?)

爲了解決傳統運維體驗的問題,螞蟻金服提供一種方式,不將容器視爲單體,而是輕量化的虛機,讓用戶能夠登陸、關機、開機、重啓,這種方式與操做模式無關,用戶能夠經過鏡像化發佈,也能夠登陸到機器中從新作service的啓停。

熟悉容器技術的人都知道,若是容器自己的內核不支持,整個容器資源都會顯示宿主機的資源,螞蟻有強大的團隊,能夠修復這樣的內核問題,另外能夠支持單容器操做,讓發佈先後容器IP、ID保持不變,將PV和PVC綁定,創造兼容傳統運維的用戶體驗。作到這一點,須要不少技術積累。

基於虛擬機的生命週期管理,咱們先來複習一下原生pod的生命週期管理:一個pod的建立指令被接受了之後,會進入pending(暫停)的狀態,這意味着這個容器、這個pod沒調度,或者尚未生成,直到任務被create(生成)出來後纔會進入running(運行)狀態。若是全部的容器退出了,流程就會進入succeed(成功),中間running和failed可能會反覆。

Native Pod 生命週期

然而,這個生命週期不可以徹底知足企業級需求,所以咱們經過升級和定製,定義了以下的CAFE Pod生命週期,經過它咱們能夠同時支持虛擬機發布和鏡像發佈;分組、灰度和無損發佈;版本管理,變動自愈(不少開發者社區的東西並能拿來便可用,好比咱們打造的底盤夯實的能力,這一能力可以在pod出現問題時及時熔斷兜底);原地升級和重建升級;經過分佈式架構體系實現同城雙活、異地多活;經過技術風險體系實現etcd在線備份,宕機遷移,高可靠,可運維,可監控,可交付等。這一架構經過Upgrading支持虛擬機經過鏡像原地替換的方式發佈,本地的存儲均可以保留下來,資源還能夠放大,好比2G變4G。

CAFE Pod 生命週期

咱們還設計了全新的負載Cafe Application,在主機故障或者停機時自動在新機器上拉起容器提供服務;在升級後(非upgrade容器方式),新pod和原pod的Ip不變;支持按分組配置升級部分容器,而且長時間能夠保持該狀態;支持原地升級(inplace)和重建升級(replace);提供相似statefulset的podname,每一個容器的名字都是惟一的;每一個容器都有單獨的pv,pvc,相似statefulset;在升級前能夠加入一些控制,好比摘除流量,註銷註冊中心等;並支持回滾到以前版本。

此外,雲原生方式還要求底層具備更強大的日誌能力,咱們要把全部在系統裏面產生的pod的日誌進行收集、存儲、投遞。以下是整個日誌蒐集能力的架構圖,這一架構複用了螞蟻中間件團隊積累的強大的技術實力,包含了兩大核心中間件。

第一是有流式投遞能力的AntQ。還有就是咱們基於Elastic search作了深度改造的ZSearch,提供整個日誌的存儲和檢索的能力。每一臺機器上會有logAgent,它會和咱們的LogService通訊,接受dockerD來的一些event(事件),而後會和docker graph交互,拿到docker實例的文件句柄,源源不斷地把這些文件流輸送給AntQ,AntQ拿到之後,咱們能夠經過幾種路徑來完成整個日誌的輸送,對於最實時的任務能夠直接經過AntQ來投遞到實時的計算引擎;對於準實時的日誌查詢或者鏈路監控的需求,咱們創建index(索引),讓上層的鏈路、監控能拿到這些數據,作一些鏈路分析和日誌查詢。對於非實時的需求,咱們能夠經過投遞到hdfs完成離線數據報表的分析和製做。

2. SOFAMesh原生支持

前面一部分講到如何從傳統的應用遷移到所謂的雲原生容器的方式,對任何一個公司來講如何使用容器技術落地微服務架構,而且隨着產品的不斷迭代、業務需求愈來愈多,微服務體系是否能夠支持上,支持好,這麼大的技術成本對於中小公司來講是難覺得繼的。

有沒有更好的辦法呢?答案就是SOFAMesh,即SOFAStack的中間件,它能夠提供全新的微服務2.0的能力。經過業務聚焦,支持多語言、多技術棧,經過CAFE平臺可讓業務迅速得到這種能力。

上圖是咱們在SOFAMesh上的部署架構,其控制層面叫SOFAMesh Pilot,數據層面叫作MOSN模塊,說白了它就是一個智能網關,全部的信息都經過APP發給MOSN模塊,作網絡傳輸;MOSN模塊同時不斷地把metrics, logging等投遞到到日誌,監控和鏈路分析基礎設施,以便用戶全方位地掌控微服務架構的情況。

這套體系加上螞蟻金服沉浸多年的中間件的能力,以及數據中心,在金融場景中獲得了大規模驗證。

使用CAFE去打開SOFAMesh有什麼好處?最大的好處就是開箱即用。並且它提高了技術競爭力,整合PaaS能力,統一應用管控。舉個簡單例子,若是有一天你的老闆說,可不能夠對iOS的移動流量來一個5%的線上灰度,如今的微服務架構體系裏面是能夠作到的,可是侵入性很是大,而SOFAMesh框架能夠定規則,由Pilot下發,上面的MOSN模塊很容易實現。因而可知,SOFAMesh爆發的能量是很是巨大的。SOFAMesh和CAFE是實現微服務架構的絕佳拍檔。

3. 混合雲架構支持

最後說一下彈性伸縮混合雲。有些公司想上專有云,琢磨着能不能在公共雲裏面作一部分開發測試,而後再上專有云,而專有云自己資源有限,在資源有限的狀況下能不能自由遷移,彈性伸縮,節省成本,這都是不少廠商看重的。螞蟻金服近些年在這方面作了不少努力。

螞蟻金服支持混合雲架構,可以把應用的數據、鏡像等在多朵雲之間同步,在多個雲上迅速拉起應用,包括任務調度等,在專有云、公共雲之間自由分配工做負載,達到彈性伸縮的能力。

上圖是咱們基於CAFE容器引擎驗證的全棧產品輸出能力,咱們的全棧產品的品牌叫作Antstack,包括了金融企業須要的全部關鍵組件,你們熟知的OceanBase容器化也在這個平臺裏面。Antstack底層經過資源調度提供計算存儲網絡,再上層提供產品組件,開發平臺等等,這些產品能夠知足不一樣金融場景,包括銀行保險場景的解決方案。

最後三句話總結一下,CAFE爲傳統運維平滑遷移到雲原生提供了很好的橋樑,爲基於SOFAStack、SOFAMesh的微服務落地提供了絕佳的大規模運維的平臺,爲整個企業選擇公有云、專有云、混合雲架構提供了更好靈活性和敏捷性,螞蟻金服還將繼續將運維部署作穩作精,就像精心製做一杯醇正的咖啡(Cafe同音),爲你們帶來更好的體驗。

— END —

原文連接

相關文章
相關標籤/搜索