springcloud詳解及核心組件

Spring Cloud 是一套完整的微服務解決方案,基於 Spring Boot 框架,準確的說,它不是一個框架,而是一個大的容器,它將市面上較好的微服務框架集成進來,從而簡化了開發者的代碼量。

Springboot主要服務於單體項目,小項目能夠快速開發。

springcloud 主要是分佈式項目,大型微服務項目首先考慮。

Spring Cloud 是什麼?

Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分佈式系統的開發,比如服務發現、服務網關、服務路由、鏈路追蹤等。Spring Cloud 並不重複造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從而減少了各模塊的開發成本。

Spring Cloud 現狀
目前,國內使用 Spring Cloud 技術的公司並不多見,不是因爲 Spring Cloud 不好,主要原因有以下幾點:

Spring Cloud 中文文檔較少,出現問題網上沒有太多的解決方案。
國內創業型公司技術老大大多是阿里系員工,而阿里系多采用 Dubbo 來構建微服務架構。
大型公司基本都有自己的分佈式解決方案,而中小型公司的架構很多用不上微服務,所以沒有采用 Spring Cloud 的必要性。
但是,微服務架構是一個趨勢,而 Spring Cloud 是微服務解決方案的佼佼者,這也是作者寫本系列課程的意義所在。

Spring Cloud 優缺點
其主要優點有:

集大成者,Spring Cloud 包含了微服務架構的方方面面。
約定優於配置,基於註解,沒有配置文件。
輕量級組件,Spring Cloud 整合的組件大多比較輕量級,且都是各自領域的佼佼者。
開發簡便,Spring Cloud 對各個組件進行了大量的封裝,從而簡化了開發。
開發靈活,Spring Cloud 的組件都是解耦的,開發人員可以靈活按需選擇組件。


接下來,我們看下它的缺點:

項目結構複雜,每一個組件或者每一個服務都需要創建一個項目。
部署門檻高,項目部署需要配合 Docker 等容器技術進行集羣部署,而要想深入瞭解 Docker,學習成本高。
Spring Cloud 的優勢是顯而易見的。因此對於想研究微服務架構的同學來說,學習 Spring Cloud 是一個不錯的選擇。

核心組件

 1,eureka 註冊中心。

   1)一個eureka服務也是客戶端,可以自己註冊自己,也可以相互註冊形成高可用集羣。

   2)eureka是客戶端發現服務,客服端自己過濾,和選擇負載均衡策略。

           3)eureka與註冊服務器保持通信是通過心跳檢測機制。

2,ribbon負載均衡器,三個方法核心。

          1)獲取所有服務列表。

   2)rule。選擇服務器規則(默認輪詢)

           3)監聽可用服務列表

3,通訊方式。

           1)restTempte 請求

   2)feign 請求。

 4,config 統一配置中心。

           1)config-server從遠端git服務器拉取配置到本地的git.

    2) 調用端config-client,在註冊中心獲取config-server服務。

    注意把application.yml改成bootstrap.yml。

    3)獲取方式 ,看日誌或者文檔(lable/name-dev.yml)

 5,bus動態配置刷新。用於config自動刷新。

    1)config-server和config-client配置bus和MQ。

    2) 遠端git服務配置 webhook回調bus.

    3)使用就在pom.xml配置bus的maven。

6,zuul服務網管。

   1)性能比nginx差。

   2)路由+過濾器 =zuul

   3) 核心是一系列的過濾器。

               前置(pre)

    後置(post)

       路由(Route)

    錯誤(Error)

            4)限流(RateLimiter)令牌算法,放在fiter優先級最高。也可以配合nginx分流用。

            5)可以鑑權和統一跨域配置(nginx也可以做跨域)。

 7,hystrix服務容錯。服務之間調用會有各種問題。這個組件用在所有調用方。

  1)爲服務器提供容錯保護。在資源不夠或者業務壓力大的時候使用優先核心服務。主要四點作用

    服務降級

    依賴隔離(線程池隔離)

    服務熔斷

    監控(hystrix-dashboard)

  2)使用:

    a,通過hystrixCommand註解指定請求。

    b,fallbavkMethed實現降級後的實現邏輯。

       3) 超時降級默認1秒。所有要根據具體業務,和調用鏈具體配置。

  4)服務熔斷主要四個配置。

    設置熔斷爲true

    請求數(統計單位)

    熔斷時間(這段時間請求都執行fallback)

    錯誤百分比

  5)dashboard監控要配合使用。監控熔斷,界面監控。

8,dashboard服務監控界面。給hystrix提供界面監控。

9,sleuth鏈路監控。主要是唯一標識對應一個請求,和一個請求的服務。

      1,日誌打印唯一請求標識。

    2,配置把數據推向zipkin

   3,抽樣百分比(開發環境設置爲1)

10,zipkin鏈路監控可視化。

  1,主要界面可視化查看鏈路調用情況。

  2,使用的時候,一般pom.xml配置zipkin,包含了sleuth。

 

11,SpringCloudGateway

Spring Cloud Gateway是Spring官方基於Spring 5.0,Spring Boot 2.0和Project Reactor等技術開發的網關,Spring Cloud Gateway旨在爲微服務架構提供一種簡單而有效的統一的API路由管理方式。Spring Cloud Gateway作爲Spring Cloud生態系中的網關,目標是替代Netflix ZUUL,其不僅提供統一的路由方式,並且基於Filter鏈的方式提供了網關基本的功能,例如:安全,監控/埋點,和限流等

後續一段時間會不定時更新一些springcloud的東西,有些東西也是借鑑來再改改的整合成一套適合自己的springcloud學習方案,供大家參考
 

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