ITPub博客

首页 > 数据库 > 数据库开发技术 > OpenFeign阶段性总结-几个核心能力

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

原创 数据库开发技术 作者:服务端技术栈 时间:2023-07-15 17:45:12 0 删除 编辑

前言

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

rpc框架Feign十大可扩展组件你知道哪些?

Feign框架最核心可扩展组件通信Client详解

OpenFeign重试组件Retryer原理

OpenFeign的RequestInterceptor组件你用过哪些场景?

OpenFeign请求日志如何上报到Kafka?

OpenFeign是如何识别SpringMvc注解的?

Ribbon会覆盖OpenFeign的超时配置吗

本文将OpenFeign核心知识做一次汇总总结。

核心知识一 OpenFeign执行流程

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

核心知识二 参数解析

在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部分注解。

核心知识三 负载均衡能力

OpenFeign除了指定目标接口地址请求,也支持和Ribbon集成实现负载均衡选择服务地址。能够动态从配置文件或者远程注册中心拉取服务列表。

核心知识四 请求拦截器

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

public interface RequestInterceptor {

  void apply(RequestTemplate template);
}

核心知识五 重试器

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

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

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

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


原文作者:服务端技术栈;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-03-08

  • 博文量
    97
  • 访问量
    41429