一張圖瞭解Spring Cloud微服務架構
Spring Cloud作為當下主流的微服務框架,可以讓我們更簡單快捷地實現微服務架構。Spring Cloud並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝遮蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分散式系統開發工具包。Spring Cloud中各個元件在微服務架構中扮演的角色如下圖所示,黑線表示註釋說明,藍線由A指向B,表示B從A處獲取服務。
包裹請求:使用HystrixCommand(或HystrixObservableCommand)包裹對依賴的呼叫邏輯,每個命令在獨立執行緒中執行。這使用了設計模式中的“命令模式”。
跳閘機制:當某服務的錯誤率超過一定閾值時,Hystrix可以自動或者手動跳閘,停止請求該服務一段時間。
資源隔離:Hystrix為每個依賴都維護了一個小型的執行緒池(或者訊號量)。如果該執行緒池已滿,發往該依賴的請求就被立即拒絕,而不是排隊等候,從而加速失敗判定。
監控:Hystrix可以近乎實時地監控執行指標和配置的變化,例如成功、失敗、超時和被拒絕的請求等。
回退機制:當請求失敗、超時、被拒絕,或當斷路器開啟時,執行回退邏輯。回退邏輯可由開發人員指定。
客戶端會多次請求不同的微服務,增加了客戶端的複雜性。
存在跨域請求,在一定場景下處理相對複雜。
認證複雜,每個服務都需要獨立認證。
難以重構,隨著專案的迭代,可能需要重新劃分微服務。例如,可能將多個服務合併成一個或者將一個服務拆分成多個。如果客戶端直接與微服務通訊,那麼重構將很難實施。
某些微服務可能使用了對防火牆/瀏覽器不友好的協議,直接訪問時會有一定的困難。
易於監控。可在微服務閘道器收集監控資料並將其推送到外部系統進行分析。
易於認證。可在微服務閘道器上進行認證,然後再將請求轉發到後端的微服務,而無須在每個微服務中進行認證。
減少了客戶端與各個微服務之間的互動次數。
集中管理配置。一個使用微服務架構的應用系統可能會包含成百上千個微服務,因此集中管理配置是非常有必要的。
不同環境,不同配置。例如,資料來源配置在不同的環境(開發、測試、預釋出、生產等)中是不同的。
執行期間可動態調整。例如,可根據各個微服務的負載情況,動態調整資料來源連線池大小或熔斷閾值,並且在調整配置時不停止微服務。
配置修改後可自動更新。如配置內容發生變化,微服務能夠自動更新配置。綜上所述,對於微服務架構而言,一個通用的配置管理機制是必不可少的,常見做法是使用配置伺服器管理配置。Spring Cloud Bus利用Git或SVN等管理配置、採用Kafka或者RabbitMQ等訊息匯流排通知所有應用,從而實現配置的自動更新並且重新整理所有微服務例項的配置。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31499124/viewspace-2646600/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring Cloud 微服務架構解決方案SpringCloud微服務架構
- Java架構-(一)spring cloud微服務分散式雲架構 - Spring Cloud簡介Java架構SpringCloud微服務分散式
- Spring Cloud系列(一):微服務架構簡介SpringCloud微服務架構
- (一)spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- (一)spring cloud微服務分散式雲架構-Spring Cloud簡介SpringCloud微服務分散式架構
- Spring Cloud 微服務架構進階SpringCloud微服務架構
- 微服務架構:Dubbo VS Spring Cloud微服務架構SpringCloud
- spring cloud微服務架構設計SpringCloud微服務架構
- 詳解Spring Cloud和Docker的微服務架構SpringCloudDocker微服務架構
- Spring Cloud構建微服務架構-spring cloud服務監控中心SpringCloud微服務架構
- spring cloud微服務分散式雲架構Spring Cloud ZuulSpringCloud微服務分散式架構Zuul
- spring cloud微服務分散式雲架構-Spring Cloud NetflixSpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構-Spring Cloud BusSpringCloud微服務分散式架構
- 介紹一下Spring Cloud微服務架構SpringCloud微服務架構
- Spring Cloud 微服務架構下的 WebSocket 解決方案SpringCloud微服務架構Web
- spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- Spring Cloud 微服務專案實現總架構一SpringCloud微服務架構
- Spring Cloud分散式微服務雲架構構建SpringCloud分散式微服務架構
- spring cloud微服務分散式雲架構(一)-spring cloud 服務註冊與發現SpringCloud微服務分散式架構
- Spring Cloud構建微服務架構-服務閘道器SpringCloud微服務架構
- Spring Cloud構建微服務架構-Hystrix服務降級SpringCloud微服務架構
- spring cloud + spring boot + springmvc+mybatis微服務雲架構CloudSpring BootSpringMVCMyBatis微服務架構
- Spring Cloud Spring Boot mybatis分散式微服務雲架構CloudSpring BootMyBatis分散式微服務架構
- spring cloud微服務分散式雲架構-Spring Cloud Config環境庫SpringCloud微服務分散式架構
- spring cloud微服務架構-Eureka保護機制SpringCloud微服務架構
- spring cloud微服務雲架構-用java使用 redlockSpringCloud微服務架構Java
- 基於Spring Boot和Spring Cloud實現微服務架構Spring BootCloud微服務架構
- spring cloud微服務分散式雲架構 - Spring Cloud整合專案簡介SpringCloud微服務分散式架構
- 一文帶你瞭解微服務架構和設計(多圖)微服務架構
- Spring Cloud雲服務架構 - 企業分散式微服務雲架構構建SpringCloud架構分散式微服務
- Spring Cloud Spring Boot mybatis分散式微服務雲架構-hystrix引數詳解CloudSpring BootMyBatis分散式微服務架構
- spring cloud微服務分散式雲架構--hystrix的使用SpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構-Gateway入門SpringCloud微服務分散式架構Gateway
- spring cloud微服務分散式雲架構-Commons 普通抽象SpringCloud微服務分散式架構抽象
- spring cloud springboot mybatis 分散式 微服務 架構原始碼CloudSpring BootMyBatis分散式微服務架構原始碼
- spring cloud + spring boot + springmvc+mybatis分散式微服務雲架構CloudSpring BootSpringMVCMyBatis分散式微服務架構
- 整合spring cloud雲服務架構 - 企業分散式微服務雲架構構建SpringCloud架構分散式微服務
- (三)spring cloud微服務分散式雲架構 - Spring Cloud整合專案簡介SpringCloud微服務分散式架構