首页 > 其他分享 >Feign组件

Feign组件

时间:2022-10-24 13:56:25浏览次数:58  
标签:Feign 服务 请求 product 接口 组件 feign id

一、简介

Feign是Netflix开发的声明式,模块化的HTTP客户端

1 导入依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

2 配置调用接口

/*
* 声明需要调用的微服务名称
* @FeignClient
* */
@FeignClient(name = "service-product")
public interface ProductFeignClient {
/*
* 配置需要调用的微服务接口
* */
@RequestMapping(value = "/product/{id}", method = RequestMethod.GET)
public Product findById(@PathVariable Long id);
}

3 在启动类上激活feign

@EnableFeignClients

4 通过自动的接口调用远程微服务

@Autowired
private ProductFeignClient productFeignClient;

@GetMapping("{id}")
public Product findById(@PathVariable Long id){
Product product = productFeignClient.findById(id);
return product;
}


二:日志追踪
配置服务消费者的配置文件
# 配置feign日志输出
# 日志级别: NONE(不输出日志,性能高) BASIC(适用于生产环境追踪问题)
# HEADERS(在BASIC基础上,记录请求和响应头信息) FULL(记录所有信息)
feign:
client:
config:
service-product: # 需要调用的服务名称,即服务服务提供者
loggerLevel: FULL
logging:
level:
com.gfy.eureka.feign.ProductFeignClient: debug

三、源码分析
启动类 @EnableFeignClients
    --->FeignClientsRegister.class(1.注册配置2.创建并注册FeignClientFactoryBean对象)
       --->FeignClientFactoryBean
    --->FeignInvocaitonHandler(动态代理对象)
    扫描所有@FeignClien注解,找到对应的接口
    创建标注了@FeignClient接口的动态代理对象FeignInvocationHandler

四、高并发问题
由于tomcat会以线程池的形式对所有请求进行统一管理,所以当某个方法存在耗时问题时,
外面积压的请求越来越多,会导致其他请求无法访问,最终导致系统的崩溃
为了解决该问题,采用两种方法:
  1.线程池隔离(为访问量高的接口创建独立的线程池)
  2.信号量隔离(为每个请求设置访问阈值,请求量若超过阈值,则请求失败)
五:雪崩
由于系统服务之间的强依赖性,导致在某服务处于长时间等待时,导致依赖其服务的服务积压过多的请求,造成服务瘫痪(故障传播)。
解决方法:
      1.服务隔离
      2.熔断降级
      3.服务限流


标签:Feign,服务,请求,product,接口,组件,feign,id
From: https://www.cnblogs.com/Fei-Gao/p/16814227.html

相关文章

  • vue组件通信方式有哪些?
    vue组件通信方式一、props(父向子传值----自定义属性)/$emit(子向父传值-----自定义事件)父组件通过props的方式向子组件传递数据,而通过$emit子组件可以向父组件通信......
  • SpringBoot集成feign的方法分享
    转自:http://www.java265.com/JavaFramework/SpringBoot/202205/3532.html 下文笔者讲述SpringBoot集成feign的方法分享,如下所示实现思路:1.引入相应的jar包......
  • # Vue3 组件传值
    Vue3组件传值今天说一下vue3的组件间传值,学习过vue2的宝子们肯定知道,组件传值是vue项目开发过程中必不可少的功能场景,在vue2里面有很多传值的方式,vue3的传值方式......
  • 注册全局组件
    第一步:给需要注册的全局组件取个name1<script>2exportdefault{3name:"TypeNav"4}5</script>第二部在main.js里引入1//三级联动路由组件2importTy......
  • vue 日历 组件
    不用任何第三方库,只基于vue2实现一个日历组件,末尾附上我的代码,单文件,代码没有抽取,有点长。哪位大佬批评指正一下样式是类似于window10日历支持控制周一还是周日在第一列支持......
  • SpringCloud之Feign讲解
    目录1Feign1.1定义1.1.1简介1.1.2属性介绍1.1.3原理解析1.2Feign准备工作1.2.1引入依赖1.2.2启动类和yml文件1.3使用Feign1.3.1简单使用@FeignClient1.3.2@Requ......
  • [转]VUE 组件的构成
          ......
  • #yyds干货盘点#【愚公系列】2022年10月 微信小程序-组件模板和组件样式
    一、组件模板组件模板的写法与页面模板相同。组件模板与组件数据结合后生成的节点树,将被插入到组件的引用位置上。在组件模板中可以提供一个<slot>节点,用于承载组件引用......
  • 缓存 - 方法注解组件开发
    缓存概述解决不同设备间速度不匹配问题。互联网分层架构:降低数据库压力,提升系统整体性能,缩短访问时间。高并发问题缓存并发(击穿):缓存过期后将尝试从后端数据库获取数......
  • ElasticSearch之Quick.ElasticSearch.Furion组件的使用
    ElasticSearch使用说明本章,我们主要讲解在.Net中对Quick.ElasticSearch.Furion的使用进行介绍!ElasticSearch的官方客户端API文档地址:https://www.elastic.co/guid......