java B2B2C 多租戶電子商城系統-Spring Cloud常見問題與總結(三)

一.Spring Cloud各組件重試java

Spring Cloud各組件的重試配置。須要JAVA Spring Cloud大型企業分佈式微服務雲構建的B2B2C電子商務平臺源碼 一零三八七七四六二六spring

早期,Spring Cloud的重試機制是比較混亂的-各個組件都有本身的重試機制,例如Ribbon、Feign、Zuul。官方也意識到了這個問題,並對重試相關邏輯進行了改造與簡化。緩存

在Spring Cloud Edgware中,配置重試是很是簡單的。bash

重試步驟服務器

1.重試依賴spring-retry,所以引入重試依賴分佈式

<dependency>
    <groupId>org.springframework.retry</groupId>
    <artifactId>spring-retry</artifactId>
</dependency>
複製代碼

2.配置重試微服務

<client>
  ribbon:
    # 同一實例最大重試次數,不包括首次調用
    MaxAutoRetries: 1 
    # 重試其餘實例的最大重試次數,不包括首次所選的server
    MaxAutoRetriesNextServer: 2 
    # 是否全部操做都進行重試
    OkToRetryOnAllOperations: false
複製代碼

其中是Ribbon Client名稱,表示對指定名稱的Ribbon Client進行重試。若是省略,則表示對全部Ribbon Client都進行重試。spa

3.對於Zuul,重試特性默認關閉。可以使用zuul.retryable=true全局打開重試,也可以使用zuul.routes..retryable=true打開指定重試。code

基於HTTP響應碼重試server

Spring Cloud也支持基於HTTP響應碼進行重試,只需使用相似以下的配置便可:

<clientName>:
  ribbon:
    retryableStatusCodes: 404,502
複製代碼

關閉重試

1.對於其它組件,可配置spring.cloud.loadbalancer.retry.enabled=false.

2.對於zuul,可配置zuul.retryable=false或zuul.routes..retryable=true.

注意點

Hystrix的超時時間必須大於超時的時間,不然,一旦Hystrix超時,就沒辦法繼續重試了。

通常來講,不建議將ribbon.OkToRetryOnAllOperations 設爲true。由於一旦啓用該配置,則表示重試任何操做,包括POST請求,而因爲緩存了請求體,此時可能會影響服務器的資源。 java B2B2C 多租戶電子商城系統

相關文章
相關標籤/搜索