• RPC框架之OpenFeign快速上手



    写个小demo练练手,这里只是用到rpc简单的调用,服务注册都没用,直接就是消费者通过url调用服务生产者

    1. 快速上手

    💖1.1 第一步 引入相关依赖

    <!--OpenFeign-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>3.1.4</version>
    </dependency>
    <!--负载均衡组件-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        <version>3.1.4</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    🦖1.2 第二步 启用OpenFeign功能

    在项目启动类上添加注解 @EnableFeignClients

    在这里插入图片描述

    🦕1.3 第三步 编写FeignClient

    /**
     * value:服务名(接口提供方的服务名)
     * url:手动指定@FeignClient调用的地址
     */
    @Repository
    @FeignClient(value = "item-service", url = "http://localhost:8081")
    public interface ItemClient {
        @PostMapping("/item/hello")
        String hello();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    服务生产者的服务名称

    server.port=8081
    spring.application.name=item-service
    
    • 1
    • 2

    🪼1.4 第四步 使用FeignClient 实现远程调用

    
    @RestController
    public class OrderController {
        @Autowired
        private ItemClient itemClient;
        @PostMapping("/hello")
        public String printMsg(){
            return itemClient.hello();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    ✨1.5 验证一下

    在这里插入图片描述

    🍕1.6 原理

    OpenFeign 是一个基于注解的声明式 HTTP 客户端,它简化了服务间的 HTTP 调用。它是在 Spring Cloud 生态系统中广泛使用的组件之一。

    OpenFeign 的原理可以简要概括为以下几个步骤:

    • 定义接口:使用 Java 接口的方式定义需要调用的服务接口。在接口的方法上使用注解来描述请求的相关信息,如请求方法、URL、请求参数等。

    • 生成代理:在应用程序启动时,OpenFeign 根据接口的定义和注解信息生成一个动态代理对象。

    • 发起请求:当应用程序调用接口的方法时,实际上是调用了生成的代理对象的方法。代理对象根据注解信息构建 HTTP 请求,并将请求发送到目标服务。

    • 处理响应:目标服务接收到请求后处理,并返回响应。代理对象将接收到的响应转换为方法返回的数据类型,并返回给应用程序。

    OpenFeign 的核心原理是使用动态代理技术,通过在运行时动态生成代理对象来实现服务间的 HTTP 调用。它通过解析接口上的注解信息,生成对应的 HTTP 请求,并将请求发送到目标服务。同时,OpenFeign 还提供了负载均衡、请求重试、容错等功能,以提高服务调用的可靠性和稳定性。

    👍总结起来,OpenFeign 的原理是通过动态代理技术生成代理对象,解析注解信息构建 HTTP 请求,并处理响应,从而简化了服务间的 HTTP 调用过程。

    在这里插入图片描述

    2. OpenFeign整合OkHttp步骤

    HTTP 连接池
    在HTTP 通信的过程中,建立连接是一个很复杂的过程,涉及到多个数据包的交换,很耗时间,而且HTTP连接需要3次握手和4次挥手开销都很大

    这时可以采用HTTP连接池,节约大量的3次握手4次挥手时间,提升吞吐量。

    默认的HttpURLConnection是JDK自带的,并不支持连接池,如果要实现连接池的机制,还需要自己来管理连接对象。

    • HttpClient 相比传统JDK自带的HttpURLConnection,它封装了访问HTTP的请求头,参数,内容体,响应等等。它不仅使客户端发送HTTP请求变得容易,而且也方便了开发人员测试接口(基于HTTP协议的),既提高了开发的效率,又提高了代码的健壮性。另外高并发大量的请求网络的时候,也是用"连接池"提升吞吐量。

    • OkHttp作为后期之秀,功能和性能上,可能稍优于HttpClient ,但是几乎没多大区别,实际使用时,都是可以的,不过HttpClient集成起来更方便。

    原文链接:https://blog.csdn.net/qq_43437874/article/details/122169675

    💖2.1 第一步 引入相关依赖

    在原有的基础上添加连接池相关依赖

    <!--OpenFeign-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>3.1.4</version>
    </dependency>
    <!--负载均衡组件-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        <version>3.1.4</version>
    </dependency>
    <!--连接池-->
    <dependency>
        <groupId>io.github.openfeign</groupId>
        <artifactId>feign-okhttp</artifactId>
        <version>10.12</version>
    </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    🦖 2.2 开启连接池功能

    # 开启OkHttp 连接池
    feign.okhttp.enabled=true
    
    • 1
    • 2
  • 相关阅读:
    go的基本数据类型
    excel 65536
    SketchUp Pro 2023 for Mac/Win:重塑设计,引领未来
    【Unity编辑器扩展】GF_HybridCLR自定义Toolbar, 一键出包/打热更扩展工具
    激动人心,2022开放原子全球开源峰会报名火热开启
    linux用户和权限命令学习记录
    c++的数据类型的引用(三种方式有一些区别)
    理解并解决Maven版本冲突
    硕士毕设方向求建议!
    类似ps的python工具lama cleaner
  • 原文地址:https://blog.csdn.net/qq_45896330/article/details/133829396