【Spring Cloud】全家桶介紹(一)

  • 2019 年 10 月 24 日
  • 筆記

一、微服務架構

1、微服務架構簡介

  1.1、分散式:不同的功能模組部署在不同的伺服器上,減輕網站高並髮帶來的壓力。

  1.2、集群:多台伺服器上部署相同應用構成一個集群,通過負載均衡共同向外提供服務。

  1.3、微服務:微服務架構模式就是將web應用拆分為一系列小的服務模組,這些模組可以獨立地編譯、部署,並通過各自暴露的API介面通訊,共同組成一個web應用。

  1.4、SpringCloud是基於SpringBoot的一整套微服務框架,提供了一系列可配置的組件,如配置管理服務發現負載均衡熔斷器斷路器智慧路由微代理控制匯流排全局鎖決策競選分散式會話集群狀態管理等。

2、微服務的特點

  • 單一職責:每一個服務模組都對應單一的業務實現
  • 微:服務拆分的顆粒度很小
  • 面向服務:每個服務對外僅暴露服務介面API即可,不關心服務的技術實現,與技術、語言和平台無關
  • 自治:服務間互相獨立、互不干擾
    • 團隊獨立
    • 技術獨立:提供Rest介面,面向服務即可
    • 前後端分離
    • 資料庫分離:每個服務使用自己的數據源
    • 部署獨立:每個服務都是獨立的組件,可復用,可替換,降低服務間的耦合

3、三者的關係

微服務是一種結構理念,設計原則,提供理論指導;

Spring Boot專註於快速、方便集成的單個微服務個體,可以基於Spring Boot快速開發單個微服務;

Spring Cloud是一個基於Spring Boot實現的服務工具治理包,專註於全局的服務治理框架。

二、Spring Cloud

1、Spring Cloud組件架構

 

上圖中各組件的組件和運行流程如下:

    • 所有請求都通過API網關來訪問內部服務;
    • 網關接受請求後,從註冊中心獲取可用服務模組;
    • 由Ribbon進行負載均衡後,分發到後台的具體實例;
    • 各個服務模組之間通過Feign進行通訊處理業務;
    • Hystrix負責處理服務超時熔斷;
    • Turbine監控服務間的調用和熔斷相關指標。

再來看一個具體實例上的Spring Cloud服務流程:

2、Spring Cloud組件簡介

2.1、主要組件簡介

  • Eureka,服務註冊中心
  • Zuul,API服務網關
  • Config,分散式配置中心,支援本地倉庫、SVN、Git、Jar包內配置等模式
  • Dashboard,Hystrix儀錶盤,監控集群模式和單點模式,其中集群模式需要收集器Turbine配合
  • Ribbon,客戶端負載均衡
  • Feign,聲明式服務調用
  • Bus,消息匯流排

2.2、組件主要功能

Eureka和Ribbon,一個註冊服務,一個消費服務。

  Hystrix,為了優化Ribbon,防止整個微服務架構因為某個服務節點的問題導致崩潰,起到保險絲的作用。

Dashboard,給Hystrix統計和展示用,而且監控服務節點的整體壓力和健康情況。

  Turbine,集群收集器,服務於Dashboard。

Zuul,加在整個微服務最前沿的防火牆和代理器,隱藏微服務結點IP埠資訊,加強安全保護。

Config,為了解決所有微服務各自維護各自的配置,設置一個統一的配置中心,方便修改配置。

  Bus是因為config修改完配置後各個結點都要refresh才能生效實在太麻煩,所以交給bus來通知服務節點刷新配置的。

3、SpringCloud全家桶

  1. 首先為了提供微服務之間的發現和註冊,需要服務註冊中心提供註冊與發現功能,採用Eureka組件
  2. 消費者從註冊中心拿到服務提供者的註冊地址資訊列表,為了從中選擇一個提供方,避免流量集中在某台機,需要客戶端負載均衡組件Ribbon
  3. 消費者得到具體提供方的地址資訊後,發起遠程調用,通過聲明式調用組件Feign,將遠程RestFul調用封裝成介面調用。
  4. 在微服務架構中,為了避免某個服務掛掉後引起服務雪崩,以及做到服務端失敗後快速響應,提供了服務熔斷以及降級機制Hystrix組件
  5. 為了對外屏蔽內部服務調用細節,在最前沿加入網關組件,提供流量控制、身份鑒別、負載均衡等安全防護功能,採用API網關Zuul組件
  6. 隨著系統訪問量的增加,為避免單點的註冊中心成為系統性能瓶頸,註冊中心採用Eureka集群方式部署。
  7. 隨著系統擴大,Eureka集群的部署以及服務模組的增多,每個模組維護各自的配置資訊,複雜且容易出錯,引入配置中心SpringCloud Config組件,提供統一的配置資訊管理。
  8. 為了避免每次配置資訊的變更都需要重啟服務才能生效,引入消息匯流排Bus組件,提供無需重啟、實時刷新配置資訊等功能。

 

後續也會按照這個順序逐個介紹各組件,以及各組件demo的開發搭建,最終完成一個SpringCloud全家桶demo……