Spring Cloud_OpenFeign

作者: Cathy 分类: 编程开发 发布时间: 2023-07-22 04:30

Feign 是什么?

  • Feign 集成了 Ribbon、RestTemplate 实现了负载均衡的执行 Http 调用
  • 对原有的方式(Ribbon+RestTemplate)进行了封装,开发者不必手动使用 RestTemplate 调服务,而是定义一个接口
  • 在这个接口中标注一个注解即可完成服务调用
  • 这样更加符合面向接口编程的宗旨,简化了开发

OpenFeign 是什么?

  • OpenFeign 是 SpringCloud 在 Feign 的基础上支持了 SpringMVC 的注解,如 @RequestMapping
  • OpenFeign 的 @FeignClient 可以解析 SpringMVC 的 @RequestMapping 注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务

什么是 Hystrix?它如何实现容错?

  • Hystrix 是 Netflix 开源的一个用于实现容错的库
  • 它主要用于处理分布式系统中的延迟和故障
  • Hystrix 可以帮助开发人员实现服务的容错和降级,从而提高系统的可用性和稳定性
  • Hystrix 的容错机制主要包括以下几个方面:
    • 服务降级
    • 服务限流
    • 监控和报警

openFeign 如何传参?

  • 传递 JSON 数据:接口开发中常见的传参规则,在 Spring Boot 中通过@RequestBody 注解
  • POJO 表单传参:使用@SpringQueryMap 注解
  • URL 中写入参数:使用@PathVariable 注解

超时如何处理?

  • OpenFeign 有默认的超时时间
  • OpenFeign 集成了 Ribbon,Ribbon 的默认超时连接时间、读超时时间都是是 1 秒
  • 如果 openFeign 没有设置对应得超时时间,那么将会采用 Ribbon 的默认超时时间
  • 通常在配置文件中设置 OpenFeign 的超时时间

如何开启日志增强?

  • 配置类中配置日志级别
  • 配置文件中设置接口日志级别

如何替换默认的 httpclient?

  • Feign 在默认情况下使用的是 JDK 原生的URLConnection发送 HTTP 请求,没有连接池,但是对每个地址会保持一个长连接
  • 在生产环境中,通常不使用默认的 http client,使用ApacheHttpClient
  • 通过添加依赖和配置文件中开启,实现替换

如何通讯优化?

  • 使用 GZIP 压缩算法
  • OpenFeign 支持请求和响应中开启 GZip

如何熔断升级

  • 使用 OpenFeign + Sentinel 进行整合,实现服务降级

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注