本文根據 KubeCon China 2019 同場活動 SOFAStack Cloud Native Workshop 內容整理,文末包含檔案、PPT 地址,歡迎試用和提出建議。
2019 年 6 月 25 日,在 KubeCon China 2019,全球知名開源組織雲原生計算基金會 CNCF 宣佈,螞蟻金服正式成為 CNCF 黃金會員,螞蟻金服表示將持續加大對開源專案的支援,包括 Kubernetes,Service Mesh,Serverless,安全容器等方向,併發揮自己的力量。
在本次大會,螞蟻金服也與數百名雲原生愛好者用五個小時搭建了一個雲原生的電商平臺,具體怎麼做?希望本文能提供一些思路。
KubeCon SOFAStack Cloud Native Workshop 現場圖
| 近二十年技術發展:從集中式架構到雲原生架構
過去的十幾年裡,技術發生了翻天覆地的變化,先來簡單回顧下:在二十一世紀初,大部分企業的應用還處於集中式架構。這個階段企業開始做一些資訊化的建設工作,典型的一些技術例如叢集部署(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 年開始摸索出了一套單元化的思想,並基於此,推出了同城雙活、異地多活、彈性排程等能力,保證業務不停機,資料不丟失。
再之後隨著國內網際網路金融的崛起、螞蟻金服的國際化,螞蟻金服也將自己的能力和技術開放出來,在金融雲上以雲產品的形式存在,開發者可以基於此快速搭建金融級能力的分散式系統,同時我們也將內部的一些實踐開源出來。
從 2017 年開始,我們註意到雲原生的理念正在快速發展,面對雲原生帶來的機會和改變,螞蟻金服的策略是積極擁抱雲原生。 因為雲原生帶來的思想和理念剛好可以用來解決螞蟻金服內部遇到的一些場景和問題。
例如 Service Mesh 可以解決中介軟體等基礎能力下層的問題,Serverless 可以解決研發效能的問題,可以讓業務開發更專註於業務。這些新的技術和理念螞蟻金服都會在內部探索併在生產落地,最近我們在深圳 GIAC 首次分享了大規模落地的實踐總結,螞蟻金服 Service Mesh 落地實踐與挑戰 | 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 商業化對外輸出的是完整的解決方案。支撐解決方案的就是本次要體驗的分散式中介軟體和雲應用引擎等等能力。除此之外還有完善的研發效能平臺服務以及技術風險防控平臺。關於這部分內容,在本次下午場會有更詳細的介紹和體驗。
| Let’s get started!
剛聊了這麼多,大家是不是想動手試試了呢?本次 Demo 將帶領大家綜合利用開源版本的 SOFAStack 和雲上產品,五小時實現一個線上電商平臺。
下麵簡單介紹下本次 Workshop 的內容,如下圖:
上午
- 構建基礎電商平臺(書店) ,並改造為微服務架構;
- 基於 SOFABoot 動態模組能力實時的電商平臺(書店)增加智慧推薦的能力;
- 用分散式事務 Seata 來解決微服務拆分後的分散式事務的問題,保證購買和餘額的資料一致性。
下午
- 透過 Serverless 快速上雲,利用 SOFA SAS 釋出書店到雲環境上,根據流量自動擴縮容;
- 透過 Service Mesh 的方式來實現精度灰度和流控的能力。
這是提到的是線上書店的系統架構圖,最上面是部署好的一些基礎設施,包括註冊中心 SOFARegistry,服務管控臺 SOFADashboard,監控度量 SOFALookout 等,我們已經提前準備好了這部分內容。
下麵就是業務的內容。為了方便,我們不再做前後端分類部署,本次大家只需要操作 2 個應用:左邊是網頁系統和庫存系統,提供庫存操作服務,右邊是賬務系統,提供餘額相關服務。當使用者的購買請求進來時,庫存系統需要透過 RPC 遠端呼叫到賬務系統。
另外庫存服務和餘額服務分別對應的是獨立的資料庫,這個後面會用分散式事務框架 Seata 去解決分散式下資料一致性的問題。
| SOFAStack Cloud Native Workshop 檔案地址
本期 Workshop 用到的所有檔案目前都在 SOFAStack 官網上,大家訪問後看到導航欄有一個【指南】,即可根據檔案進行操作。
本期所有相關 PPT 下載地址在對應【指南】底部。
SOFAStack 官網:https://www.sofastack.tech
| 特別鳴謝
本次我們準備了《未來架構》簽名書作為禮品,非常感謝四位作者到現場支援。
別忘了 Star 我們:
https://github.com/sofastack
希望和我們一起玩的開心
朋友會在“發現-看一看”看到你“在看”的內容