最近温习SpringMVC的基础知识,是基于eclipse开发工具上预计划从基础动手,加深印象万事都鈳以hello world,万事都是从hello world 开始的特此记录下。
这里需要注意的是 suffix 属性对应的值,最好要以 / 结尾这样 controller 层的试图名 前面,就不需要 / 打头了
最近温习SpringMVC的基础知识,是基于eclipse开发工具上预计划从基础动手,加深印象万事都鈳以hello world,万事都是从hello world 开始的特此记录下。
这里需要注意的是 suffix 属性对应的值,最好要以 / 结尾这样 controller 层的试图名 前面,就不需要 / 打头了
Feign是一个声明式的web service客户端它使得編写web service客户端更为容易。创建接口为接口添加注解,即可使用FeignFeign可以使用Feign注解或者JAX-RS注解,还支持热插拔的编码器和解码器Spring Cloud为Feign添加了Spring MVC的注解支持,并整合了Ribbon和Eureka来为使用Feign时提供负载均衡
|
在前面的内容我们分别单独梳理了Feign、Hystrix及Ribbon三者常见的配置,针对各自的特性功能配置我们并沒有异议但是我们也看到它们都有针对微服务超时的配置,而在开启熔断器功能后这些超时配置会影响到熔断器及服务降级逻辑的行為,那么它们之间超时的配置如下:
如上图所示在Spring Cloud中使用Feign进行微服务调用分为两层:Ribbon的调用及Hystrix的调用。所以Feign的超时时间就是Ribbon和Hystrix超时时间嘚结合而如果不启用Hystrix则Ribbon的超时时间就是Feign的超时时间配置,Feign自身的配置会被覆盖
而如果开启了Hystrix,那么Ribbon的超时时间配置与Hystrix的超时时间配置則存在依赖关系因为涉及到Ribbon的重试机制,所以一般情况下都是Ribbon的超时时间小于Hystrix的超时时间
那么Ribbon和Hystrix的超时时间配置的关系具体是什么是aop呢如下:
而Ribbon的重试次数的计算方式为:
以上图中的Ribbon配置为例子,Ribbon的重试次数=1+(1+1+1)*()所以Hystrix的超时配置应该>=160000毫秒。在Ribbon超时但Hystrix没有超时的情况下Ribbon便會采取重试机制;而重试期间如果时间超过了Hystrix的超时配置则会立即被熔断(fallback)。