1.gateway网关的使用:
首先获取请求头信息,进行校验,
校验通过,请求地址-转发
校验不通过,直接拦截
2.拦截器的使用:
单体springboot项目上如何使用springcloud gateway进行负载均衡 拦截 限流 熔断等操作:
地址:https://blog.csdn.net/huqiankunlol/article/details/106089438
一般我们使用网关,大都是配合注册中心进行使用,gateway注册到注册中心,注册中心中可自动实现负载均衡,但是通常会有一些项目不是使用分布式的架构,
那么我们单体的springboot项目,如何使用springcloud gateway进行负载均衡和限流 鉴权呢
接下来我们看下springcloud gateway的几个主要词汇,路由 断言 处理 和网关处理处理流程图
如果我们是单体应用的话,单体部署多台服务器上,也可以通过网关分发,达到负载 拦截等效果
接下来我们看下具体的配置参数和处理,先看下 yml 的具体配置
server:
port: 9999
spring:
cloud:
gateway:
#discovery:
#locator:
#enabled: true
routes:
- id: my-consumer-service
uri: lb://my-consumer-service # http://127.0.0.1:8088
predicates:
- Path=/app/** #断言处理
filters:
- StripPrefix=1 #表示路由时会去除一位 如 api/app/login app/login
- name: RequestRateLimiter #名称必须是RequestRateLimiter
args:
key-resolver: "#{@urlResolver}" #使用SpEL按名称引用bean
redis-rate-limiter.burstCapacity: 10 #令牌
redis-rate-limiter.replenishRate: 20 #允许用户每秒处理多少个请求桶的容量,允许在一秒钟内完成的最大请求数
- name: Hystrix #断路器的配置
args:
name: fallbackcmd
fallbackUri: forward:/defaultfallback
- id: my-consumer-service2
uri: http://127.0.0.1:8088 # http://127.0.0.1:8088 lb://consumer-service lb 代表从注册中心获取服务,且已负载均衡方式转发
predicates:
- Path=/admin/** #断言处理
filters:
- StripPrefix=1 #表示路由时会去除一位 如 api/app/login app/login
- name: RequestRateLimiter #名称必须是RequestRateLimiter
args:
key-resolver: "#{@urlResolver}" #使用SpEL按名称引用bean
redis-rate-limiter.replenishRate: 20 #允许用户每秒处理多少个请求
redis-rate-limiter.burstCapacity: 10 #令牌桶的容量,允许在一秒钟内完成的最大请求数
- name: Hystrix #断路器的配置
args:
name: fallbackcmd
fallbackUri: forward:/defaultfallback
redis:
host: localhost
port: 6379
database: 0
my-consumer-service:
ribbon:
listOfServers: localhost:9088,localhost,9099
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule



