分佈式框架的發展歷程
第一代服務框架
代表:Dubbo(Java)、Orleans(.Net)等
特點:和語言聯繫緊密
第二代服務框架
代表:Spring Cloud
現狀:適合混合式開發(例如藉助Steeltoe OSS可以讓ASP.Net Core與Spring Cloud集成),正值頂峯
第三代服務框架
代表:Service Mesh(服務網格) => 例如Service Fabric、lstio、Linkerd、Conduit等
現狀:在快速發展中,更新迭代比較快
Spring Cloud概述
首先,儘管Spring Cloud帶有“Cloud”這個單詞,但它並不是雲計算解決方案,而是在Spring Boot基礎之上構建的,用於快速構建分佈式系統的通用模式的工具集。
其次,使用Spring Cloud開發的應用程序非常適合在Docker和PaaS(比如Pivotal Cloud Foundry)上部署,所以又叫做雲原生應用(Cloud Native Application)。雲原生可以簡單地理解爲面向雲環境的軟件架構。
Spring Cloud是一個基於Spring Boot實現的雲原生應用開發工具,它爲基於JVM的雲原生應用開發中涉及的配置管理、服務發現、熔斷器、智能路由、微代理、控制總線、分佈式會話和集羣狀態管理等操作提供了一種簡單的開發方式。
Spring Cloud的特點
- 約定大於配置
- 適用於各種環境
- 隱藏了組件的複雜性,並提供了聲明式、無XML的配置
- 開箱即用,快速啓動
- 組件豐富,功能齊全
Spring Cloud中的核心子項目
- Spring Cloud Netflix:核心組件,可以對多個Netflix OSS開源套件進行整合,包括以下幾個組件:
- Eureka:服務治理組件,包含服務註冊與發現
- Hystrix:容錯管理組件,實現了熔斷器
- Ribbon:客戶端負載均衡的服務調用組件
- Feign:基於Ribbon和Hystrix的聲明式服務調用組件
- Zuul:網關組件,提供智能路由、訪問過濾等功能
- Archaius:外部化配置組件
- Spring Cloud Config:配置管理工具,實現應用配置的外部化存儲,支持客戶端配置信息刷新、加密/解密配置內容等。
- Spring Cloud Bus:事件、消息總線,用於傳播集羣中的狀態變化或事件,以及觸發後續的處理
- Spring Cloud Security:基於spring security的安全工具包,爲我們的應用程序添加安全控制
- Spring Cloud Consul : 封裝了Consul操作,Consul是一個服務發現與配置工具(與Eureka作用類似),與Docker容器可以無縫集成