1. 程式人生 > 實用技巧 >SpringCloud 2020 學習筆記-序言

SpringCloud 2020 學習筆記-序言

SpringCloud 2020 學習筆記-序言

一、前言

​ 學習、工作使用java已經有一段時間了,前段時間粗略的學習了一下Dubbo框架,作為第一次使用微服務框架的小白的我來說,在它的服務治理服務呼叫等功能上深受感慨,也是感受到了微服務單體應用之間的差異,喜歡其功能模組的拆分,降低了整體系統的耦合性,這也許是大家說的低耦合,高內聚的思想吧。第一次接觸便讓我迫不及待的想去了解它,掌握它,所以也是決定再去系統的學習下springcloud的體系。為了提高學習效果、加深學習印象,我打算在學習過程中寫系列筆記的部落格,以此來輔助我的學習,也分享我的過程,希望能幫助到一些和一樣的小白,同時也希望看到我文章的大佬們能指出我的不足,非常感謝 (

)!

二、體系組成

​ 雖然才開始準備寫學習筆記,其實網上學習springcloud的相關知識也有段時間了,但是這是粗略的瞭解了下比較淺層的知識,大致瞭解了下這個框架的有那些組成以及那些元件的更新換代,因為在之前的版本springcloud的元件有許多元件也停更進維了,對於我這種剛學的小白來說,需要了解它的過去,也要了解其的現在,因為很多元件都是承上啟後,思想理念都是一脈相承的,這裡我也是抱著學習的態度多去了解了下。

springcloud發展也有很長一段時間了,隨著它的快速發展,springcloud的組成也發生了很大的變化,我也是基於網上的資料,以2020年為分界線,整理了下舊版和新版的springcloud

的組成

2.1 前期組成

springCloud舊版

我們可以看到,舊版的springcloud的框架主要是由EurekaRIbbonFeignHystrixSpringCloud ConfigSpringBoot組成。主要的模組劃分為服務註冊與發現服務負載與呼叫服務熔斷與降級服務閘道器服務分散式配置服務開發,可以看到還是涵蓋的比較全的。

2.2 最新組成

2020年新的組成

​ 經過springcloud的快速發展,springcloud的元件也是百花齊放,各個模組都有許多可替換的元件,可以根據實際的業務需求來做技術選型。

三、註冊中心

​ springcloud是一個非常優秀的微服務框架,要管理眾多的服務,就需要對這些服務進行治理,也就是我們說的服務治理

,服務治理的作用就是在傳統的rpc遠端呼叫框架中,管理每個服務與每個服務之間的依賴關係,可以實現服務呼叫、負載均衡、服務容錯、以及服務的註冊與發現。
​ 如果微服務之間存在呼叫依賴,就需要得到目標服務的服務地址,也就是微服務治理的服務發現。要完成服務發現,就需要將服務資訊儲存到某個載體,載體本身即是微服務治理的服務註冊中心,而儲存到載體的動作即是服務註冊
​ springcloud支援的註冊中心有EurekaZookeeperConsulNacos

元件名稱所屬公司元件簡介
EurekaNetflixspringcloud最早的註冊中心,目前已經進入停更進維
ZookeeperApachezookeeper是一個分散式協調工具,可以實現註冊中心功能
ConsulHashicorpConsul 簡化了分散式環境中的服務的註冊和發現流程,通過 HTTP 或者 DNS 介面發現。支援外部 SaaS 提供者等。
NacosAlibabaNacos 致力於幫助您發現、配置和管理微服務。Nacos 提供了一組簡單易用的特性集,幫助您快速實現動態服務發現、服務配置、服務元資料及流量管理。

四、負載均衡

負載均衡構建在原有網路結構之上,它提供了一種透明且廉價有效的方法擴充套件伺服器和網路裝置的頻寬、加強網路資料處理能力、增加吞吐量、提高網路的可用性和靈活性。

​ 目前springcloud支援兩個負載均衡元件:RibbonLoadBalance

元件名稱所屬公司元件簡介
RibbonNetflixRibbon是一個基於HTTP和TCP的客戶端負載均衡工具
LoadBalancer--

五、服務呼叫

​ 微服務將傳統的單體應用拆分成了多個微服務,也考慮了服務之間如何相互呼叫,舊版的springcloud使用的Feign來支援rpc呼叫,現在Feign已經停更進維了,由OpenFeign來提供服務呼叫

元件名稱所屬公司元件簡介
Feign--
OpenFeignSpringCloud是一個宣告式的webService客戶端,定義介面添加註解即可使用

六、服務保護

​ 對於目前網際網路常見的高併發的場景,雖然我們可以提供叢集的方式來對服務請求進行容錯,不過也難免會遇到不可預見的故障,比如宕機等情況,作為一個完善的微服務框架來說,springcloud考慮了這些情況,可選用Hystrixseilience4jsentinel來對服務進行保護,提供服務降級服務熔斷服務限流的功能

元件名稱所屬公司元件簡介
HystrixNetflix分散式系統的延遲和容錯方案,已經停更進維
Resilience4j-Resilience4j是一款輕量級,易於使用的容錯庫,其靈感來自於Netflix Hystrix,但是專為Java8和函數語言程式設計而設計,是官方推薦的Hystrix的替代方案。
SentinelAlibabaAlibaba出品的面向分散式服務架構的流量控制組件

七、服務閘道器

​ 在微服務眾多的服務的治理過程中,服務閘道器的作用在微服務框架中可以提供統一入口鑑權校驗動態路由降低耦合度的功能

元件名稱所屬公司元件簡介
zuulNetflix停更進維
zuul2Netflixzuul核心開發人員離職了3人,神仙打架,出路不明
gatewayspringcloudspringcloud自研的一套非阻塞的網路非同步閘道器

八、服務配置

​ Spring Cloud官方自身提供了Spring Cloud Config分散式配置中心,由它來提供集中化的外部配置支援,它分為客戶端和服務端兩個部分。其中服務端稱作配置中心,是一個獨立的微服務應用,用來連線倉庫(如Git、Svn)並未客戶端提供獲取配置的介面;而客戶端是各微服務應用,通過指定配置中心地址從遠端獲取配置內容,啟動時載入配置資訊到應用上下文中。因Spring Cloud Config實現的配置中心預設採用了Git來儲存配置資訊,所以版本控制管理也是基於Git倉庫本身的特性來支援的 。目前springcloud可使用springcloud configNacos

元件名稱所屬公司元件簡介
ConfigspringcloudConfig為分散式系統中的外部化配置提供伺服器端和客戶端支援。
NacosAlibaba易於使用的動態服務發現,配置和服務管理平臺,用於構建雲本機應用程式。

九、服務匯流排

​ Spring Cloud Bus 將分散式的節點用輕量的訊息代理連線起來。它可以用於廣播配置檔案的更改或者服務之間的通訊,也可以用於監控。本文要講述的是用Spring Cloud Bus實現通知微服務架構的配置檔案的更改。

元件名稱所屬公司元件簡介
Busspringcloud-
NacosAlibaba-

十、springcloud 和springcloud alibaba

​ Spring Cloud 是基於 Spring Boot 設計的一套微服務規範,並增強了應用上下文。Spring Cloud Alibaba 採用阿里中介軟體作為基礎,實現了 Spring Cloud 的微服務規範。

2018-12-12 Netflix 宣佈停止開發Spring Cloud的相關服務:Ribbon、Feign、Eureka、Hystrix,繼續使用風險自負

這篇文章是基於我目前對springcloud的認識所寫的,文章中肯定還有很多不好的地方以及錯誤的地方,也請各位如果看到能給予指正。