-
包裹請求:使用HystrixCommand(或HystrixObservableCommand)包裹對依賴的呼叫邏輯,每個命令在獨立執行緒中執行。這使用了設計樣式中的“命令樣式”。
-
跳閘機制:當某服務的錯誤率超過一定閾值時,Hystrix可以自動或者手動跳閘,停止請求該服務一段時間。
-
資源隔離:Hystrix為每個依賴都維護了一個小型的執行緒池(或者訊號量)。如果該執行緒池已滿,發往該依賴的請求就被立即拒絕,而不是排隊等候,從而加速失敗判定。
-
監控:Hystrix可以近乎實時地監控執行指標和配置的變化,例如成功、失敗、超時和被拒絕的請求等。
-
回退機制:當請求失敗、超時、被拒絕,或當斷路器開啟時,執行回退邏輯。回退邏輯可由開發人員指定。
-
客戶端會多次請求不同的微服務,增加了客戶端的複雜性。
-
存在跨域請求,在一定場景下處理相對複雜。
-
認證複雜,每個服務都需要獨立認證。
-
難以重構,隨著專案的迭代,可能需要重新劃分微服務。例如,可能將多個服務合併成一個或者將一個服務拆分成多個。如果客戶端直接與微服務通訊,那麼重構將很難實施。
-
某些微服務可能使用了對防火牆/瀏覽器不友好的協議,直接訪問時會有一定的困難。
-
易於監控。可在微服務閘道器收集監控資料並將其推送到外部系統進行分析。
-
易於認證。可在微服務閘道器上進行認證,然後再將請求轉發到後端的微服務,而無須在每個微服務中進行認證。
-
減少了客戶端與各個微服務之間的互動次數。
-
集中管理配置。一個使用微服務架構的應用系統可能會包含成百上千個微服務,因此集中管理配置是非常有必要的。
-
不同環境,不同配置。例如,資料源配置在不同的環境(開發、測試、預釋出、生產等)中是不同的。
-
執行期間可動態調整。例如,可根據各個微服務的負載情況,動態調整資料源連線池大小或熔斷閾值,並且在調整配置時不停止微服務。
-
配置修改後可自動更新。如配置內容發生變化,微服務能夠自動更新配置。綜上所述,對於微服務架構而言,一個通用的配置管理機制是必不可少的,常見做法是使用配置伺服器管理配置。Spring Cloud Bus利用Git或SVN等管理配置、採用Kafka或者RabbitMQ等訊息匯流排通知所有應用,從而實現配置的自動更新並且掃清所有微服務實體的配置。
朋友會在“發現-看一看”看到你“在看”的內容