spring cloud单点微服务超时重试与dubbo单点微服务超时重试比较图解
使用dubbo作为rpc的微服务,一般的系统都不需要考虑重试,所以一些请求连接超时、请求处理超时都是采用默认的配置,但是实际情况上很多情况,数据库压力特别大的时候,数据库服务器的内存和cpu资源占用率很高,sql执行时间可能会超过30秒,一般这个情况下tomcat服务端程序或springboot程序是不会报错的,程序还是正常执行了,但是nginx那边已经报502超时了,把这个锅背了。在小公司创业初期,是没有那么资源服务器,所以只能把nginx的http反向代理超时时间设置为更长时间,比如60s,tomcat服务端程序或springboot程序的connectionTimeout设置成60s,默认情况一般人都是set为30000毫秒。dubbo的重试不同机器上服务实例。
spring cloud的超时重试熔断机制,zuulfiter、ribbon、fegin都是有自己重试配置的,默认是关闭,需要配置打开。个人觉得nginx的处理时间可以加长为90s,zuulfiter作为api 网关设置连接超时为1s,处理时间为60s,打开熔断为60s,使用ribbon组件开启重试,连接超时时间设置10s,处理时间设置为30s,重试一次,重试不同ip上的服务实例。其实在一些仅仅操作关系型数据库的系统,所以耗时间就是sql执行,耗时间会引起很多应用服务器的问题。