1. 程式人生 > >微服務Springcloud超詳細教程+實戰(十五)

微服務Springcloud超詳細教程+實戰(十五)

承接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 # 設定觸發壓縮的大小下限

注:上面的資料型別、壓縮大小下限均為預設值。