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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 该文章是对OpenFeign核心功能的总结,涵盖了OpenFeign的执行流程、参数解析、负载均衡能力、请求拦截器、重试机制以及其强大的可扩展性。

前言

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

相关文章
|
8月前
|
设计模式 前端开发 Java
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
80 0
|
5月前
|
缓存 负载均衡 监控
Dubbo框架整体认知
该文章主要介绍了Dubbo框架的整体认知,包括Dubbo的概念、产生的背景、解决的问题、架构以及功能特性等。
Dubbo框架整体认知
|
5月前
|
消息中间件 监控 Java
解锁Spring Cloud微服务架构的奥秘:深度剖析拆分原则,打造高内聚低耦合的业务创新引擎!
【8月更文挑战第3天】踏入微服务领域,Spring Cloud以丰富组件助力高效系统构建。微服务拆分需遵循原则确保系统高内聚低耦合且能适应变化。首要原则为单一职责,每个服务专注一个业务功能,降低复杂度并提高可维护性。其次,追求高内聚低耦合以减少服务间影响。围绕业务域拆分有助于保持逻辑清晰及团队协作。处理数据一致性问题时,考虑采用最终一致性模型。Spring Cloud提供Eureka、Zuul/Gateway、Sleuth和Config等工具支持服务发现、路由、跟踪及配置管理,共同构建灵活健壮的微服务架构。
101 2
|
8月前
|
自然语言处理 Cloud Native 开发者
【2023年度技术盘点】「年终盘点后端系列」探索服务架构体系的技术风向,构建微服务核心能力(升级版)
回顾过去的几年,我们目睹了科技界的快速发展,其势头如同一列驶向前方的高速列车。作为后端开发者,我们见证了每一次技术革新所带来的广阔前景。这些创新不仅深刻影响着我们的工作方式,而且不断引领我们走向未来。
162 1
|
传感器 监控 安全
如何理解企业安全能力框架-IPDRR
企业安全能力框架(IPDRR)是美国国家标准与技术研究所(National Institute of Standards and Technology)的网络安全框架(简称NISTCSF )。第一个版本于2014年发布,旨在为寻求加强网咯安全防御的组织提供指导。企业可以根据自身需求加强网络安全防御。
346 0
|
传感器 监控 安全
如何理解企业安全能力框架(IPDRR)
企业安全能力框架(IPDRR)是美国国家标准与技术研究所(National Institute of Standards and Technology)的网络安全框架(简称NISTCSF )。第一个版本于2014年发布,旨在为寻求加强网咯安全防御的组织提供指导。企业可以根据自身需求加强网络安全防御。随着社会数字化转型的深入,网络攻击事件日益增多、破坏力逐步增强。安全方法论也正逐步从"针对威胁的安全防御"向“面向业务的安全治理”(IPDRR)等演进。 IPDRR能力框架模型包括风险识别(Identify)、安全防御(Protect)、安全检测(Detect)、安全响应(Response)和安全
2120 0
|
运维 自然语言处理 监控
微服务系列 1:服务化框架落地的挑战和核心需求
如果公司没有一套规范化的流程和服务化框架,那么公司内部的各个业务团队、部门之间的技术体系就会越走越远,从而会给公司的服务端系统的稳定性和可运维性带来很大的挑战,所以就需要一个统一的微服务架构的实践统一解决当前的架构问题,防止架构腐化,从而提升我们后端系统的稳定性。这也是大多数互联网公司微服务化的意义所在。
|
监控 NoSQL Java
23、一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事(十五)
微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如何从系统架构的角度出发,构建灵活、易扩展的系统,快速应对需求的变化呢?同时随着用户的增加,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。
688 0
23、一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事(十五)
|
数据采集 运维 监控
谈谈典型的数据治理体系框架
以规范的方式来管理企业的数据资产已经被广泛接受和认可,但还需要组织架构、原则、过程和规则,以确保数据管理的各项职能得到正确的履行。
谈谈典型的数据治理体系框架
|
Dubbo 安全 Java
聚焦稳定性,Dubbo 发版规划公布
Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案, 涵盖 Java、Golang 等多种语言 SDK 实现。
聚焦稳定性,Dubbo 发版规划公布