- 微服務從小白到專家:Spring Cloud和Kubernetes實戰(zhàn)
- 姚秋辰 張昕 卿睿
- 1839字
- 2021-10-29 12:24:34
4.5 了解Spring Cloud組件庫
4.5.1 Spring Cloud的整體架構
Spring Cloud的總體架構如圖4-1所示,可以看出它的體系架構非常龐大,圖4-1中不僅包含了Spring Cloud的原生組件,也包含了Netflix和Alibaba組件庫的內(nèi)容。因此,部分模塊有不止一個組件可供選擇。

圖4-1 Spring Cloud的總體架構
4.5.2 Spring Cloud的子項目
Spring Cloud的核心子項目一共有19個,具體介紹如下。
1. Spring Cloud Config
Spring Cloud Config是一個中心化的配置管理工具,它目前支持本地文件、數(shù)據(jù)庫和版本控制系統(tǒng)(GitHub和Subversion)三種存儲方式。在Spring Boot應用的啟動階段,應用程序會主動訪問Config Server拉取配置文件,并且將配置文件中的配置項注入Spring上下文中。此外,Spring Cloud Config還可以在運行期間動態(tài)推送配置屬性變更到服務集群。
2. Spring Cloud Bus
Spring Cloud Bus是一個“事件總線”,它通過分布式消息在集群環(huán)境中傳播“狀態(tài)更改”事件。它也可以與Spring Cloud Config進行無縫集成,用以批量推送配置屬性變更到業(yè)務集群。
3. Spring Cloud Consul
Spring Cloud Consul是一個服務治理框架,它對原生的Consul項目(HashiCorp公司用Go語言開發(fā)的一個項目)進行了封裝,提供了服務注冊、服務發(fā)現(xiàn)、健康檢查等服務生命周期管理的功能。
4. Spring Cloud Sleuth
Spring Cloud Sleuth為Spring Cloud應用提供了分布式環(huán)境下的調(diào)用鏈路追蹤功能。
5. Spring Cloud Stream
Spring Cloud Stream是一個輕量級的事件消息驅(qū)動框架,它簡化了應用程序與Apache Kafka、RabbitMQ消息中間件的對接。
6. Spring Cloud Gateway
Spring Cloud Gateway是一個基于Project Reactor響應式編程技術構建的網(wǎng)關路由組件,用于替代Zuul。
7. Spring Cloud OpenFeign
Spring Cloud OpenFeign通過動態(tài)代理機制簡化了REST接口的調(diào)用過程。
8. Spring Cloud Cloudfoundry
Spring Cloud Cloudfoundry組件可以將應用與Pivotal Cloud Foundry(簡稱PCF)集成,在提供服務發(fā)現(xiàn)功能的同時,簡化了SSO和OAuth2的訪問認證流程。PCF是由Pivotal公司在開源Cloud Foundry基礎上研發(fā)的商業(yè)版本,提供了云原生的應用開發(fā)PaaS(Platform as a Service)平臺。
9. Spring Cloud Open Service Broker
Spring Cloud Open Service Broker提供了一個Spring Boot框架,使開發(fā)人員能夠在Open Service Broker API的平臺(比如Cloud Foundry和Kubernetes)之上構建應用。
10. Spring Cloud Cluster
Spring Cloud Cluster為分布式環(huán)境中的組件(如ZooKeeper和Redis)提供了構建“集群”的功能,例如Leader選舉、集群狀態(tài)的一致性、全局鎖和一次性Token等常見的狀態(tài)模式的抽象層和具體實現(xiàn)。
11. Spring Cloud Security
Spring Cloud Security基于Spring Security構建,提供應用安全方面的支持。
12. Spring Cloud Data Flow
Spring Cloud Data Flow是一個云原生的流處理和批處理數(shù)據(jù)管道,主要用于大規(guī)模數(shù)據(jù)集成和實時數(shù)據(jù)處理的場景,通過簡化的DSL、可拖放的GUI組件和REST-API來簡化數(shù)據(jù)管道的構建。
13. Spring Cloud Task
Spring Cloud Task可以將微服務作為一個短期任務來執(zhí)行和調(diào)度。
14. Spring Cloud ZooKeeper
Spring Cloud ZooKeeper基于ZooKeeper的特性提供了配置管理與服務治理等功能。
15. Spring Cloud Connectors
Spring Cloud Connectors提供了一個簡單的抽象,使PaaS應用可以輕松連接各類云平臺的后臺資源。
16. Spring Cloud Starters
Spring Cloud Starters是Spring Boot風格構建的啟動項目,提供了依賴管理和“開箱即用”的使用體驗。
17. Spring Cloud CLI
Spring Cloud CLI插件可以通過命令行、Groovy和YML配置文件等方式快速構建Spring Cloud組件。
18. Spring Cloud Contract
Spring Cloud Contract是CDC(Consumer-Driver Contracts,消費者驅(qū)動契約)的一種實現(xiàn),提供了一種基于接口的測試方式。
19. Spring Cloud Function
Spring Cloud Function是一個函數(shù)計框架,用于在FaaS(Function as a Service)平臺上部署基于函數(shù)的軟件。
4.5.3 Netflix組件庫
Netflix就是大家熟知的“奈飛”公司,Netflix是位于美國的一家流媒體巨頭,它為Spring Cloud的發(fā)展做出了很大的貢獻,在Spring Cloud中很多鼎鼎大名的組件都由Netflix開發(fā)和貢獻,有些組件至今依然是Spring Cloud家族使用最為廣泛的組件。Netflix的核心組件具體介紹如下:
1. Eureka
Eureka是一款基于HTTP的服務治理組件,利用Eureka可以輕松搭建一個高可用的服務注冊中心集群,它提供了完善的服務生命周期管理功能,比如服務注冊、服務發(fā)現(xiàn)、心跳檢查、服務下線、服務剔除和自保等。
2. Hystrix
Hystrix是一款客戶端服務容錯管理組件,它提供了服務降級、服務熔斷和線程隔離等服務容錯功能。Hystrix可以與Turbine集成,利用Turbine聚合集群內(nèi)的服務調(diào)用數(shù)據(jù),再通過Hystrix Dashboard監(jiān)控大盤實時反映服務的健康狀態(tài)。
3. Ribbon
Ribbon是一個客戶端負載均衡組件,內(nèi)置了多種負載均衡策略,也支持通過擴展的方式編寫自己的負載均衡器。
4. Archaius
Archaius包含一系列配置管理API,提供動態(tài)類型化屬性、線程安全配置操作、輪詢框架和回調(diào)機制等功能。
5. Zuul
Zuul是一個路由組件,它可以作為服務層網(wǎng)關入口,還可以提供動態(tài)路由、限流、性能監(jiān)測和安全等功能。
4.5.4 Alibaba組件庫
阿里近年來逐漸加大了開源方向上的投入,在Spring Cloud項目中也逐漸大放異彩。由阿里研發(fā)并開源的組件具體介紹如下:
1. Sentinel
Sentinel是一個流控組件,從流量控制、熔斷降級、負載保護等多個維度保障系統(tǒng)的可用性,它還可以與Nacos和Apollo等組件集成,對流控規(guī)則進行持久化。
2. Nacos
Nacos是一個服務治理組件,同時也可以作為配置中心來使用,它提供了服務發(fā)現(xiàn)和配置管理等功能。
3. RocketMQ Binder
RocketMQ Binder作為Spring Cloud Stream的底層組件,承擔了與RocketMQ集成的工作。
4. Seata
Seata是一個分布式事務框架,它提供了AT、TCC和Saga三種分布式解決方案。
5. Dubbo RPC
Dubbo是一個高性能的RPC(遠程方法調(diào)用)框架。
6. Alibaba Cloud Object Storage Service
Alibaba Cloud Object Storage Service是一個加密安全的云存儲服務。
- 流量的秘密:Google Analytics網(wǎng)站分析與優(yōu)化技巧(第2版)
- .NET之美:.NET關鍵技術深入解析
- React Native Cookbook
- 從程序員到架構師:大數(shù)據(jù)量、緩存、高并發(fā)、微服務、多團隊協(xié)同等核心場景實戰(zhàn)
- Vue.js 3.0源碼解析(微課視頻版)
- Python Data Analysis Cookbook
- Hands-On Nuxt.js Web Development
- C++語言程序設計
- Android Game Programming by Example
- Simulation for Data Science with R
- Learning TypeScript
- 分布式系統(tǒng)架構與開發(fā):技術原理與面試題解析
- R語言編程基礎
- Switching to Angular 2
- Python3從入門到實戰(zhàn)