SpringCloud簡介(一)

一.SpringCloud的簡介
SpringCloud是一系列框架的集合。它構建於SpringBoot之上,爲常見的分佈式系統提供了一整套簡單 易於接受的編程模型。如圖一
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
圖一 SpringCloud的構成

Springcloud技術組成
在這裏插入圖片描述
*** 1**.eureka----- 微服務治理,服務註冊和發現。****
在這裏插入圖片描述

  • Eureka是基於RESTFUL的服務,主要在AWS雲中用於定位中間層服務,有兩個組件組成:Eureka服務器和Eureka客戶端 ,Eureka服務器用做服務註冊服務器,Eureka客戶端是一個JAVA客戶端 簡化與服務器的交互 作爲輪詢負載均衡器 並提供服務的故障切換支持 Netflix在其生產環境中使用的是另外的客戶端,它提供基於流量、資源利用率以及出錯狀態的加權負載均衡。以實現負載均衡和中間層服務器故障轉移,我們稱之爲Eureka服務器,Eureka還有一個基於java客戶端的組件Eureka Client,它使與服務交互變得更加容易。總得來說,Eureka就是一個服務發現框架。
  • 當Eureka客戶端向Server註冊時,它提供自身的元數據,例如:IP地址 斷口 URL 主頁等
    *在這裏插入圖片描述
    圖二 Eureka架構圖
  • 2.Ribbon------負載均衡 請求重試****加粗樣式
  • 在這裏插入圖片描述
  • Ribbon,主要提供客戶側的軟件負載均衡算法。

Ribbon客戶端組件提供一系列完善的配置選項,比如連接超時、重試、重試算法等。Ribbon內置可插拔、可定製的負載均衡組件。下面是用到的一些負載均衡策略:
簡單輪詢負載均衡
加權響應時間負載均衡
區域感知輪詢負載均衡
隨機負載均衡

Ribbon中還包括以下功能:

易於與服務發現組件(比如Netflix的Eureka)集成
使用Archaius完成運行時配置
使用JMX暴露運維指標,使用Servo發佈
多種可插拔的序列化選擇
異步和批處理操作(即將推出)
自動SLA框架(即將推出)
系統管理/指標控制檯(即將推出)

  • 瞭解RestTemplate

  • 微服務之間的調用就是用的**RestTemplate(**基於http服務的客戶端的類)

  • Ribbon是運行在消費者端的負載均衡器,其工作原理就是在Consumer端獲取到了所有服務列表後,在其內部使用負載均衡算法,進行多個系統的調用。

  • *對比Nginx和Ribbon

  • 1.作用範圍不同:Ribbon是僅在消費者端進行的負載均衡器。Nginx是一種集中式(接收了所有請求)的負載均衡器。

  • 2.算法:Ribbon採用的算法有輪詢策略(默認)若經過一輪輪詢沒有找到可用的Provider,其最多輪詢10輪,若還沒找到,則返回null

  • RandomRule:隨機策略 從所有可用的Provider中隨機選擇一個。
    *** RetryRule:重試策略先按輪詢策略獲取Provider,若獲取失敗,在指定的時間內重試**

  • Nginx使用的輪詢和加權算法。**
    *** **3.Hystrix----斷路器 服務降級 熔斷
    在這裏插入圖片描述
    在這裏插入圖片描述
    斷路器可以防止一個應用程序多次試圖執行一個操作,即很可能失敗,允許它繼續而不等待故障恢復或者浪費 CPU 週期,而它確定該故障是持久的。斷路器模式也使應用程序能夠檢測故障是否已經解決。如果問題似乎已經得到糾正,應用程序可以嘗試調用操作。

  • 所謂熔斷就是服務雪崩的一種有效解決方案。當指定時間窗內的請求失敗率達到設定的閾值時,系統將通過斷路器直接將請求鏈路斷開。

  • 斷路器增加了穩定性和靈活性,以一個系統,提供穩定性,而系統從故障中恢復,並儘量減少此故障的對性能的影響。它可以幫助快速地拒絕對一個操作,即很可能失敗,而不是等待操作超時(或者不返回)的請求,以保持系統的響應時間。如果斷路器提高每次改變狀態的時間的事件,該信息可以被用來監測由斷路器保護系統的部件的健康狀況,或以提醒管理員當斷路器跳閘,以在打開狀態

降級:當一個方法調用異常時,通過執行另一種代碼邏輯給用戶友好的回****復。大量的用戶訪問時會導致系統崩潰,那我們做服務的降級,一些請求會做一些降級處理比如加粗樣式請稍後查看
在這裏插入圖片描述
4.Openfegin-----hystrix+ribbon的集成 並提供聲明式客戶端
OpenFeign也是運行在消費端的,內置了Ribbon,並集成了hystrix.。由於每次調用RestTemplate API太過於麻煩,OpenFeign將調用的服務端代碼映射到消費端,這樣就可以無縫開發了
5 Hystrix dashboard和turbine
Hystrix dashboard是熔斷監控工具(監控hystrix),通過Hystrix Dashboard我們可以直觀的看到請求響應時間 請求成功率等數據 ,但是Hystrix DashBoard能讓我們彙總多個服務數據並顯示到Hystrix DashBoard上 這個工具就是Turbine.******
6.zuul -------API網關,對服務提供統一的入口,並提供統一權限的驗證****
在這裏插入圖片描述
網關是系統唯一對外的入口,介於客戶端和服務端之間 ,對請求進行鑑權 限流 路由 監控等功能。
ZUUL是從設備和web站店到Netflix流應用到後端的所有請求的前門。ZULL是爲了實現動態路由 監視 彈性 和安全性構建的。
在這裏插入圖片描述
7**.Config----配置中心**
在這裏插入圖片描述
Spring Cloud Config爲分佈式系統中的外部配置提供服務器和客戶端支持。使用Config服務器,可以在中心位置管理所有環境中應用程序的外部屬性。
在這裏插入圖片描述
8.Spring Cloud Bus----消息總線 配置刷新
一般情況下,我們會使用Bus 消息總線+Spring Cloud Config 進行配置的動態刷新用於將服務和服務實例與分佈式消息系統連接在一起的事件總線。在這裏插入圖片描述
9.sleuth+zipkin--------鏈路跟蹤
sleuth主要功能是在分佈式系統中提供追蹤解決方案,併兼容了支持zipkin(提供了鏈路追蹤的可視化功能)
zipkin原理:在服務調用請求和響應中加入ID,表明上下游請求的關係。利用這些信息,可以使可視化的分析服務調用鏈路和服務間的依賴關係
Sleuth是對zipkin的封裝,對應Span Trace等信息的生成,接入http request 以及向zipkin server發送採集信息等全部自動化完成。
執行流程:
1.請求統一通過API網關Zuul來訪問內部服務
2.網關接收到請求後,從註冊中心(Eureka)獲取可用服務
3.由Ribbon進行負載均衡後,分發到後端具體實例
4.微服務通過Feign進行業務處理
5.Hystrix負責處理服務超時熔斷
6.Turbine監控服務間的調用和熔點相關指標
注:
工具框架
Spring Cloud Netflix(集成衆多的Netflix的開源軟件,組成微服務的核心)
*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 for Cloud Foundry 利用 Pivotal Cloudfoundry 集成你的應用程序
Spring Cloud Cloud Foundry Service Broker 爲建立管理雲託管服務的服務代理提供了一個起點
Spring Cloud Cluster 集羣工具,基於 Zookeeper, Redis, Hazelcast, Consul 實現的領導選舉和平民狀態模式的抽象和實現
Spring Cloud Consul 基於 Hashicorp Consul 實現的服務發現和配置管理
Spring Cloud Security 安全控制,在 Zuul 代理中爲 OAuth2 REST 客戶端和認證頭轉發提供負載均衡
Spring Cloud Sleuth 分佈式鏈路監控,SpringCloud 應用的分佈式追蹤系統,和 Zipkin,HTrace,ELK 兼容
Spring Cloud Data Flow 一個雲本地程序和操作模型,組成數據微服務在一個結構化的平臺上
Spring Cloud Stream 消息組件,基於 Redis,Rabbit,Kafka 實現的消息微服務,簡單聲明模型用以在 Spring Cloud 應用中收發消息
Spring Cloud Stream App Starters 基於 Spring Boot 爲外部系統提供 Spring 的集成
Spring Cloud Task 短生命週期的微服務,爲 Spring Booot 應用簡單聲明添加功能和非功能特性
Spring Cloud Task App Starters
Spring Cloud Zookeeper 服務發現和配置管理基於 Apache Zookeeper

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章