Ribbon再試行機構とHystrix溶断機構の配置問題
RibbonのタイムアウトとHystrixのタイムアウトの問題は、Ribbonの再試行の際に溶断されないようにするために、Hystrixのタイムアウト時間をRibbonのタイムアウト時間より大きくしなければなりません.さもなければ、Hystrixコマンドがタイムアウトした後、このコマンドは直接に溶断され、再試行機構は何の意味もありません.
だからhystrixのタイムアウト時間はもっと大きいです. (Ribbon ReadTimeout+Ribron Connectimeout)*(MaxAutoRetries+1)*(MaxAutoRetries Next Server+1) 比較的に良くて、具体的に需要を見て配置を行います.
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) 比較的に良くて、具体的に需要を見て配置を行います.