目录
一:什么是服务网关
网关是整个微服务API请求的入口,负责拦截所有请求,再分发到服务上去。
可以实现日志拦截、权限控制、解决跨域、限流、熔断、负载均衡,隐藏服务端的ip,黑名单与白名单拦截、授权等。
二:gateway的核心概念
1、Route(路由):就是转发规则
Spring Cloud Gateway的基础元素,可简单理解成一条转发的规则。包含:ID、目标URL、Predicate集合以及Filter集合。
2、Predicate(断言或谓词):就是控制 该请求是不是走转发规则的(Route) 条件
即java.util.function.Predicate接口的函数式编程的API,Spring Cloud Gateway使用Predicate实现路由的匹配条件。
3、Filter(过滤器):就是为该请求添加业务逻辑,修改请求以及响应
通过过滤器可以对请求进行一些修改和响应。
三:gateway限流【两种方式】
内置的 RequestRateLimiterGatewayFilterFactory 提供限流的能力,基于令牌桶算法实现。目前,它内置的 RedisRateLimiter ,依赖Redis存储限流配置,以及统计数据。当然你也可以实现自己的RateLimiter,只需实现 RateLimiter 接口,或者继承AbstractRateLimiter 。
1、漏桶算法:
想象有一个水桶,水桶以一定的速度出水(以一定速率消费请求),当水流速度过大时水会溢出(访问速率超过响应速率,就直接拒绝)。
漏桶算法的两个变量:
水桶漏洞的大小:rate
最多可以存多少的水:burst
2、令牌桶算法:
系统按照恒定间隔向水桶里加入令牌(Token),如果桶满了的话,就不加了。每个请求来的时候,会拿走1个令牌,如果没有令牌可拿,那么就拒绝服务。
四:Gateway的实际应用