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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 该文章是对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

相关文章
|
16天前
|
消息中间件 Java 开发者
【颠覆想象】Spring Boot重构未来:解耦与隔离,打造坚不可摧的微服务帝国!
【8月更文挑战第29天】本文通过构建电子商务平台的具体案例,深入探讨了如何利用 Spring Boot 实现服务间的解耦与隔离。文章详细介绍了依赖注入、模块化设计及异步通信等关键技术,并提供了具体代码示例。通过依赖注入,对象间耦合得以降低;模块化设计使各功能域独立,降低系统复杂度;异步通信则利用消息队列提升系统吞吐量与响应速度。这些方法不仅优化了系统架构,还加快了开发进程。
37 0
|
4月前
|
设计模式 前端开发 Java
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
60 0
|
10月前
|
XML 数据库 数据格式
微服务技术系列教程(15) - SpringCloud - 互联网网站架构演变过程
微服务技术系列教程(15) - SpringCloud - 互联网网站架构演变过程
68 0
|
9天前
|
Cloud Native 安全 Java
Micronaut对决Spring Boot:谁是微服务领域的王者?揭秘两者优劣,选对框架至关重要!
【9月更文挑战第5天】近年来,微服务架构备受关注,Micronaut和Spring Boot成为热门选择。Micronaut由OCI开发,基于注解的依赖注入,内置多种特性,轻量级且启动迅速;Spring Boot则简化了Spring应用开发,拥有丰富的生态支持。选择框架需考虑项目需求、团队经验、性能要求及社区支持等因素。希望本文能帮助您选择合适的微服务框架,助力您的软件开发项目取得成功!
42 2
|
16天前
|
消息中间件 开发框架 Java
掌握这一招,Spring Boot与Kafka完美融合,顺序消费不再是难题,让你轻松应对业务挑战!
【8月更文挑战第29天】Spring Boot与Kafka集成广泛用于处理分布式消息队列。本文探讨了在Spring Boot中实现Kafka顺序消费的方法,包括使用单个Partition或消息Key确保消息路由到同一Partition,并设置Consumer并发数为1以保证顺序消费。通过示例代码展示了如何配置Kafka Producer和Consumer,并自定义Partitioner。为确保数据正确性,还建议在业务逻辑中增加顺序校验机制。
32 3
|
1月前
|
缓存 负载均衡 监控
Dubbo框架整体认知
该文章主要介绍了Dubbo框架的整体认知,包括Dubbo的概念、产生的背景、解决的问题、架构以及功能特性等。
Dubbo框架整体认知
|
13天前
|
Java 微服务 Spring
驾驭复杂性:Spring Cloud在微服务构建中的决胜法则
【8月更文挑战第31天】Spring Cloud是在Spring Framework基础上打造的微服务解决方案,提供服务发现、配置管理、消息路由等功能,适用于构建复杂的微服务架构。本文介绍如何利用Spring Cloud搭建微服务,包括Eureka服务发现、Config Server配置管理和Zuul API网关等组件的配置与使用。通过Spring Cloud,可实现快速开发、自动化配置,并提升系统的伸缩性和容错性,尽管仍需面对分布式事务等挑战,但其强大的社区支持有助于解决问题。
27 0
|
4月前
|
自然语言处理 Cloud Native 开发者
【2023年度技术盘点】「年终盘点后端系列」探索服务架构体系的技术风向,构建微服务核心能力(升级版)
回顾过去的几年,我们目睹了科技界的快速发展,其势头如同一列驶向前方的高速列车。作为后端开发者,我们见证了每一次技术革新所带来的广阔前景。这些创新不仅深刻影响着我们的工作方式,而且不断引领我们走向未来。
132 1
|
传感器 监控 安全
如何理解企业安全能力框架-IPDRR
企业安全能力框架(IPDRR)是美国国家标准与技术研究所(National Institute of Standards and Technology)的网络安全框架(简称NISTCSF )。第一个版本于2014年发布,旨在为寻求加强网咯安全防御的组织提供指导。企业可以根据自身需求加强网络安全防御。
268 0
|
传感器 监控 安全
如何理解企业安全能力框架(IPDRR)
企业安全能力框架(IPDRR)是美国国家标准与技术研究所(National Institute of Standards and Technology)的网络安全框架(简称NISTCSF )。第一个版本于2014年发布,旨在为寻求加强网咯安全防御的组织提供指导。企业可以根据自身需求加强网络安全防御。随着社会数字化转型的深入,网络攻击事件日益增多、破坏力逐步增强。安全方法论也正逐步从"针对威胁的安全防御"向“面向业务的安全治理”(IPDRR)等演进。 IPDRR能力框架模型包括风险识别(Identify)、安全防御(Protect)、安全检测(Detect)、安全响应(Response)和安全
1725 0