Ribbon再試行機構とHystrix溶断機構の配置問題

712 ワード

RibbonのタイムアウトとHystrixのタイムアウトの問題は、Ribbonの再試行の際に溶断されないようにするために、Hystrixのタイムアウト時間をRibbonのタイムアウト時間より大きくしなければなりません.さもなければ、Hystrixコマンドがタイムアウトした後、このコマンドは直接に溶断され、再試行機構は何の意味もありません.
 
service-hi:
  ribbon:
    ReadTimeout: 2000
    ConnectTimeout: 1000
    MaxAutoRetries: 1
    MaxAutoRetriesNextServer: 1


hystrix:
  command:
    default:
      execution:
        timeout:
          enabled: true
        isolation:
          thread:
            timeoutInMilliseconds: 8000
上記の構成から、ribbonのタイムアウトは2000で、要求がタイムアウトしたら、この例は1回やり直して、更新例は1回やり直します.
だからhystrixのタイムアウト時間はもっと大きいです. (Ribbon ReadTimeout+Ribron Connectimeout)*(MaxAutoRetries+1)*(MaxAutoRetries Next Server+1)  比較的に良くて、具体的に需要を見て配置を行います.