什麼是微服務
在介紹Spring Cloud之前,讀者有必要了解一下什麼是微服務。而要了解什麼是微服務又要了解什麼時候SOA。關於什麼是SOA可以看筆者的這篇文章:https://blog.csdn.net/qq32933432/article/details/87195037
簡單來說什麼是微服務:微服務是一種架構模式,叫微服務架構更合理,就是把一個系統中的各個功能點都拆開爲一個個的小應用然後單獨部署,同時因爲這些小應用多,所以需要一些辦法來管理這些小應用。
SpringCloud是什麼
簡單來說,Spring Cloud是一個微服務框架的規範,注意,只是規範,他不是任何具體的框架。我們知道java大佬最喜歡的做法就是自己制定規範,然後別人基於我這個規範來做實現。那麼這個規範裏面有什麼呢,它規定大概要有以下幾種功能。
- 服務的註冊與發現
- 負載均衡
- 服務熔斷和限流
- 智能路由
- 控制總線
- 鏈路監控
- …
剛好,這個時候有一個框架集合幾乎能滿足上面所有的需求,他就是Spring Cloud Netflix。當然,Spring Cloud的實現產品不止這一個,還有最近由阿里新起的Spring Cloud Alibaba等。目前國內主流的是Spring Cloud Netflix。也是本文介紹的主角。
什麼是Spring Cloud Netflix
在介紹Spring Cloud Netflix之前,可以先了解下Netfix公司。因爲Spring Cloud Netflix即是這家公司用的一個框架,把它開源出來了而已
Netflix是什麼,與Spring Cloud有什麼關係
1、首先,Netflix是一家做視頻的網站,可以這麼說該網站上的美劇應該是最火的。
2、Netflix是一家沒有CTO的公司,正是這樣的組織架構能使產品與技術無縫的溝通,從而能快速迭代出更優秀的產品。在當時軟件敏捷開發中,Netflix的更新速度不亞於當年的微信後臺變更,雖然微信比Netflix遲發展,但是當年微信的灰度發佈和敏捷開發應該算是業界最猛的。
3、Netflix由於做視頻的原因,訪問量非常的大,從而促使其技術快速的發展在背後支撐着,也正是如此,Netflix開始把整體的系統往微服務上遷移。
4、Netflix的微服務做的不是最早的,但是確是最大規模的在生產級別微服務的嘗試。也正是這種大規模的生產級別嘗試,在服務器運維上依託AWS雲。當然AWS雲同樣受益於Netflix的大規模業務不斷的壯大。
5、Netflix的微服務大規模的應用,在技術上毫無保留的把一整套微服務架構核心技術棧開源了出來,叫做Netflix OSS,也正是如此,在技術上依靠開源社區的力量不斷的壯大。
6、Spring Cloud是構建微服務的核心,而Spring Cloud是基於Spring Boot來開發的。
7、Pivotal在Netflix開源的一整套核心技術產品線的同時,做了一系列的封裝,就變成了Spring Cloud;雖然Spring Cloud到現在爲止不只有Netflix提供的方案可以集成,還有很多方案,但Netflix是最成熟的。
那麼Spring Cloud Netflix有哪些組件呢?
- eureka (提供服務註冊與發現功能)
- ribbon(提供負載均衡功能)
- Feign(整合了ribbon和Hystrix,具有負載均衡和熔斷限流等功能)
- Hystrix (提供了熔斷限流,合併請求等功能)
- Zuul (提供了智能路由的功能)
- Hystrix Dashboard (提供了服務監控的功能,提供了數據監控和友好的圖形化界面)
- Hystrix Turbine (Hystrix Turbine將每個服務Hystrix Dashboard數據進行了整合。也是監控系統的功能)
- spring cloud config (提供了統一配置的功能)
- Spring Cloud Bus (提供了配置實時更新的功能)
- …
需要注意的是這些組件並不是一體化的,比如你完全可以用攜程的Apollo來替換spring cloud config。也可以用NCOS或者Zookeeper來替換eureka.
Spring Cloud和Spring boot的關係
與其說他們有什麼關係,不如說他們就沒有什麼關係。只是現在微服務當道,而實現一個服務最快的辦法就是用spring boot。不然你還要自己搭項目自己找jar包自己搞配置,還有兼容性等情況。那你的服務化進程註定是緩慢的。所以他們之間是沒有關係的,只是因爲微服務所需要的小應用很多,而spring boot恰恰又是實現小應用最快的方式。
Spring Cloud和dubbo的關係
dubbo是阿里搞得一套框架,是基於RPC調用的,而Spring Cloud Netflix是基於HTTP的,所以效率上應該dubbo更快(如果你不能理解什麼是RPC,當我沒說,反正dubbo更快就是了)。但是dubbo的組件不是很齊全,他的很多功能比如服務註冊與發現你需要藉助於類似zookeeper等組件才能實現,而Spring Cloud Netflix則是提供了一站式解決方案。從使用廣度來說,在國內幾年前dubbo的使用人數遠多於Spring Cloud的,但是近來Spring Cloud慢慢的有了後來居上的趨勢。
如何學習Spring Cloud
在此貼出一位大牛的Spring Cloud入門,真的是通俗易懂
https://www.fangzhipeng.com/spring-cloud.html
再說說的下一代微服務
你也看到了Spring Cloud有這麼多組件,那去學起來是不是很困難呢?同時如果你是出於公司轉型階段,你是不是需要把公司的老項目拆成微服務呢?那怎麼拆呢?粒度怎麼分呢?還有很多其他的問題。這時候就要引入另一個概念Service Mesh。而Service Mesh也是一種思想,實現這種思想目前最牛的框架就是Istio。關於這些東西筆者也只是有個簡單的瞭解,在此拋轉引玉一下,有興趣的同學可以深入瞭解。