6

01.Feign的核心流程

 4 years ago
source link: http://sunliangliang.com/?p=39
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

01.Feign的核心流程

发表于 2021-03-04 | 分类于 源码共读计划 | 0 | 阅读次数 15

Feign的核心流程

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

  • 核心配置参数

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

前提说明,假设此处由一个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,此时url已经完成
    • 则通过http组件完成服务的调用,获取到对应的json数据
  6. 将对应的json数据转换成实例bean,返回给请求

2.feign的核心参数

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

feign.client.config.eureka-order.connect-timeout=5000
* feign.client.config.eureka-order.read-timeout=5000
feign.client.config.eureka-order.logger-level=full
feign.client.config.eureka-order.decode404=false

feign.client.config.default.connect-timeout=5000
feign.client.config.default.read-timeout=5000
feign.client.config.default.logger-level=full
feign.client.config.default.decode404=false
坚持有质量的创作,您的支持将支持我继续创作!

Recommend

  • 43
    • www.cnblogs.com 6 years ago
    • Cache

    打造适用于c#的feign - KavinDavid

    打造适用于c#的feign   之前因为工作原因使用sp...

  • 34
    • www.tuicool.com 5 years ago
    • Cache

    Feign【入门】

    feign简介: feign是一种声明式,模板化的HTTP客户端,spring cloud对feign进行了增强,使其支持SpringMvc的相关注解,并整合了ribbon做负载均衡。在spring cloud中使用feign做HTTP远程服务请求,可以做到就像调用本地方法一样...

  • 31
    • segmentfault.com 5 years ago
    • Cache

    撸了一个 Feign 增强包

    前言 最近准备将公司的一个核心业务系统用 Java 进行重构,大半年没写 Java , J...

  • 10

    Feign Api返回值为void时获取 Response信息macOS 10.15.6 jdk1.8 Springboot2.3.1RELEASE spring-cloud-starter-openfeign2.2.3.RELEASEA、B 两个服务之间通过 Feign Api 进行通信, A 提供的 Api 包中包含一些返回值为...

  • 12

    Maintainable error handling with Feign clients? Not a dream anymore  October 1, 2020October 1, 2020 / by  Author Arnold Galovics Over the last couple of years, I’ve been using Fe...

  • 12
    • www.briansdevblog.com 4 years ago
    • Cache

    Service Integration with Netflix Feign and Ribbon

    The guys at Netflix have developed and open sourced (among many other things) Feign and Ribbon.  These libraries can help you as a developer, to build robust, fault tolerant service integrations.  Best of all, they’ve been tested in the wild...

  • 12
    • sunliangliang.com 4 years ago
    • Cache

    04.Feign请求处理流程

    Feign请求处理流程 前面已经学习完了@Feign代理类的生成,接下来完成基于Feign的请求流程的处理,一个请求过来怎么去获取请求url 基于Fein进行请求的整体流程1.Feign的请求处理流程 基于上篇的内容我们已经知道我...

  • 6
    • sunliangliang.com 4 years ago
    • Cache

    3.基于代理模式构建Feign.Builder

    基于代理模式构建Feign.Builder FeignClientFactoryBean 上一篇文章中,我们完成了Feign相关包以及组件扫描相关源码的阅读,这一节开始进行FeignClient相关组件的初始化,即通过代理模式生成相关的Bean.入口类为

  • 7

    Spring Cloud之Finchley版学习(十)-Feign深入 作者: wencst 分类: JAVA,微服务...

  • 8

    Spring Cloud之Finchley版学习(九)-Feign 作者: wencst 分类: JAVA,微服务...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK