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

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

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

關於螞蟻金服科技開放其他的技術產品,你還可以參考閱讀:

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

容器與雲原生技術

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

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

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

「服務網路」能夠解決諸如跨語言、跨技術棧等問題;而聲明式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 —

歡迎留言及個人轉PO,媒體轉載請聯繫授權