Spring-Cloud-Feign-Hystrix-Gateway

什么是Feign?[熟练]

  • 定义:是微服务之间通过http协议调用的简化使用的框架

  • 事实:

    • Feign自动集成Ribbon,且默认开启相关功能
    • Feign自动集成Hystrix,但默认关闭,需要手动开启
  • 使用:

    • 导包

      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-openfeign</artifactId>
      </dependency>
      
    • 配置

      ribbon:
        ConnectTimeout: 1000 # 连接超时时间 默认1s
        ReadTimeout: 3000 # 逻辑处理的超时时间 默认1s
      
    • 编码

      • 开启Feign功能

        @EnableFeignClients
        
      • 编写Feign接口

        //  指定当前类的方法都从Eureka中对应的服务去调用
        @FeignClient("服务的名称")
        public interface ProviderService {
        
        	// 通过Controller的地址映射注解告诉Feign该类findOne2方法从服务提供者的/findOne/{id}地址获取信息
            // 通过Controller的参数获取注解告诉Feign的参数信息
            // 通过返回值告诉Feign应该返回的参数应该封装的格式
        	@GetMapping("/goods/findOne/{id}")
        	 public Goods findOne(@PathVariable("id") int id);
        
        }
        

SpringBoot开启DEBUG日志[精通]

  • 开启SpringBoot框架的DEBUG日志

    • 开启全部

      # 设置当前的日志级别 debug,feign只支持记录debug级别的日志
      logging:
        level:
          root: debug
      
    • 开启部分

      logging:
        level:
          com.itheima: debug
      
  • 开启Feign的日志

    • 必须开启对应Feign接口包的日志为DEBUG

    • 编码

      • 定义日志级别

        @Configuration
        public class FeignLogConfig {
        
        
            /*
                NONE,不记录
                BASIC,记录基本的请求行,响应状态码数据
                HEADERS,记录基本的请求行,响应状态码数据,记录响应头信息
                FULL;记录完成的请求 响应数据
             */
        
            @Bean
            public Logger.Level level(){
                return Logger.Level.FULL;
            }
        }
        
        
      • 配置生效

        @FeignClient(value = "FEIGN-PROVIDER",configuration = FeignLogConfig.class)
        

什么是Hystrix?

  • 定义:是一个可以用来在微服务中防止级联调用引起雪崩的技术工具

  • 作用:

    • 隔离:用于隔离不同调用链之间相互不受影响
    • 降级:封装友好的错误提示并返回
    • 熔断:当请求错误率较高时,自动降级熔断
    • 限流:合理分配每个调用的并发请求数量

在这里插入图片描述

  • 使用

    • 导包

      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
      </dependency>
      
    • 配置

      • 无降级配置
    • 编码

      • 降级

        • 开启降级功能

          @EnableCircuitBreaker
          
        • 编码

          • 提供一个降级时调用的方法

            • 降级方法必须和正常处理方法返回值和参数一样
            • 进入降级处理方法时的条件
              • 正常处理方法出现异常
              • 正常处理方法(读)超时
        • 连接池满或者信号量满时

          异常+超时
          请求
          正常处理方法
          降级处理方法
          
      
    • 配置在哪里降级

        ```
        	@HystrixCommand(fallbackMethod = "findOne_fallback",commandProperties = {
                    //设置Hystrix的超时时间,默认1s
                    @HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds",value = "3000"),
                    //监控时间 默认5000 毫秒
                    @HystrixProperty(name="circuitBreaker.sleepWindowInMilliseconds",value = "5000"),
                    //失败次数。默认20次
                    @HystrixProperty(name="circuitBreaker.requestVolumeThreshold",value = "20"),
                    //失败率 默认50%
                    @HystrixProperty(name="circuitBreaker.errorThresholdPercentage",value = "50")
            })
            public Goods findOne(@PathVariable("id") int id){
            }
      
      
      
      
      
      

Feign与Hystrix的集成使用【熟悉】

  • 开启Hystrix功能

    # 开启feign对hystrix的支持
    feign:
      hystrix:
        enabled: true
    
  • 实现Feign接口(实现降级的处理方法)

    @Component
    public class GoodsFeignClientFallback implements GoodsFeignClient {
        @Override
        public Goods findGoodsById(int id) {
            Goods goods = new Goods();
            goods.setTitle("又被降级了~~~");
            return goods;
        }
    }
    
  • 配置降级使用的类

    @FeignClient(value = "HYSTRIX-PROVIDER",fallback = GoodsFeignClientFallback.class)
    

熔断【熟悉】

  • 状态

在这里插入图片描述

什么是Gateway?

  • 定义:前端统一访问微服务的人口

  • 功能:

    • 认证
    • 鉴权
    • 日志
    • 监控
    • 缓存
    • 负载均衡
    • 流量控制
  • 事实:

    • Gateway自动集成Ribbon,且默认开启相关功能
  • 使用:

    • 导包

      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-gateway</artifactId>
      </dependency>
      
    • 配置

      • 路由配置
        • id:自定义服务名称(唯一)
        • uri:请求转发的目的地
          • 静态路由:http://localhost:8080/
          • 动态路由:lb://服务名称
        • predicates:那些请求需要使用该路由配置进行转发
          • Path=/goods/** 依据请求路径来匹配转发的请求
        • filter
    • 编码

网关过滤器【精通】

对请求进行功能的增强(认证、设置凭证信息等)

  • 局部过滤器:只对配置的路由进行生效

    • org.springframework.cloud.gateway.filter.factory.过滤器名称GatewayFilterFactory
  • 全局过滤器:所有请求都生效

    • GlobalFilter
    • Ordered指定过滤器执行的顺序,越小越先执行)
    @Component
    public class MyFilter implements GlobalFilter, Ordered {
        @Override
        public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
    
            System.out.println("自定义全局过滤器执行了~~~");
    
            return chain.filter(exchange);//放行
        }
    
        /**
         * 过滤器排序
         * @return 数值越小 越先执行
         */
        @Override
        public int getOrder() {
            return 0;
        }
    }
    
    
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值