項目地址: /liaozb1996/spring-cloud-in-action
配置管理原則:
Spring Cloud Config 後端存儲:文件系統、Git
標註引導類:
配置服務器配置:
創建配置文件:
訪問配置:
客戶端配置:
spring-cloud-config-client 依賴
boostrap.properties
刷新屬性:
服務發現至關重要的原因:
傳統服務位置解析(DNS+負載均衡器)的缺點:
服務發現實現組件:
構建 Eureka 服務:
標註引導類:
單機模式配置 :
每次註冊服務都需要等待30秒,因為 eureka 需要連續接收 3 個心跳包才能使用該服務。
緩存註冊表後,客戶端每隔30秒會重新到 eureka 刷新註冊表。
服務註冊:
解決多網卡問題:
通過API獲取註冊表信息:(設置請求頭 Accept:application/json )
/Netflix/Hystrix/wiki/Configuration
使用 Hystrix 默認配置對遠程調用進行管理:
超時配置: execution.isolation.thread.timeoutInMilliseconds
配置後備策略:後備方法必須在同壹類中並且具有相同的方法簽名
配置艙壁:
Hystrix 斷路的策略:
Hystrix 有三個級別的配置:
類級別配置:
Hystrix 有兩個隔離策略:
如果使用 TREAD 策略,並且要將父線程的上下文傳遞到子線程中,需要自定義 HystrixConcurrencyStrategy
Zuul 提供的功能:路由映射、構建過濾器
依賴:zuul、eureka-client
標註引導類:
zuul 配置:
?
Zuul路由映射機制:
查詢路由: http://localhost:8080/actuator/routes
調用服務: http://localhost:8080/license/license/1 (第壹個 license 是服務ID,/license/1 是請求路徑)
使用服務發現手動映射路由:
添加前綴:
手動配置靜態路由:前面都是基於 eureka 上的服務id進行路由映射的,而這裏是直接配置URL
Git + http://localhost:8080/actuator/refresh (POST)
Zuul 使用 Hystrix 和 Ribbon
Zuul 支持三種過濾器類型:前置過濾器、後置過濾器、路由過濾器
前置過濾器:向通過網關的請求添加 tracking-id
這裏使用了 Zuul 的 RequestContext:
Zuul 不允許直接修改請求頭部,這裏通過 addZuulRequestHeader 添加頭部信息,在調用遠程服務會自動合並
為了方便應用獲取 tracking-id,這裏使用 Filter 獲取請求頭信息並映射到 UserContext 中:
為了在服務間調用傳播 tracking-id 這裏需要定義壹個 和 RestTemplate:
項目中 license 會遠程調用 orgnization,這裏需要在兩個微服務配置 Filter