SpringCloud學習筆記

1. SpringCloud 與SpringBoot的關(guān)系

  1. SpringBoot專注與微服務的構(gòu)建,SpringCloud是用于治理微服務,為微服務提供:配置管理,服務發(fā)現(xiàn),路由等服務。

  2. SpringBoot可以離開SpringCloud,但SpringCloud離不開SpringBoot

2.大體網(wǎng)站架構(gòu)圖

網(wǎng)站運行流程.png

解釋:

  1. NDS(Content Distribution Service): 就是負責緩存一些網(wǎng)站數(shù)據(jù),用戶不用直接去源網(wǎng)站獲取數(shù)據(jù),而是去離自己較近的服務器拿就行

  2. LVS(Linux Virtual Server): Linux 虛擬服務

  3. NGINX: 用于負載均衡,反向代理

3. Dubbo與SpringCloud對比

Dubbo SpringCloud
服務注冊中心 Zookeeper Spring Cloud Netflix Eureka
服務調(diào)用方式 RPC REST API
服務監(jiān)控 Dubbo-monitor SpringBoot Admin
斷路器 不完善 Spring Cloud Netflix Hystrix
服務網(wǎng)關(guān) Spring Cloud Netflix zuul
分布式配置 Spring Cloud Config
服務跟蹤 Spring Cloud Sleuth
消息總線 Spring Cloud Bus
數(shù)據(jù)流 Spring Cloud Stream
批量任務 Spring Cloud Task

SpringCloud官網(wǎng)

SpringCloud中文Api

SpringCloud中文文檔

套路

  1. 導入依賴

  2. 編寫配置文件

  3. 注解開啟功能

  4. 編寫配置類

4. Eureka 服務注冊與發(fā)現(xiàn)

Eureka.png

5. Eureka與Zookeeper

CAP:Consistency(強一致性),Available(可用性),Partition Tolerance(容錯性)

一個系統(tǒng)最多滿足兩項

5.1 Eureka(AP)

Eureka所有節(jié)點都是平等的,即使down掉某個節(jié)點,只要存在一個可用節(jié)點便可繼續(xù)使用。除此之外,Eureka還有自我保護機制,若是15分鐘檢測到85%以上的節(jié)點沒有心跳,Eureka就認為網(wǎng)絡發(fā)生問題了。就會采用下面措施。

  1. 不移除沒有心跳的服務

  2. 接受新的服務注冊,但不會同步

  3. 網(wǎng)絡穩(wěn)定時,同步到其他節(jié)點

5.2 zookeeper(CP)

zookeeper存在一個主節(jié)點,若是down掉,這會在其他節(jié)點選取出一個主節(jié)點,期間網(wǎng)絡不可用。zookeeper可保證每一次的訪問請求都能得到一致性的結(jié)果

6. Ribbon

Ribbon.png

6.1 基礎理解

Ribbon能做負載均衡,也就是請求平攤給多臺機器,系統(tǒng)達到高可用的狀態(tài)

常見的負載均衡軟件有nginx,lvs等

負載均衡的分類:

1)集中式LB: 消費方與提供方由某個獨立的設施進行負載均衡,如nginx,只把請求用某種策略分發(fā)給服務方

2)進程式LB: 消費方去注冊中心找到可用的提供方地址,然后自己選用合適的算法去調(diào)用。

6.3 負載均衡算法

負載均衡算法.png

個別解釋:

  1. AvailabilityFilteringRule: 過濾掉無用的服務,剩下輪詢

  2. RoundRobinRule: 輪詢

7. Feign

Feign也是用于負載均衡, 但不同的是不用去寫一個RestTemplate,直接面向接口編程

8. Hystrix

Hystrix是用于解決服務熔斷的開源庫,服務發(fā)生異常時,可調(diào)用備選方案

8.1 服務熔斷

服務在遇到異常情況時,調(diào)用備選方案。如,數(shù)據(jù)庫查詢不到數(shù)據(jù),用戶訪問異常,若是有服務熔斷就可以調(diào)用備選方案,告訴用戶只是找不到數(shù)據(jù),不拋異常這種方式會更加友好。

8.2 服務降級

當遇到秒殺時,服務器的并發(fā)量較高時,可以暫停某些無關(guān)的服務,讓服務器能以減少負擔。

8.3 服務監(jiān)控

9. Zuul(路由網(wǎng)關(guān))

需要注冊進Eureka

9.1 路由

Zuul就是將請求統(tǒng)一管理,可進行路由轉(zhuǎn)發(fā)。

9.2 過濾

請求校驗,可將Eureka服務名進行隱藏,只暴露設置的標識符。

10. SpringCloud Config(配置)

由于每個微服務都有自己配置application.yml, 沒有集中管理的話,修改特別麻煩。

可以將本地的配置文件如.yml,上傳到遠端如github,通過SpringCloudConfig里的Server進行讀取,那么我們本地只需訪問Server讀取配置文件,加載就行。

springcloudconfig.png

本人的Github博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容