引言:搭建微服務架構就像是買電腦,使用SpringCloud就是在買品牌機。 前言 昂,美好的天氣里,不想直接說技術,給小伙伴萌看看傍晚的天空吧。 —— 能找到天上的北極星嗎? 上一篇文章中,通過一個簡單的小故事,輕鬆愉快的講解了架構的演變,以及為啥會有微服務,什麼是微服務。不過在最後留下了一個小疑 ...
引言:搭建微服務架構就像是買電腦,使用SpringCloud就是在買品牌機。
前言
昂,美好的天氣里,不想直接說技術,給小伙伴萌看看傍晚的天空吧。
—— 能找到天上的北極星嗎?
上一篇文章中,通過一個簡單的小故事,輕鬆愉快的講解了架構的演變,以及為啥會有微服務,什麼是微服務。不過在最後留下了一個小疑問:將架構設計為微服務需要一整套技術,解決服務調用,服務治理,服務監控等問題。
那麼這些技術怎麼來呢?
答案就是:SpringCloud。
本文就會詳細講解
- 什麼是SpringCloud
- SpringCloud和SpringBoot的關係
- SpringCloud版本選擇
什麼是SpringCloud
引言:搭建微服務架構就像是買電腦,使用SpringCloud就是在買品牌機。
SpringCloud,基於SpringBoot提供了一套微服務解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件,除了基於NetFlix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件。
NetFlix 是美國的一個線上視頻網站,微服務業的翹楚,他是公認的大規模生產級微服務的傑出實踐者,NetFlix的開源組件已經在他大規模分散式微服務環境中經過多年的生產實戰驗證,因此spring cloud中很多組件都是基於NetFlix組件的封裝
在上篇文章中我們講到微服務是一套技術的合集,這些技術裡面有服務調用技術,負載均衡技術,網關技術等等大大小小十幾個技術。
那麼問題來了?在開發中,我們怎麼才能找到這樣一整套技術呢?
第一種方案:就是自己需要什麼找什麼技術,但是這樣會有一個問題,技術和技術之間往往都會有一些相容性的問題,要解決這些問題,需要很強的技術示例,中小型企業一般沒有這樣的實力。
第二種方案:一些有實力的公司會自己尋找一整套技術,並且做一些封裝和整合,然後開源讓大家使用。SpringCloud就是這樣的技術,SpringCloud是官方封裝好的一整套分散式微服務的技術解決方案,我們也稱之為微服務全家桶。
舉個通俗的例子:開發微服務相當於買一臺電腦
- 自己找微服務的技術相當於自己組裝電腦,需要自己選配零部件,並且做組裝整合,一般人搞不定。
- 使用SpringCloud相當於直接買了一個聯想的電腦,買品牌機,廠家會把CPU 顯卡等等都幫你配置好了,買來就能用。
SpringCloud包含的技術:
.....等一二十個技術,網址:https://www.springcloud.cc/
SpringCloud 和 SpringBoot的關係
用過SpringBoot的小伙伴都知道,SpringBoot開發之所以方便快捷,就是因為SpringBoot自動配置可以讓我們在開發的時候不寫基本的配置,通過完美的封裝讓應用可以做到一鍵啟動和部署,而SpringCloud多個技術整合,最複雜的過程往往是配置。
所以SpringCloud選擇SpringBoot作為技術底層,對目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,進行二次封裝,屏蔽掉了複雜的配置和實現原理。讓我們使用SpringCloud像使用SpringBoot一樣的簡單。
SpringCloud和SpringBoot的版本選擇
關於SpringCloud和SpringBoot的版本選擇問題,可以見官網:https://spring.io/projects/spring-cloud/
我們選擇的是 Finchley 版本的SpringCloud,SpringBoot的版本就要選擇 2.0.X。
解釋一下 SpringCloud 版本號:SpringCloud 版本的命名規範實際上是
英文單詞 SRX
的形式命名
- SpringCloud的版本號沒有採用 數字 命名,而是英文的單詞,?Angel、Brixton、Camden等都是倫敦地鐵站的名稱,它們按照字母順序發行。這個是主版本號,我們一般會稱之為 F版本,D版本。
- 後面的SR表示“Service Release”,一般表示Bug修複;在SR版本發佈之前,會先發佈一個Release版本,例如Camden RELEASE。
總結
恭喜你完成了本章的學習,為你鼓掌!如果本文對你有幫助,請幫忙點贊,評論,轉發,這對作者很重要,謝謝。
要掌握SpringCloud更多的用法,請持續關註本系列教程。
歡迎關註本人公眾號:鹿老師的Java筆記,將在長期更新Java技術圖文教程和視頻教程,Java學習經驗,Java面試經驗以及Java實戰開發經驗。