4.调用关系及超时说明

  1. 调用关系图类似如下:
    在这里插入图片描述
    1. User发起http请求,这里省略了controller的一层,只为表明RestTemplate的调用过程
    2. Hystrix采用aop拦截的方式,对标注HystrixCommand的方法进行拦截
    3. RestTemplate执行内部的拦截链,但是此拦截并非aop,只是普通的java连接链,类似于ServletFilter
    4. Ribbon执行负载均衡,选择合适的server(包含ip+port)关键信息
    5. 5~6调用返回
    6. RestTemplate委托http客户端发起真正的http请求
    7. http客户端发起真正的http请求
    8. 9~12调用返回
  2. 超时说明
    上面的调用过程中有三个超时设置,分别是hystrix超时,RestTemplate超时和ribbon的超时(其实为http客户端超时)
    那么这三个超时设为多少:
    1. 首先hystrix为最外部超时,其有多重熔断触发机制,代码异常,线程池/信号量跑满等。理论上hystrix超时应该在满足业务容忍度上取最大时间,timeout >= retry * (conntimeout+readtimeout):
      如果设置的比RestTemplate+ribbon的小,当其余两个响应慢时,均会被hystrix中断;
      如果设置的比RestTemplate+ribbon的大,那么hystrix永远不会触发超时中断降级,只可能方法抛出异常(超时等)进行降级;
    2. 其次RestTemplate超时本质为http客户端远程调用超时设置,这个设置为最大容忍远程服务的响应时间即可。
    3. 最后ribbon超时与RestTemplate超时类似,都是http客户端的超时,只不过,ribbon的超时配置在使用feign时才有效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值