全局降级和熔断器以及Getway网关

上一编我们做了局部降级,但是局部降级有一个缺点,就是如果需要做降级的方法一两个还好说,但是一旦多了,就会造成大量的重复代码,看着非常杂乱,今天我们来做一个全局降级来解决

这里我们接着上一篇写的,所以有好多就不在做了
来,我们在消费者里边加入hystrix依赖

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

现在我们需要给启动类上加上开启全局降级的注解
在这里插入图片描述
修改我们的controller
在这里插入图片描述
给我们提供者里边做个异常
在这里插入图片描述
启动测试一下,有异常情况下是这样的
在这里插入图片描述
做了降级是这样的
在这里插入图片描述

全局降级测试成功,接下来我们来做Hystix熔断器,首先呢我们先需要了解一下什么是熔断器,干什么用的

我们在访问服务器的时候,有的时候访问的是健康的,有的时候访问的是有异常或者是超时的,但是服务器里边的某个方法不可能一直是有异常或者是一直连接超时,这时我们就需要让它进行判断,在指定的时间里,有几次请求,这几次请求有几次失败的,根据我们设定的访问成功率判断它到底是否正常

来,我们还在这个8001上的项目测试,这里我们设置了10秒之内发送10次请求,有6次错误就会熔断,熔断之后不管什么请求就都会拦截,以免对服务器造成阻塞

在这里插入图片描述
我们测试一下,这是正常情况下
在这里插入图片描述
这是请求错误的情况下,来我们快速点10次,然后在请求正确的会怎么样
在这里插入图片描述
我们可以看出,一旦熔断的情况下,正常访问也会阻止在外面,但是它会自动恢复,并不是一直阻止在外面不能访问,它默认是5秒自动熔合,到底是不是呢?我们等五秒在试一下
在这里插入图片描述
可以看出这会恢复正常了
在这里插入图片描述
这就是Hystix熔断器,能断开,能熔合

接下来我们来写Getway网关

导入相关的依赖

<dependencies>
        <!--gateway-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!--eureka-client gateWay作为网关,也要注册进服务中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- gateway和web不能同时存在,即web相关jar包不能导入 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
            <groupId>org.example</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

配置文件

server:
  port: 9527
spring:
  application:
    name: cloud-gateway
  ## GateWay配置
  cloud:
    gateway:
      routes:
        - id: payment_routh  # 路由ID , 没有固定的规则但要求唯一,建议配合服务名
          uri: http://localhost:8001  # 匹配后提供服务的路由地址
          predicates:
            - Path=/payment/**  # 断言,路径相匹配的进行路由

        - id: payment_routh2  # 路由ID , 没有固定的规则但要求唯一,建议配合服务名
          uri: http://localhost:8001  # 匹配后提供服务的路由地址
          predicates:
            - Path=/payment/lb/**  # 断言,路径相匹配的进行路由

# 注册进 eureka Server
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
    register-with-eureka: true
    fetch-registry: true

网关前是这样的
在这里插入图片描述
网关后是这样的,把我们真实的端口号给隐藏起来,以保证安全
在这里插入图片描述
好了,今天太晚了,先到此结束,明天见
在这里插入图片描述

网关(Gateway)是一个在网络中充当中转站的服务器,它可以连接不同的网络、协议或者服务,并提供一些功能和服务来增强网络的安全性、性能和可靠性。网关的作用有以下几个方面: 1. 路由转发:网关可以根据不同的目标地址,将请求转发到不同的网络或者子网中,实现网络之间的连接。 2. 协议转换:网关可以将一个协议的请求转换成另一个协议的请求,使得不同的系统或者服务能够互相通信。例如,将HTTP请求转换成HTTPS请求。 3. 安全认证与授权:网关可以对请求进行身份认证和授权,确保只有合法的用户能够访问受保护的资源。它可以实现用户身份验证、访问控制、API密钥管理等功能。 4. 流量控制与限流:网关可以对请求进行流量控制和限流,防止恶意攻击或者过多的请求导致系统负载过高。它可以实现访问频率限制、并发连接数控制等功能。 5. 缓存与加速:网关可以缓存一些常用的数据或者响应结果,提高系统的性能和响应速度。它可以减少对后端服务的请求压力,加速数据的传输和处理。 6. 监控与日志:网关可以对请求和流量进行监控和记录,收集系统的运行数据和日志信息,用于故障排查、性能优化和安全审计。 总而言之,网关在网络中起到了连接、转发、安全、控制和加速等多个方面的作用,为系统提供了更好的可用性、性能和安全性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aspoil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值