通过一张大图简单描述下Feign的核心处理流程

目录

  • 一图百文
  • 核心配置参数

1.一张大图说明Feign的核心流程

1.Feign的核心流程 - 图1
前提说明,假设此处由一个eureka-client服务作为client,调用另一个服务eureka-order作为server,则在服务eureka-client中有一个@FeignClient标注的类OrderClient,而server端会提供一个接口,那么发起请求流程如下

  1. 请求从controller中发起,会调用一个FeignClient注解的接口OrderClient
  2. 在这里Feign的核心机制肯定会扫描@FeignClient标注的所有接口,通过动态代理实现该接口
  3. 而在OrderClient中会有多个方法,使用了SpringMVC的注解@RequestMapping或者@GetMapping等,这里会生成urlhttp://SERVICE-ORDER/order/{id}
  4. 接下来会拿到@RequestMapping标注的方法中的请求参数,完善请求url为http://SERVICE-ORDER/order/1?status=2
  5. 接下来就是Ribbon相关的处理逻辑了
    • Ribbon从EurekaClient中获取的对应的ServerList,通过负载均衡算法选取出一台实例192.168.0.0.1:8080
    • 再次替换url为[http://192.168.0.0.1:8080/order/1?status=2](http://192.168.0.0.1:8080/order/1?status=2),此时url已经完成
    • 则通过http组件完成服务的调用,获取到对应的json数据
  6. 将对应的json数据转换成实例bean,返回给请求

2.feign的核心参数

Feign配置的核心参数涉及到以下几个,其中eureka-order是对应的服务名

  1. feign.client.config.eureka-order.connect-timeout=5000
  2. * feign.client.config.eureka-order.read-timeout=5000
  3. feign.client.config.eureka-order.logger-level=full
  4. feign.client.config.eureka-order.decode404=false
  5. feign.client.config.default.connect-timeout=5000
  6. feign.client.config.default.read-timeout=5000
  7. feign.client.config.default.logger-level=full
  8. feign.client.config.default.decode404=false

关于