簡介
????Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具,例如配置管理,服務發(fā)現(xiàn),斷路器,智能路由,微代理,控制總線等操作;使用Spring Cloud開發(fā)人員可以快速地支持實現(xiàn)這些模式的服務和應用程序。它們將在任何分布式環(huán)境中運行良好;在Java開發(fā)者中具有廣泛的影響力。
????Spring Cloud專注于提供良好的開箱即用經驗的典型用例和可擴展性機制覆蓋;基于Spring Boot對大型項目開發(fā)難度的簡化,對開發(fā)微服務所需的組件進行了簡單高效的封裝,Spring Cloud已成為Java領域開發(fā)微服務的實際標準。
考慮到用戶會把原有的虛擬機部署的應用遷移至像容器這樣更為原生的技術中會遭遇各種難題,本文將介紹將Spring Cloud云原生遷移到阿里云的解決方案,供開發(fā)者參考或使用。
架構
資源依賴架構圖

架構效果圖

- 注冊發(fā)現(xiàn)中心Eureka為軟件實現(xiàn),需要在配置文件里配置所有Eureka server信息,Eureka server間進行信息同步。因此,架構方案選擇在每個可用區(qū)創(chuàng)建獨立的ECS部署Eureka server,同時使用獨立的SLB以固定每個Eureka server的訪問地址,及獨立的ESS以保證每個可用區(qū)內Eureka server的正常工作。
- Gateway是微服務架構中另一個重要組件。Gateway本身為無狀態(tài)服務,有了Eureka注冊發(fā)現(xiàn)中心的保障,每個Gateway server都可以自動發(fā)現(xiàn)需要調用的服務。在架構方案中,使用一個統(tǒng)一的SLB,以暴露對外服務的URL;同時使用一個ESS保證Gateway的高可用及可擴展性。實際項目中,使用Spring Cloud 中的Zuul/Gateway可作為示例Gateway組件。
- 使用阿里云Kubernetes托管版部署實際業(yè)務的應用,可實現(xiàn)業(yè)務負載的快速擴展、靈活調度,同時降低Kubernetes群集的運維難度。
- OSS和CR(容器鏡像服務)作為應用部署包以及Docker鏡像的倉庫,可方便地對接微服務架構中CI/CD各種不同方案。
- 對于系統(tǒng)中各種公共變量,使用OSS中的參數(shù)倉庫進行存儲。可實現(xiàn)公共變量的動態(tài)調整,和應用部署時進行動態(tài)注入。
優(yōu)勢
Spring Cloud的Eureka、Gateway等微服務基礎設施需要長久地運行,并且獨占單個計算資源,保障服務的高可靠性。架構中使用ECS部署服務,而具體業(yè)務功能模塊選擇容器話技術;使用彈性伸縮服務管理Eureka、Gateway兩類服務。
- 使用彈性伸縮可以根據業(yè)務需求和策略設置伸縮規(guī)則,以保證計算能力和節(jié)約成本;
- 服務器ECS的啟動時間為分鐘級,持續(xù)運行時間為數(shù)周至數(shù)月;
- 容器化服務的啟動時間為秒級,持續(xù)運行時間為數(shù)十分鐘至數(shù)周;
前置條件
- 熟悉并開通阿里云資源編排ROS;具備管理ROS資源棧技能,點擊ROS查看產品相關文檔。
- 熟悉并開通阿里云專有網絡VPC;具備搭建基礎網絡技能,點擊VPC查看產品相關文檔。
- 了解并開通阿里云彈性伸縮ESS;點擊ESS查看產品相關文檔。
- 了解并開通阿里云負載均衡SLB;點擊SLB查看產品相關文檔。
- 了解并開通阿里云對象存儲OSS;點擊OSS查看產品相關文檔。
- 了解并開通阿里云訪問控制RAM;點擊RAM查看產品相關文檔。
- 了解并開通阿里云運維編排OOS;點擊OOS查看產品相關文檔。
- 了解并開通阿里云容器服務Kubernetes版ACK;點擊ACK查看產品相關文檔。
資源部署
ROS資源簡介
ALIYUN::VPC::EIPAssociation: 用于綁定彈性公網IP
ALIYUN::ESS::ScalingConfiguration: 用于為伸縮組創(chuàng)建伸縮配置。
ALIYUN::VPC::EIP: 用于申請彈性公網IP。
ALIYUN::SLB::LoadBalancer: 用于創(chuàng)建負載均衡。
ALIYUN::ESS::ScalingGroupEnable: 用于啟用伸縮組。
ALIYUN::SLB::Listener: 用于創(chuàng)建負載均衡監(jiān)聽(Listener)。
ALIYUN::OOS::Parameter: 用于創(chuàng)建一個普通參數(shù)。
ALIYUN::RAM::Role: 用于創(chuàng)建RAM角色。
ALIYUN::CS::ManagedKubernetesCluster: 用于創(chuàng)建Kubernetes托管版集群。
ALIYUN::ESS::ScalingGroup: 用于創(chuàng)建伸縮組。伸縮組是具有相同應用場景的ECS實例的集合,創(chuàng)建成功后不會立即生效,需要使用。
ALIYUN::ESS::ScalingGroupEnable: 啟用伸縮組,才能觸發(fā)伸縮活動,執(zhí)行伸縮規(guī)則。
步驟
登錄資源編排服務控制臺。
點擊進入解決方案中心。
在案例篩選中篩選容器 & 微服務,在此類型案例中找到SpringCloud云原生遷移,點擊創(chuàng)建資源棧;或先點擊查看詳情查閱案例的詳情介紹再點擊創(chuàng)建資源棧。
在創(chuàng)建資源棧界面填寫必要的參數(shù),具體如下:
基礎信息配置

Eureka 相關配置

Gateway 相關配置

Kubernetes托管版集群相關配置

- 參數(shù)填寫完成,可進行資源預覽,也可直接進行創(chuàng)建;資源棧進入創(chuàng)建狀態(tài),創(chuàng)建完成大約需要10分鐘左右。
- 創(chuàng)建完成,可在輸出界面查詢Eureka url、Gateway url,如下圖:


以上步驟,即可完成Spring Cloud 云原生遷移方案所需要的資源(ECS、SLB、Kubernetes等統(tǒng)稱為資源)部署;查閱相關資源可在對應資源的控制臺進行查閱。
本篇文章由阿里云資源編排服務ROS發(fā)布