首先講一下我為什麼要寫這一系列的文章,現在網上大量的springcloud相關的文章,使用的springboot和springcloud的版本都相對比較老,很多還是在使用springboot1.x的版本,如果嘗鮮想使用springboot2.x的版本,很多配置都和之前的不一樣,有了大量的修改,很多剛 ...
首先講一下我為什麼要寫這一系列的文章,現在網上大量的springcloud相關的文章,使用的springboot和springcloud的版本都相對比較老,很多還是在使用springboot1.x的版本,如果嘗鮮想使用springboot2.x的版本,很多配置都和之前的不一樣,有了大量的修改,很多剛開始學習的朋友可能試一試搭不起來就放棄了,本系列教程就是幫助剛接觸springcloud的朋友簡單上手,快速起步。
springboot進入2.x以後,歷經一年多的修修改改,終於到了2.1.x的版本,相對較為穩定,本系列教程將使用目前最新的springboot(2.1.6.RELEASE)和springcloud(Greenwich.SR1)版本(如無特殊說明)。
1. 什麼是springcloud?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、消息匯流排、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring Cloud並沒有重覆製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分散式系統開發工具包。
-- 以上內容摘自百度百科
百度百科的解釋看起來文縐縐的,可能剛接觸的朋友很多新名詞都看不大懂。我的理解就是springcloud為項目微服務化提供了一系列的工具,常用的包括註冊中心,斷路器,配置中心,消息匯流排等等,簡單理解就是springcloud提供了一系列的工具或者框架,當然,還包含很多設計思想。
2. 微服務架構選型為什麼選擇springcloud而不會dubbo?
這裡僅代表我的個人觀點,歡迎交流:)
說到這個,就要先聊一下什麼是微服務了。
微服務(Microservices): 是一種架構風格,一個大型複雜軟體應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關註於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表著一個小的業務能力。
Dubbo: Dubbo是一個分散式服務框架,致力於提供高性能和透明化的 RPC 遠程服務調用方案,以及 SOA 服務治理方案。簡單的說,Dubbo 就是個服務框架,說白了就是個遠程服務調用的分散式框架。
springcloud: springcloud是一整套的微服務解決方案,有一張很有名的對比圖可以清晰看到dubbo和springcloud功能對比,如下:
如果微服務架構選型選擇了dubbo,那麼後續一些其他的組件,還需要我們自己去評估目前市面上一些開源的組件是否符合我們的需要,而如果架構選型選擇了springcloud,那麼就能省心很多,springcloud本身就提供了一整套的微服務的解決方案,雖然有很多組件目前看起來依然不是很成熟,不過這依然大大降低了我們在架構選型上的工作量。
3. springcloud一些常用組件
以下排序不分先後
- Spring Cloud Config 配置中心: 利用 Git 集中管理程式的配置。
- Spring Cloud Netflix Eureka: 服務中心(類似於管家的概念,需要什麼直接從這裡取,就可以了),一個基於 REST 的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。
- Spring Cloud Netflix Hystrix 熔斷器: 容錯管理工具,旨在通過熔斷機制控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。
- Spring Cloud Netflix Zuul 網關: 是在雲平臺上提供動態路由,監控,彈性,安全等邊緣服務的框架。Web 網站後端所有請求的前門。
- Spring Cloud Netflix Archaius: 配置管理 API,包含一系列配置管理API,提供動態類型化屬性、線程安全配置操作、輪詢框架、回調機制等功能。
- Spring Cloud Netflix Ribbon: 負載均衡。
- Spring Cloud Netflix Fegin: REST客戶端。
- Spring Cloud Bus: 消息匯流排,利用分散式消息將服務和服務實例連接在一起,用於在一個集群中傳播狀態的變化。
- Spring Cloud Security: 安全控制。
- Spring Cloud Sleuth: 分散式鏈路監控,SpringCloud 應用的分散式追蹤系統,和 Zipkin,HTrace,ELK 相容。
- Spring Cloud Stream: 消息組件,基於 Redis,Rabbit,Kafka 實現的消息微服務,簡單聲明模型用以在 Spring Cloud 應用中收發消息。
下麵一篇,開始springcloud的搭建。