gateway网关配置参数 设备联网智能网关
gateway网关配置参数
为网友解答gateway网关配置参数和设备联网智能网关的IT小经验,下面为详细的介绍。
介绍服务网关
要认识一样东西,最好的方法是从为什么需要他开始说起。
按照现在主流使用微服务架构的特点,假设现在有A、B、C三个服务,假如这三个服务都需要做一些请求过滤和权限校验,请问怎么实现?
每个服务自己实现一遍。写在一个公共的服务,然后让A、B、C服务引入公共服务的Maven依赖。使用服务网关,所有客户端请求服务网关进行请求过滤和权限校验,然后再路由转发到A、B、C服务。第一种方式显然是逆天的,这里不做讨论。第二种方法稍微聪明点,但是如果公共服务的逻辑发生改变,那么所有依赖公共服务的服务都需要重新打包部署才能生效。
所以显而易见,使用服务网关则解决了以上的问题,其他服务不需要加入什么依赖,只需要在网关配置一些参数,然后就能路由转发到对应的后端服务,如果需要请求过滤和权限检验的话,都可以在网关层实现,如果需要更新权限校验的逻辑,只需要网关层修改就可以,其他后端服务不需要修改。
接下来再介绍一下服务网关的功能,主要有:
路由转发API监控权限控制限流所以服务网关很重要!那么接下来我们就以目前比较主流的GateWay进行学习吧。
GateWay入门
首先第一步需要创建一个作为网关的项目,这里使用的SpringBoot版本是2.0.1,引入依赖:
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency></dependencies><dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement>
我们需要使用网关转发请求,那么首先需要有个后端服务,这里我简单地创建了一个user项目。然后启动user项目,写个获取所有用户信息的接口:

那么我们现在配置网关的application.yml实现请求转发。
server: port: 9201spring: application: name: api-gateway cloud: gateway: routes: - id: user_getList #路由的ID uri: http://localhost:8080/user/getList #最终目标的请求地址 predicates: #断言 - Path=/user/getList #路径相匹配的进行路由
也就是说我请求http://localhost:9201/user/getList后,9201端口是网关服务,会匹配/user/getList的路由,最终转发到目标地址http://localhost:8080/user/getList。

这就算是gateway网关的简单使用了。
继续深入
在上面入门的例子中,我们注意到有个predicates的配置,有点对其似懂非懂的感觉。中文翻译过来叫做断言,有点类似于Java8的Stream流里的Predicate函数的意思。如果断言是真的,则匹配路由。
除此之外,gateway的另一个核心是Filter(过滤器),Filter有全局和局部两种。那么整个gateway的流程是怎么样的呢?请看下图:

从图中可以看出,gateway的两大核心就是断言(Predicate)和过滤(Filter),接下来我们重点讲讲这两者的使用。
Route Predicate 的使用
Spring Cloud Gateway包括许多内置的Route Predicate工厂,所以可以直接通过配置直接使用各种内置的Predicate。
After Route Predicate
在指定的时间之后请求匹配该路由。
spring: cloud: gateway: routes: - id: user_getList uri: http://localhost:8080/user/getList predicates: - After=2021-10-30T01:00:00+08:00[Asia/Shanghai]
Before Route Predicate
在指定时间之前的请求会匹配该路由。
spring: cloud: gateway: routes: - id: user_getList uri: http://localhost:8080/user/getList predicates: - Before=2021-10-30T02:00:00+08:00[Asia/Shanghai]
Between Route Predicate
在指定时间区间内的请求会匹配该路由。
spring: cloud: gateway: routes: - id: user_getList uri: http://localhost:8080/user/getList predicates: - Between=2021-10-30T01:00:00+08:00[Asia/Shanghai],2021-10-30T02:00:00+08:00[Asia/Shanghai]
Cookie Route Predicate
带有指定Cookie的请求会匹配该路由。
spring: cloud: gateway: routes: - id: user_getList uri: http://localhost:8080/user/getList predicates: - Cookie=username,yehongzhi
使用POSTMAN发送带有Cookie里username=yehongzhi的请求。
相关阅读
-
高级打印怎么改为普通打印 图片高级打印怎么改为普通打印
IT袋网为大家说一说高级打印怎么改为普通打印的相关话题,关于高级打印怎么改为普通打印 图片高级打印怎么改为普通打印,接下来一起来看看吧。 图文步骤: 1、点击电脑桌面左下角的开
-
如何看笔记本电脑的配置参数 最实用的办公笔记本电脑
今日重点为您介绍如何看笔记本电脑的配置参数和最实用的办公笔记本电脑的介绍,请看下面详细的介绍。 电脑的配置一般指电脑硬件配件的高档程度和性价比,计算机的性能主要取决于主要
-
腾讯文档在线表格怎么添加一行 腾讯文档在线表格怎么添加一行编辑
本文核心内容:腾讯文档在线表格怎么添加一行的IT知识,关于腾讯文档在线表格怎么添加一行 腾讯文档在线表格怎么添加一行编辑,接下来IT袋小编就来介绍。 腾讯文档的在线表格工具是现
-
抖音一起看会显示所有内容吗 抖音显示在线就一定在看抖音吗
小编为网友们解答抖音一起看会显示所有内容吗的电脑小知识,抖音一起看会显示所有内容,仅有主持人(即用户本人)能上下滑动切换视频,对播放的视频进行点赞、评论、转发等操作。


