springCloud 簡介

1。服務註冊與發現 

通過@EnableEurekaServer註解啓動一個服務註冊中心提供給其他應用進行對話。

最後在主類中通過加上@EnableDiscoveryClient註解,該註解能激活Eureka中的DiscoveryClient實現,才能實現Controller中對服務信息的輸出。

2. 服務消費者

Ribbon是一個基於HTTP和TCP客戶端的負載均衡器。

在應用主類中,通過@EnableDiscoveryClient註解來添加發現服務能力。創建RestTemplate實例,並通過@LoadBalanced註解開啓均衡負載能力。

3.斷路器 Hystrix 

   對延遲和故障提供更強大的容錯能力。Hystrix具備擁有回退機制和斷路器功能的線程和信號隔離,請求緩存和請求打包,以及監控和配置等功能。這樣就不會使得線程因調用故障服務被長時間佔用不釋放,避免了故障在分佈式系統中的蔓延。

 主類中使用@EnableCircuitBreaker註解開啓斷路器功能:

 

Eureka用於服務的註冊於發現,Feign支持服務的調用以及均衡負載,Hystrix處理服務的熔斷防止故障擴散,Spring Cloud Config服務集羣配置中心,

 

服務網關 zuul

當添加API網關後,在第三方調用端和服務提供方之間就創建了一面牆,這面牆直接與調用方通信進行權限控制,後將請求均衡分發給後臺服務端。

提供動態路由,監控,彈性,安全等的邊緣服務。Zuul是Netflix出品的一個基於JVM路由和服務端的負載均衡器。

Zuul大部分功能都是通過過濾器來實現的,這些過濾器類型對應於請求的典型生命週期。

  • PRE: 這種過濾器在請求被路由之前調用。我們可利用這種過濾器實現身份驗證、在集羣中選擇請求的微服務、記錄調試信息等。
  • ROUTING:這種過濾器將請求路由到微服務。這種過濾器用於構建發送給微服務的請求,並使用Apache HttpClient或Netfilx Ribbon請求微服務。
  • POST:這種過濾器在路由到微服務以後執行。這種過濾器可用來爲響應添加標準的HTTP Header、收集統計信息和指標、將響應從微服務發送給客戶端等。
  • ERROR:在其他階段發生錯誤時執行該過濾器。 除了默認的過濾器類型,Zuul還允許我們創建自定義的過濾器類型

Zuu 當某個服務出現異常時,直接返回我們預設的信息。主要繼承ZuulFallbackProvider接口來實現,ZuulFallbackProvider默認有兩個方法,一個用來指明熔斷攔截哪個服務,一個定製返回內容。Zuul 目前只支持服務級別的熔斷,

斷路器的一個作用就是防止故障或者壓力擴散。

註冊中心 Consul

Consul 強一致性(C)帶來的是:

服務註冊相比 Eureka 會稍慢一些。因爲 Consul 的 raft 協議要求必須過半數的節點都寫入成功才認爲註冊成功 Leader 掛掉時,重新選舉期間整個 Consul 不可用。保證了強一致性但犧牲了可用性。

 

Eureka 保證高可用(A)和最終一致性

 

我們使用Spring Cloud Netflix中的Eureka實現了服務註冊中心以及服務註冊與發現;而服務間通過Ribbon或Feign實現服務的消費以及均衡負載;通過Spring Cloud Config實現了應用多環境的外部化配置以及版本管理。爲了使得服務集羣更爲健壯,使用Hystrix的融斷機制來避免在微服務架構中個別服務出現異常時引起的故障蔓延。

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