Spring Cloud Alibaba实战03|OpenFeign远程调用+LoadBalancer负载均衡 导语整套SCA实战源码已开源到Gitee直接克隆下载就能本地运行全部案例不用额外改配置源码仓库地址https://gitee.com/xiaoyuancode/sca-study-demo本章对应module-feign-demo模块基于第一篇Nacos注册中心案例手把手教大家实现微服务之间远程接口调用。本地完整实测少量代码就能搞定服务调用和负载均衡不管日常开发还是面试刷题都能用得上。技术版本JDK 17Spring Boot 3.5.0Spring Cloud Alibaba 2025.0.0.0Nacos 3.0.3高频面试对比OpenFeign vs RestTemplate面试经常被问微服务远程调用该怎么选这里整理好核心区别直接背就行对比维度RestTemplateOpenFeign编码方式手动拼接URL、参数代码冗余只用接口注解声明写法和本地调用一模一样代码极简负载均衡需要手动整合负载均衡组件原生适配LoadBalancer引入依赖自动生效日志调试需要自定义拦截器实现一行配置开启完整调用日志排错方便工程适配仅适合本地临时简单测试企业微服务项目标准选型面试小结线上正式微服务项目统一用OpenFeign做远程调用RestTemplate基本只用于本地临时测试。模块核心功能本模块上手就能跑功能简单纯粹没有多余内容当前服务自动注册到Nacos注册中心通过OpenFeign基于服务名远程调用nacos-service-demo服务接口结合LoadBalancer自带负载均衡不用手动写死IP、端口。当前服务端口8082运行前置条件本地启动Nacos提前跑通第一篇module-nacos-demo8081端口。一、完整 pom.xml 依赖重点注意新版本SCA必须手动加LoadBalancer依赖少了直接启动报错。?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.xiaoyuancode/groupIdartifactIdsca-study-demo/artifactIdversion1.0-SNAPSHOT/version/parentartifactIdmodule-feign-demo/artifactIdnamemodule-feign-demo/namedescriptionOpenFeign服务远程调用/descriptionpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencies!-- Web基础依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- 配置注解提示 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependency!-- 新版必须手动引入负载均衡依赖 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency!-- Nacos服务注册 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!-- OpenFeign核心依赖 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency/dependencies/project二、application.yml 核心配置配置极简只保留注册中心地址和Feign调试日志够用不冗余。server:port:8082spring:application:name:feign-service-democloud:nacos:discovery:server-addr:127.0.0.1:8848# 开启Feign请求日志排错调试必备logging:level:com.xiaoyuancode.sca.feign:debug三、核心Java源码1. 启动类 FeignApplication.java两个核心注解缺一不可分别负责服务注册和开启Feign调用。packagecom.xiaoyuancode.sca.feign;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.client.discovery.EnableDiscoveryClient;importorg.springframework.cloud.openfeign.EnableFeignClients;SpringBootApplicationEnableDiscoveryClient//注册到NacosEnableFeignClients//开启Feign调用publicclassFeignApplication{publicstaticvoidmain(String[]args){SpringApplication.run(FeignApplication.class,args);}}2. Feign远程调用接口 NacosServiceFeignClient.java核心关键点FeignClient的name 要和被调用服务的应用名完全一致接口路径、请求方式必须完全对齐。packagecom.xiaoyuancode.sca.feign.feign;importorg.springframework.cloud.openfeign.FeignClient;importorg.springframework.web.bind.annotation.GetMapping;FeignClient(namenacos-service-demo)publicinterfaceNacosServiceFeignClient{GetMapping(/sca/nacos/register)StringcallNacosRegister();}3. 测试接口 Controllerpackagecom.xiaoyuancode.sca.feign.controller;importcom.xiaoyuancode.sca.feign.feign.NacosServiceFeignClient;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;RestControllerRequestMapping(/sca/feign)publicclassFeignTestController{privatefinalNacosServiceFeignClientfeignClient;publicFeignTestController(NacosServiceFeignClientfeignClient){this.feignClientfeignClient;}GetMapping(/test)publicStringtestFeign(){returnFeign 调用成功 feignClient.callNacosRegister();}}四、本地启动步骤启动本地Nacos确保控制台正常访问先启动第一篇的module-nacos-demo服务保证服务注册进Nacos运行当前模块启动类服务启动端口8082执行curl命令测试远程调用效果。五、接口测试命令Windows10/Win11自带curl可直接复制命令Win7 / 旧版Windows可直接浏览器访问对应地址查看结果。curlhttp://localhost:8082/sca/feign/test六、实操踩坑总结启动报错缺失负载均衡Spring Cloud 2025.0.0彻底取消了内置负载均衡依赖不手动引入spring-cloud-starter-loadbalancer启动直接抛Feign负载均衡异常这是新手最容易踩的坑。Feign调用404大概率两个问题一是Feign接口路径、请求方式和目标服务不匹配二是FeignClient配置的服务名和Nacos注册的服务名不一致。控制台看不到Feign请求日志yml中的日志包路径必须和自己的Feign代码包路径完全对应级别设置为debug才能打印完整调用日志方便排查接口问题。小结整篇都是落地实操没有空洞理论只用少量代码实现微服务核心的远程调用负载均衡能力。OpenFeign注解化的写法大幅简化微服务调用代码也是企业开发的标准写法文中代码可以直接搬到自己项目中使用。下一章预告Spring Cloud Alibaba实战04API网关Gateway路由转发、统一跨域、请求拦截作者简介刘晓媛 XiaoYuanCode资深全栈开发具备丰富前后端一体化业务系统落地经验。现阶段主攻 Java 微服务与 Spring AI分享个人学习复盘与 RAG 工程化落地方案所有案例均本地验证配套代码可直接复用。