1. 程式人生 > >Spring Cloud核心元件的理解

Spring Cloud核心元件的理解

原文:https://mp.weixin.qq.com/s/mOk0KuEWQUiugyRA3-FXwg
上述文章中,簡明扼要地講述了spring cloud中五大核心元件Eureka、Ribbon、Feign、Hystrix、Zuul的功能和使用場景,我看完後感覺收穫很多,所以在這裡記錄一下。

  • Eureka是微服務架構中的註冊中心,專門負責服務的註冊與發現。Eureka Client元件專門負責將服務的資訊註冊到Eureka Server中,而Eureka Server是一個註冊中心,裡面有一個登錄檔,儲存了各服務所在的機器和埠號。各個服務啟動時,Eureka Client都會將服務註冊到Eureka Server,並且Eureka Client還可以反過來從Eureka Server拉取登錄檔,從而知道其他服務在哪。
  • Feign的關鍵機制是使用了動態代理。如果你對某個介面定義了@FeignClient註解,Feign就會針對這個介面建立一個動態代理;接著你要是呼叫那個介面,本質就是會呼叫Feign建立的動態代理;Feign的動態代理會根據你在介面上的@RequestMapping等註解,來動態構造出你要請求的服務的地址;針對這個地址,發起請求,解析相應;
  • Ribbon的作用是負載均衡,會幫你在每次請求時選擇一臺機器,均勻的把請求分發到各個機器上,預設使用Round Robin輪詢演算法;
  • Hystrix是隔離、熔斷以及降級的一個框架。發起請求是通過Hystrix的執行緒池來走的,不同的服務走不同的執行緒池,實現了不同服務呼叫的隔離,避免了服務雪崩的問題;
  • Zuul也就是微服務閘道器。這個元件是負責網路路由的,一般微服務架構中都必然設計一個閘道器在裡面,像android、ios、pc前端、微信小程式、h5等,不用關心後端有幾百個服務,就知道有一個閘道器,所有請求都往閘道器走,閘道器會根據請求中的一些特徵,將請求轉發給後端的各個服務。有一個閘道器之後,還有很多好處,比如做統一的降級、限流、認證授權、安全等等。

下面Spring Cloud的5個核心元件通過一張圖串聯起來:
在這裡插入圖片描述

Ribbon和Feign以及Eureka緊密協作,完成工作的,具體如下:

  • 首先Ribbon會從Eureka Client裡獲取到對應的服務登錄檔,也就知道了所有的服務都部署在哪些機器上,在監聽哪些埠號;
  • 然後Ribbon就可以使用預設的Round Robin演算法,從中選擇一臺機器;
  • Feign就會針對這臺機器,構造併發起請求