微服務Springcloud超詳細教程+實戰(十五)
阿新 • • 發佈:2019-01-08
承接Javaweb、微信小程式、微信公眾號專案。優秀團隊,效率最先。聯絡QQ:1172796094 微信:bai631520
負載均衡
Feign中本身已經集成了Ribbon依賴和自動配置:
因此我們不需要額外引入依賴,也不需要再註冊RestTemplate
物件。
另外,我們可以像上節課中講的那樣去配置Ribbon,可以通過ribbon.xx
來進行全域性配置。也可以通過服務名.ribbon.xx
來對指定服務配置:
全域性配置:對所有服務都生效
ribbon: ConnectTimeout: 250 # 連線超時時間(ms) ReadTimeout: 1000 # 通訊超時時間(ms) OkToRetryOnAllOperations: true # 是否對所有操作重試 MaxAutoRetriesNextServer: 1 # 同一服務不同例項的重試次數 MaxAutoRetries: 1 # 同一例項的重試次數
區域性配置:只對當前服務生效
user-service:
ribbon:
ConnectTimeout: 250 # 連線超時時間(ms)
ReadTimeout: 1000 # 通訊超時時間(ms)
OkToRetryOnAllOperations: true # 是否對所有操作重試
MaxAutoRetriesNextServer: 1 # 同一服務不同例項的重試次數
MaxAutoRetries: 1 # 同一例項的重試次數
Hystix支援
Feign預設也有對Hystix的整合:
只不過,預設情況下是關閉的。我們需要通過下面的引數來開啟:
feign: hystrix: enabled: true # 開啟Feign的熔斷功能
但是,Feign中的Fallback配置不像Ribbon中那樣簡單了。
1)首先,我們要定義一個類,實現剛才編寫的UserFeignClient,作為fallback的處理類
@Component public class UserFeignClientFallback implements UserFeignClient { @Override public User queryUserById(Long id) { User user = new User(); user.setId(id); user.setName("使用者查詢出現異常!"); return user; } }
2)然後在UserFeignClient中,指定剛才編寫的實現類
@FeignClient(value = "user-service", fallback = UserFeignClientFallback.class)
public interface UserFeignClient {
@GetMapping("/user/{id}")
User queryUserById(@PathVariable("id") Long id);
}
3)重啟測試:
我們關閉user-service服務,然後在頁面訪問:
請求壓縮(瞭解)
GZIP壓縮:
Spring Cloud Feign 支援對請求和響應進行GZIP壓縮,以減少通訊過程中的效能損耗。通過下面的引數即可開啟請求與響應的壓縮功能:
feign:
compression:
request:
enabled: true # 開啟請求壓縮
response:
enabled: true # 開啟響應壓縮
同時,我們也可以對請求的資料型別,以及觸發壓縮的大小下限進行設定:
feign:
compression:
request:
enabled: true # 開啟請求壓縮
mime-types: text/html,application/xml,application/json # 設定壓縮的資料型別
min-request-size: 2048 # 設定觸發壓縮的大小下限
注:上面的資料型別、壓縮大小下限均為預設值。