当前位置:首页 > 技术文章 > 正文内容

SpringCloud专题 - Feign最新高频面试题总结

zonemu2个月前 (08-11)技术文章27

1. Feign的作用是什么?

答:

Feign是SpringCloud中的声明式HTTP客户端,简化了服务间的RESTful调用,支持负载均衡、熔断、拦截器等功能。


2. Feign的工作原理?

答:通过注解(@FeignClient)定义接口,Feign在运行时为接口生成代理对象。代理对象根据方法注解自动拼接HTTP请求,发起远程调用。支持与Ribbon、Eureka、Sentinel等集成,实现服务发现、负载均衡和熔断。


3. Feign与RestTemplate的区别?

答:Feign是声明式,接口+注解,代码简洁,易维护。RestTemplate是命令式,需手动拼接URL和参数,代码量大。Feign天然集成Ribbon、Sentinel等,RestTemplate需手动配置。


4. Feign如何实现负载均衡?

答:Feign默认集成Ribbon(Spring Cloud 2020后为LoadBalancer),通过服务名自动选择可用实例,实现客户端负载均衡。


5. Feign如何实现熔断降级?

答:可与Hystrix、Sentinel等熔断组件集成。通过fallback属性指定降级处理类,实现服务降级。


6. Feign的超时与重试机制如何配置?

答:超时通过
feign.client.config.default.connectTimeout、readTimeout等参数配置。重试通过feign.retryer配置,支持自定义Retryer。


7. Feign如何传递请求头、Token等信息?

答:通过@RequestHeader注解在方法参数中传递。也可实现RequestInterceptor接口,全局拦截和修改请求。


8. Feign如何支持文件上传和下载?

答:上传:方法参数使用@RequestPart或MultipartFile,并设置consumes = "multipart/form-data"。下载:返回值类型为Response或byte[],处理流式数据。


9. Feign的日志如何配置和使用?

答:通过配置logging.level.<Feign接口全类名>=DEBUG开启日志。可自定义Logger实现,记录请求和响应详情。


10. Feign的自定义错误处理如何实现?

答:实现ErrorDecoder接口,自定义异常处理逻辑。


11. Feign的请求压缩和连接池如何配置?

答:请求压缩通过
feign.compression.request.enabled=true等参数开启。连接池通过自定义OkHttpClient或HttpClient实现。


12. Feign与SpringCloud Gateway、RestTemplate的关系?

答:Feign适合服务间调用,Gateway适合API聚合和统一入口,RestTemplate适合简单HTTP调用。三者可根据业务场景灵活选用。


13. Feign的常见问题及排查思路?

答:服务找不到:检查服务名、注册中心、负载均衡配置。超时/重试失败:检查超时和重试参数。请求头丢失:检查拦截器和注解使用。

相关文章

Vue3开发极简入门(15.1):emits补完-结合v-model

之前代码是通过按钮触发emit,如果希望输入框里的内容在输入之后也能同步到父组件,就可以结合v-model的update事件来操作,具体如下。Son2.vue:<template>...

学习ES6- 入门Vue(大量源代码及笔记,带你起飞)

ES6学习网站: https://es6.ruanyifeng.com/箭头函数普通函数//普通函数 this 指向调用时所在的对象(可变) let fn = function fn(a, b) {...

使用GitLab实现CICD(gitlab配置cicd)

GitLab CI/CD 是一个内置在GitLab中的工具,用于通过持续方法进行软件开发:Continuous Integration (CI) 持续集成Continuous Delivery (C...

HTML5与APP的抉择(h5与app的区别)

同为当下炙手可热的技术,围绕APP和HTML5难免少不了各种争辩。而在“互联网+”时代,许多面临转型的传统企业,也在选择转型工具时,陷入了HTML5或APP的纠结抉择之中……到底该选择HTML5还是A...

js中数组filter方法的使用和实现(js实现数组的indexof方法)

定义filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。语法var newArray = arr.filter(callback(element[, index[, se...

Vue从入门到实践 丨Vue-router基本使用

1. 什么是 vue-routervue-router 是 vue.js 官方给出的路由解决方案。它只能结合 vue 项目进行使用,能够轻松的管理 SPA 项目中组件的切换。vue-router 的官...