本文根據 KubeCon China 2019 同場活動 SOFAStack Cloud Native Workshop 內容整理,文末包含文檔、PPT 地址,歡迎試用和提出建議。
2019 年 6 月 25 日,在 KubeCon China 2019,全球知名開源組織雲原生計算基金會 CNCF 宣佈,螞蟻金服正式成爲 CNCF 黃金會員,螞蟻金服表示將持續加大對開源項目的支持,包括 Kubernetes,Service Mesh,Serverless,安全容器等方向,併發揮本身的力量。git
在本次大會,螞蟻金服也與數百名雲原生愛好者用五個小時搭建了一個雲原生的電商平臺,具體怎麼作?但願本文能提供一些思路。github
過去的十幾年裏,技術發生了翻天覆地的變化,先來簡單回顧下:在二十一世紀初,大部分企業的應用還處於集中式架構。這個階段企業開始作一些信息化的建設工做,典型的一些技術例如集羣部署(Tomcat 集羣、Weblogic 集羣)來保證系統的高可用,以及採購 IOE(IBM,Oracle,EMC)等這些商業化的軟硬件產品,經過更高的配置、更好的性能等方式來抗住業務的增加。數據庫
慢慢的,隨着公司規模的擴大,集中式架構已經不足以再支撐複雜的業務系統,不少企業開始作一些系統拆分的改造,典型的技術例如 SOA 化。當系統拆分後,就再也不須要使用以前昂貴的小型機去部署服務,慢慢的虛擬機的部署方式變成了主流。一樣的,服務化後數據庫和存儲也再也不必須採用商業化軟硬件的解決方案,企業轉爲一些開源的解決方案,例如把 Oracle 換成了 MySQL。後端
系統的拆分雖然能夠帶來不少好處,例如使業務內聚,系統之間鬆耦合,方便快速迭代等。可是隨之帶來的問題也很明顯,例如拆分後系統愈來愈多,系統間的交互也會變得更加複雜,調用鏈路變長可能引發性能問題,分佈式後數據存儲等數據一致性也有很多挑戰,還有服務化後帶來資源分配、隔離等問題。這時候一些虛擬化和容器化的技術開始涌現,典型技術就是 OpenStack 和 Docker,OpenStack 幫助咱們解決了 IaaS 層的建設與管理問題,而 Docker 給了咱們資源隔離的最佳實踐,但這些並無解決掉運維複雜的一些問題。安全
而近幾年,新的雲原生的一些技術產品和理念開始出現,例如 Kubernetes、Service Mesh、Serverless 等,這些能夠解決應用部署、運維複雜的一些實際問題。架構
螞蟻金服從 2007 年開始從集中式架構走向分佈式架構。咱們把過去十多年的技術演進過程當中自主研發的一套金融級分佈式架構沉澱成爲 SOFAStack™(Scalable Open Financial Architecture Stack)。併發
從 2007 年到 2012 年,螞蟻金服完成全部業務系統的模塊化、服務化改造。經過 TCC 模式解決了服務化、數據拆分等帶來的數據一致性的問題,經過註冊中心解決了服務單點的問題。框架
在完成服務化改造後,隨着服務集羣的增大,系統的伸縮性遇到了瓶頸,另外爲了知足金融級的屬性,螞蟻金服對系統可用性、數據一致性提出了更高的要求。螞蟻金服從 2013 年開始摸索出了一套單元化的思想,並基於此,推出了同城雙活、異地多活、彈性調度等能力,保證業務不停機,數據不丟失。less
再以後隨着國內互聯網金融的崛起、螞蟻金服的國際化,螞蟻金服也將本身的能力和技術開放出來,在金融雲上以雲產品的形式存在,開發者能夠基於此快速搭建金融級能力的分佈式系統,同時咱們也將內部的一些實踐開源出來。運維
從 2017 年開始,咱們注意到雲原生的理念正在快速發展,面對雲原生帶來的機會和改變,螞蟻金服的策略是積極擁抱雲原生。由於雲原生帶來的思想和理念恰好能夠用來解決螞蟻金服內部遇到的一些場景和問題。
例如 Service Mesh 能夠解決中間件等基礎能力下層的問題,Serverless 能夠解決研發效能的問題,可讓業務開發更專一於業務。這些新的技術和理念螞蟻金服都會在內部探索並在生產落地,最近咱們在深圳 GIAC 首次分享了大規模落地的實踐總結。同時,咱們也會將這些雲原生落地實踐開源出來,並和社區一塊兒共同推動和建設金融級的雲原生標準。
SOFAStack 開源版本:
2018 年 4 月 19 日正式宣佈逐步開源 SOFAStack,開源的策略是 Open Core,也就是把核心的接口和實現都開源出來,內部保留老的兼容代碼。到如今爲止差很少 1 年 2 個月的時間,已經開源了十幾個項目,累計超過 25,600 Star,120 多位貢獻者, 以及 30 多家生產用戶,近期也認證了兩位社區 Committer,這裏想再次感謝開發者和企業的信任和承認,咱們將持續優化和擴大開源版圖。
咱們看下這張圖,這裏能夠看到 SOFAStack 體系下開源了不少微服務相關的技術組件,例如 SOFABoot、SOFARPC 等,咱們也和社區其它優秀的開源產品進行了兼容或者集成,利用這些組件能夠快速的搭建出金融級分佈式架構系統。開源的源碼能夠在這張圖下面的 Github 地址上找到。本次的 Workshop 咱們就會利用到開源的一些技術組件。
SOFAStack 雲產品:
同時,咱們也把 SOFAStack 的能力集成到了雲產品上,以下圖:
上圖是雲上 SOFAStack 的架構圖,咱們能夠看到 SOFAStack 商業化對外輸出的是完整的解決方案。支撐解決方案的就是本次要體驗的分佈式中間件和雲應用引擎等等能力。除此以外還有完善的研發效能平臺服務以及技術風險防控平臺。關於這部份內容,在本次下午場會有更詳細的介紹和體驗。
剛聊了這麼多,你們是否是想動手試試了呢?本次 Demo 將帶領你們綜合利用開源版本的 SOFAStack 和雲上產品,五小時實現一個在線電商平臺。
下面簡單介紹下本次 Workshop 的內容,以下圖:
上午
下午
這是提到的是在線書店的系統架構圖,最上面是部署好的一些基礎設施,包括註冊中心 SOFARegistry,服務管控臺 SOFADashboard,監控度量 SOFALookout 等,咱們已經提早準備好了這部份內容。
下面就是業務的內容。爲了方便,咱們再也不作先後端分類部署,本次你們只須要操做 2 個應用:左邊是網頁系統和庫存系統,提供庫存操做服務,右邊是帳務系統,提供餘額相關服務。當用戶的購買請求進來時,庫存系統須要經過 RPC 遠程調用到帳務系統。
另外庫存服務和餘額服務分別對應的是獨立的數據庫,這個後面會用分佈式事務框架 Seata 去解決分佈式下數據一致性的問題。
本期 Workshop 用到的全部文檔目前都在 SOFAStack 官網上,你們訪問後看到導航欄有一個【指南】,便可根據文檔進行操做。
本期全部相關 PPT 下載地址在對應【指南】底部。
SOFAStack 官網:https://www.sofastack.tech
本次咱們準備了《將來架構》簽名書做爲禮品,很是感謝四位做者到現場支持。
別忘了 Star 咱們:
https://github.com/sofastack
但願和咱們一塊兒玩的開心