持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
Spring Cloud Gateway
springcloud的网关相当于门户的作用,所以对于整个微服务来说都是非常重要的,这里列举几种常用的网关配置
鉴权、限流、日志、缓存
1)基本使用
1、依赖
2、配置
下面是路由
url和uri的区别
我们从名字上看
统一资源标识符(Uniform Resource Identifier, URI):是一个用于标识某一互联网资源名称的字符串。 统一资源定位符(Uniform Resource Locator, URL):是一个用于标识和定位某一互联网资源名称的字符串。
可能大家就比较困惑了,这俩好像是一样的啊?那我们就类比一下我们现实生活中的情况: 我们要找一个人——张三,我们可以通过他的唯一的标识来找,比如说身份证,那么这个身份证就唯一的标识了一个人,这个身份证就是一个 URI; 而要找到张三,我们不一定要用身份证去找,我们还可以根据地址去找,如 在清华大学18号宿舍楼的404房间第一个床铺的张三,我们也可以唯一确定一个张三, 动物住址协议://地球/中国/北京市/清华大学/18号宿舍楼/404号寝/张三.人。而这个地址就是我们用于标识和定位的 URL。 我们从上面可以很明显的看出,URI 通过任何方法标识一个人即可,而 URL 虽然也可以标识一个人,但是它主要是通过定位地址的方法标识一个人,所以 URL 其实是 URI 的一个子集,即 URL 是靠标识定位地址的一个 URI。
有很多种断言机制
比如:
这个会复合,都满足条件才会放行
如果没有想要的,也可以自定义路由!
这里自定义一个:
(快捷键就是配置类里拦截路由的字段)
2)过滤器
比如这个:
请求经过filter的时候会在请求上面加个参数
(下图第二种写法)
写法:
数组的形式:
限流的写法
基于Redis的令牌桶实现 (所以这么写肯定要连接Redis!!!) :
基本的两个参数
replenishRate:令牌桶的填充速度
burstCapacity:令牌桶的容量
其他参数可以自定义:
比如对ip地址限流可以新增一个IpAdd ressKeyResolver:
重试写法
自定义
配置:
全局过滤器
3)负载均衡
要先注册到Eureka:
IDEA同一个测试类开启多个端口的方法:
注意这个如果是服务的配置是部署在仓库的端口配置会被覆盖掉...
负载均衡加个节点就行:
4)动态路由
之前的配置都是写死的:
springboot提供了一些api,暴露出去是十分危险的!
actuator endpoint,可以提供一些监控一些cloud的东西
也可以通过一些api实现创建和删除节点:
需要刷新:
有好处也有坏处,坏处:没有持久化(服务重启之后,使用api构造的节点都会消失)
如何实现持久化?
将配置放到数据库(Redis)中
@Component
分析:如何实现的?
静态路由和动态路由的管理其实都一样,知识数据来源不一样
都存储在:
自动装载
里有:
RouteDefinitionLocator有多个实现:
包装再包装,非常复杂
或者对接到配置中心,都是可以的,基于api