SpringCloud是在SpringBoot的基礎上構建的,用於簡化分布式系統構建的工具集.
該工具集為微服務架構中所涉及的配置管理,服務發現,智能路由,斷路器,微代理和控制總線等操作
提供了一種簡單的開發方式.
SpringCloud中包含了多個子項目,可以通過官網:http://spring.io/projects/spring-cloud查看這些子項目.
Spring Cloud Netflix : 集成了各種OSS組件,其中包括Eureka,Ribbon,Hystrix,Zuul,Feign,Archaius等.
Spring Cloud Config : 配置管理工具,支持使用Git存儲配置內容,可以使用它實現應用配置的外部化存儲,
並支持客戶端配置信息刷新,加密和解密等配置內容.
Spring Cloud Starters : Spring Cloud的基礎組件,是基於SpringBoot風格項目的基礎依賴模塊.
SpringCloud Bus, Spring Cloud Consul, SpringCloud CLI 等.
特點:
最大的特點就是它的集成性,它將很多開源產品都集成到了自身的框架中,使其越來越強大.
1.使用方便.
2.功能齊全.
3.易於擴展和維護.
4.適用於各種環境.
在圖1-5中,部署了一系列的微服務,每個微服務都會訪問自己的數據庫(Database)。當這些微服務啟動時,會將其信息注冊到服務注冊中心(Service Registry),在客戶端發送請求時,請求首先會被API網關(API GateWay)攔截,API網關會讀取請求數據,並從注冊中心獲取對應的服務信息,然后API網關會根據服務信息調用所需的微服務。
微服務架構的技術選型在微服務架構中,不同的組件(包括微服務實例、注冊中心和API網關等組件)需要根據不同的情況來選取相應的技術,那么我們可以使用哪些技術呢?本小節將對微服務架構中各個組件可使用的技術,以及本書所選用的技術進行簡單介紹。
1. 微服務實例的開發
微服務的開發可以選用的框架技術有Spring團隊的Spring Boot、Jboss公司的WildFly Swarm和Java EE官方的微服務框架KumuluzEE等。
2. 服務的注冊與發現
架構中服務的注冊與發現功能,可以使用的技術有Spring Cloud Eureka、Apache Zookeeper、Consul、Etcd和Dubbo等,它們都是用於服務注冊和發現的技術。
3. 負載均衡
負載均衡可以使用的技術有Spring CloudRibbon和Dubbo等。
4. 服務容錯
服務容錯的技術可以選用Hystrix,在SpringCloud的子項目中包含Spring Cloud Hystrix。
5. API網關
架構中的API網關服務,可以使用的技術有Spring Cloud Zuul、Spring Reactor、Netty或NodeJS等。
6. 分布式配置中心
分布式配置中心可以使用Spring Cloud Con-fig。
7. 調試
微服務應用的測試工作可以使用Swagger。Swagger是當前最受歡迎的REST API文檔生成工具之一,它提供了強大的頁面測試功能來調試每個RESTful API。
8. 部署
微服務的官方文檔中推薦使用Docker來打包和部署微服務。由於Docker是一個開源的應用容器引擎,具有可移植性強、啟動速度快等特點,所以適合跑一些輕量的應用.
9. 持續集成
為了實現服務的自動化部署,我們可以通過Jenkins搭建自動化部署系統,並使用Docker進行容器化封裝。在上面的技術選型中,從微服務注冊與發現、負載均衡、容錯、API網關和分布式配置中心組件的可選技術內,我們都看到了Spring Cloud的身影。實際上,Spring Cloud的子項目中,已經提供了構建微服務所需的所有解決方案。為了方便讀者學習,並能快速地掌握微服務架構的使用,本書將使用Spring Boot+Spring Cloud+Docker技術來實現微服務架構。書中的主要技術選型如圖1-6所示。
從圖1-6中可以看出,我們會使用Spring Boot實現微服務實例的開發,使用Spring Cloud Eureka來實現服務的注冊與發現,使用Spring CloudHystrix的斷路器功能來實現服務容錯,使用Spring Cloud Ribbon實現服務間的負載均衡,使用Spring Cloud Zuul實現服務網關,使用SpringCloud Config作為分布式配置中心,使用Swagger對微服務進行測試,並使用Jenkins的持續集成功能來實現自動化部署。
除了Spring Cloud之外,Dubbo也是目前國內比較流行的分布式服務框架,它們都具備分布式服務治理相關的功能,都能夠提供服務注冊、發現、路由和負載均衡的能力。相比之下,Spring Cloud提供了更加完整的一套企業級分布式雲應用的解決方案,包含了微服務組件中的方方面面,並能夠結合Spring Boot、Docker實現快速開發的目的,而Dubbo只有Spring Cloud的一部分功能。由於二者具體的實現方式不同,因此並沒有好壞之分。企業在選用時,需根據自身情況選擇。