当前位置: 首页 > article >正文

SpringCloud OpenFeign负载均衡远程调用 跨服务调用 连接池优化

介绍

Spring Cloud OpenFeign 是 Spring Cloud 的一部分,提供了一种声明式的 HTTP 客户端方式来简化服务间的通信。通过 OpenFeign,开发者可以像调用本地方法一样,轻松地调用远程服务,而不需要手动处理 HTTP 请求、响应和连接等底层细节。
在这里插入图片描述

引入依赖

<!--openfeign-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>3.1.3</version>  <!-- Spring Cloud OpenFeign 版本 -->
</dependency>

<!--负载均衡-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
    <version>3.1.3</version>  <!-- Spring Cloud OpenFeign 版本 -->
</dependency>

启用Openfeign

在启动类上添加@EnableFeignClients

@SpringBootApplication
@EnableFeignClients
public class Demo3Application {

    public static void main(String[] args) {
        SpringApplication.run(Demo3Application.class, args);
    }

}

远程调用其他服务

定义服务接口
在这里插入图片描述

@FeignClient("java-goods") //要获取哪个服务的数据
public interface GoodsClient {

    @GetMapping("/user/list")
    List<Goods> list();
    
//    List<Goods> list(@RequestParam("ids") List<Long> ids);
//	 传承就这样写

}

接口不用去实现

调用其他服务

@RestController
@AllArgsConstructor
@RequestMapping("/user")
public class UserController {

    private  final  IUserService userService;
    
    private final GoodsClient goodsClient;
    //远程调用

    @GetMapping("/list")
    public List<User> getList(){
    
        System.out.println(goodsClient.list());
     //远程调用

        return userService.list();
    }

}

连接池优化?

OpenFeign底层发起请求是使用HttpURLConnection发起的,每次连接都需要重新创建导致效率底下。
可以使用第三方框架进行优化
在这里插入图片描述
引入连接池

<!--openfeign连接池-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-okhttp</artifactId>
    <version>11.6</version>
</dependency>

配置文件

feign:
  okhttp:
    enabled: true

开启成功!


http://www.kler.cn/a/400349.html

相关文章:

  • R语言-快速对多个变量取交集
  • leetcode 面试150之 Z 字形变换
  • ATmaga8单片机Pt100温度计源程序+Proteus仿真设计
  • vue项目使用eslint+prettier管理项目格式化
  • MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并--封装到存储过程中
  • 编写一个生成凯撒密码的程序
  • HP G10服务器ESXI6.7告警提示ramdisk tmp已满
  • 使用useCallback引发对闭包的理解
  • 轻量云服务器:入门级云计算的最佳选择
  • JavaScript 中字符串和数组的概念解析与多角度对比区分
  • Javaweb梳理17——HTMLCSS简介
  • 《操作系统 - 清华大学》4 -2:非连续内存分配:分页
  • Virtual.lab声学模态分析和响应计算
  • Win11专业版Docker安装、配置记录
  • Flink新版Source接口源码解析
  • 用Java反射(Reflection)解释Spring Boot 中依赖注入的原理
  • idea项目运行时 java: 错误: 不支持发行版本 21
  • 个人备忘录
  • shell中的case语句和循环语句
  • 4.STM32之通信接口《精讲》之USART通信---实验串口发送程序
  • 【开源免费】基于Vue和SpringBoot的实习管理系统(附论文)
  • 一文速学---红黑树
  • html 图片转svg 并使用svg路径来裁剪html元素
  • 【机器学习】回归模型(线性回归+逻辑回归)原理详解
  • go语言中反射机制(3种使用场景)
  • 大数据-227 离线数仓 - Flume 自定义拦截器(续接上节) 采集启动日志和事件日志