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

介绍

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

引入依赖

xml 复制代码
<!--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

java 复制代码
@SpringBootApplication
@EnableFeignClients
public class Demo3Application {

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

}

远程调用其他服务

定义服务接口

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

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

}

接口不用去实现

调用其他服务

java 复制代码
@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发起的,每次连接都需要重新创建导致效率底下。

可以使用第三方框架进行优化

引入连接池

xml 复制代码
<!--openfeign连接池-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-okhttp</artifactId>
    <version>11.6</version>
</dependency>

配置文件

yml 复制代码
feign:
  okhttp:
    enabled: true

开启成功!

相关推荐
路由侠内网穿透6 小时前
本地部署 GPS 跟踪系统 Traccar 并实现外部访问
运维·服务器·网络·windows·tcp/ip
长河7 小时前
Java开发者LLM实战——LangChain4j最新版教学知识库实战
java·开发语言
Cyan_RA97 小时前
SpringMVC @RequestMapping的使用演示和细节 详解
java·开发语言·后端·spring·mvc·ssm·springmvc
傻傻虎虎8 小时前
【Docker】常用帮忙、镜像、容器、其他命令合集(2)
运维·docker·容器
ZERO_pan9 小时前
服务器装机遇到的问题
运维·服务器
杀气丶9 小时前
Linux下运行芙蕾雅天堂2【俄文简译L2FATER】
运维·服务器·天堂2·l2fater·l2fater.cn
喵手9 小时前
玩转Java网络编程:基于Socket的服务器和客户端开发!
java·服务器·网络
再见晴天*_*10 小时前
SpringBoot 中单独一个类中运行main方法报错:找不到或无法加载主类
java·开发语言·intellij idea
太空的旅行者10 小时前
告别双系统——WSL2+UBUNTU在WIN上畅游LINUX
linux·运维·ubuntu
九章云极AladdinEdu11 小时前
超参数自动化调优指南:Optuna vs. Ray Tune 对比评测
运维·人工智能·深度学习·ai·自动化·gpu算力