簡要介紹微服務架構及其特點,並引入Spring Cloud與其中一部分核心組件。 ...
一、微服務架構
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來通知服務節點刷新配置的。