Spring Cloud

https://www.springcloud.cc/spring-cloud-dalston.html
Spring Cloud官方中文版本檔案 感覺夠自己學一年 看到文檔就頭大 令人頭禿

特性

Spring Cloud專注於提供良好的開箱即用經驗的典型用例和可擴展性機制覆蓋。

  • 分佈式/版本化配置
  • 服務註冊和發現
  • 路由
  • service - to - service調用
  • 負載均衡
  • 斷路器
  • 分佈式消息傳遞

分佈式/版本化配置

在分佈式系統中,由於服務數量巨多,爲了方便服務配置文件統一管理,實時更新,所以需要分佈式配置中心組件。在Spring Cloud中,有分佈式配置中心組件spring cloud config ,它支持配置服務放在配置服務的內存中(即本地),也支持放在遠程Git倉庫中。在spring cloud config 組件中,分兩個角色,一是config server,二是config client。

詳情可見:https://blog.csdn.net/forezp/article/details/81041028

服務註冊和發現

服務發現:Eureka客戶端

服務發現是基於微服務架構的關鍵原則之一。嘗試配置每個客戶端或某種形式的約定可能非常困難,可以非常脆弱。Netflix服務發現服務器和客戶端是Eureka。可以將服務器配置和部署爲高可用性,每個服務器將註冊服務的狀態複製到其他服務器。

當客戶端註冊Eureka時,它提供關於自身的元數據,例如主機和端口,健康指示符URL,主頁等。Eureka從屬於服務的每個實例接收心跳消息。如果心跳失敗超過可配置的時間表,則通常將該實例從註冊表中刪除。

核心註解@EnableEurekaClient 標識客戶端

Eureka服務器沒有後端存儲,但是註冊表中的服務實例都必須發送心跳以保持其註冊更新(因此可以在內存中完成)。客戶端還具有eureka註冊的內存緩存(因此,他們不必爲註冊表提供每個服務請求)。

默認情況下,每個Eureka服務器也是一個Eureka客戶端,並且需要(至少一個)服務URL來定位對等體。如果您不提供該服務將運行和工作,但它將淋浴您的日誌與大量的噪音無法註冊對等體。

核心註解@EnableEurekaServer標識服務端

路由

路由器和過濾器:Zuul

路由在微服務體系結構的一個組成部分。例如,/可以映射到您的Web應用程序,/api/users映射到用戶服務,並將/api/shop映射到商店服務。Zuul是Netflix的基於JVM的路由器和服務器端負載均衡器。

Netflix使用Zuul進行以下操作:

  • 認證
  • 洞察
  • 壓力測試
  • 金絲雀測試
  • 動態路由
  • 服務遷移
  • 負載脫落
  • 安全
  • 靜態響應處理
  • 主動/主動流量管理

功能核心註解:EnableZuulProxy

service - to - service調用

基於Eureka服務註冊功能 註冊完成後就可以註冊並使用主機VM的IP地址進行直接的服務到服務調用。

負載均衡

Ribbon是一個客戶端負載均衡器,它可以很好地控制HTTP和TCP客戶端的行爲。Feign已經使用Ribbon,所以如果您使用@FeignClient,則本節也適用。

Ribbon中的中心概念是指定客戶端的概念。每個負載平衡器是組合的組合的一部分,它們一起工作以根據需要聯繫遠程服務器,並且集合具有您將其作爲應用程序開發人員(例如使用@FeignClient註釋)的名稱。Spring Cloud使用RibbonClientConfiguration爲每個命名的客戶端根據需要創建一個新的合奏作爲ApplicationContext。這包含(除其他外)ILoadBalancer,RestClient和ServerListFilter。

核心註解@RibbonClient
也可以在RestTemplate類的構造器上標識@Bean和@LoadBalanced

斷路器

在微服務架構中,根據業務來拆分成一個個的服務,服務與服務之間可以相互調用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign來調用。爲了保證其高可用,單個服務通常會集羣部署。由於網絡原因或者自身的原因,服務並不能保證100%可用,如果單個服務出現問題,調用這個服務就會出現線程阻塞,此時若有大量的請求涌入,Servlet容器的線程資源會被消耗完畢,導致服務癱瘓。服務與服務之間的依賴性,故障會傳播,會對整個微服務系統造成災難性的嚴重後果,這就是服務故障的“雪崩”效應。

爲了解決這個問題,業界提出了斷路器模型。

應用程序可以使用Spring Cloud Netflix項目提供的Hystrix斷路器將這個啓動器包含在項目pom.xml:spring-cloud-starter-hystrix中。Hystrix不依賴於Netflix Discovery Client。@EnableHystrix註釋應放置在配置類(通常是主類)上。那麼方法可以用@HystrixCommand註釋來被斷路器保護。

分佈式消息傳遞

官方定義 Spring Cloud Stream 是一個構建消息驅動微服務的框架。

應用程序通過 inputs 或者 outputs 來與 Spring Cloud Stream 中binder 交互,通過我們配置來 binding ,而 Spring Cloud Stream 的 binder 負責與中間件交互。所以,我們只需要搞清楚如何與 Spring Cloud Stream 交互就可以方便使用消息驅動的方式

基於RabbitMQ
核心註解@EnableBinding
@Inpit
@Output
定義輸入 輸出 通過配置文件限定 名稱來進行消息的訂閱及發佈

詳情可見: https://www.jianshu.com/p/fb7d11c7f798

後面我會一個一個拆開來構建項目詳細說明 感覺足夠自己學習好久

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