OpenFeign阶段性总结几个核心能力

2023年 7月 15日 28.6k 0

前言

OpenFeign本质上是一个使用动态代理技术,使用户可以面向接口开发的基于Http协议的Rpc通信框架,最近一个月的文章都在分析OpenFeign,之前9篇文章已经分析了OpenFeign的整个执行链路涉及到的核心组件,本文将OpenFeign核心知识做一次汇总总结。

1、面试官:OpenFeign十大可扩展组件你知道哪些?

2、OpenFeign第一个可扩展组件通信Client详解

3、OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)

4、OpenFeign集成Ribbon负载均衡-过滤和选择服务核心实现

5、OpenFeign重试组件Retryer原理

6、OpenFeign请求拦截器组件RequestInterceptor原理与使用场景

7、OpenFeign日志组件Logger原理与应用

8、OpenFeign是如何识别RequestMapping注解的?

9、Ribbon的超时配置会覆盖OpenFeign的超时配置吗

核心知识一 OpenFeign执行流程

如下图,OpenFeign核心流程中包含从参数解析开始到发起通信,最后到响应解码,其中最核心的能力是通信,在通信能力基础之上,提供了负载均衡,请求拦截,请求参数转换,响应解码,重试的能力。

image.png

核心知识二 参数解析

在Spring或者SpringBoot项目中,我们一般使用下面的形式定义OpenFeign的Client

@FeignClient(name = "fox-server", url = "http://127.0.0.1")
public interface FeignClientApi {

        @RequestMapping(path = "/get")
        String getName(@RequestParam(name = "name") String name);
}

通过SpringMvc注解也能实现OpenFeign通信的能力,是因为OpenFeign有Constract规范并且对SpringMvc注解进行了解析实现,使得SpringMvc用户可以无缝使用OpenFeign。
OpenFeign不仅支持自身的注解,也对Spring Mvc注解进行了增强,支持解析SpringMvc部分注解。

image.png

核心知识三 负载均衡能力

OpenFeign借助Ribbon实现负载均衡。能够动态从配置文件或者远程注册中心拉取服务列表。

核心知识四 请求拦截器

OpenFeign拦截器可以实现修改请求头,请求参数的目的,达到公用参数传递或者统一压缩,加解密的目的

public interface RequestInterceptor {

  void apply(RequestTemplate template);
}

核心知识五 重试器

OpenFeign捕获RetryableException异常支持重试,重试次数为最大重试次数-1

核心知识六 OpenFeign可扩展性能力强

在OpenFeign整个执行流程中涉及到的组件,几乎都可以被覆盖,也就是能够自定义扩展,只要实现他的接口即可。比如最底层的通信Client组件,也可以在Okhttp,httpclient之间切换。

扩展性这点不得不服,真正做到了对扩展开放对修改关闭,你能想到的扩展点都支持。

image.png

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论