likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 33

前言

OpenFeign本质上是一个使用动态代理技术,使用户可以面向接口开发的基于Http协议的Rpc通信框架,最近一个月的文章都在分析OpenFeign,之前9篇文章已经分析了OpenFeign的整个执行链路涉及到的核心组件,本文将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阶段性总结-几个核心能力

核心知识三 负载均衡能力

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

核心知识四 请求拦截器

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

public interface RequestInterceptor {

  void apply(RequestTemplate template);
}

核心知识五 重试器

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

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

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

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

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

转载自:https://juejin.cn/post/7255945582049067045
评论
请登录