宁波市建设银行网站批量扫dedecms做的网站
web/
2025/10/5 17:24:09/
文章来源:
宁波市建设银行网站,批量扫dedecms做的网站,做面膜的网站,南京市高淳县建设厅网站SpringCloudGateway网关实战#xff08;一#xff09;
目前对cloud的gateway功能还是不太熟悉#xff0c;因此特意新建了对应的应用来尝试网关功能。
网关模块搭建
首先我们新建一个父模块用于添加对应的springboot依赖和cloud依赖。本模块我们的配置读取使用的是nacos一
目前对cloud的gateway功能还是不太熟悉因此特意新建了对应的应用来尝试网关功能。
网关模块搭建
首先我们新建一个父模块用于添加对应的springboot依赖和cloud依赖。本模块我们的配置读取使用的是nacos因此需要添加相关依赖。另外由于SpringCloud新版本默认将Bootstrap禁用因此我们需要添加对应的依赖才能使bootstrap.yml起作用。
父模块
父模块smallred-gateway依赖 propertiesspring-boot.version2.7.13/spring-boot.versionspring-cloud.version2021.0.8/spring-cloud.versionspring-cloud-alibaba.version2021.0.5.0/spring-cloud-alibaba.version/propertiesdependencies!-- bootstrap 启动器 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId/dependency/dependencies!-- 依赖声明 --dependencyManagementdependencies!-- SpringCloud 微服务 --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependency!-- SpringCloud Alibaba 微服务 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency!-- SpringBoot 依赖配置 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement网关模块
网关模块gateway-api依赖 dependencies!-- SpringCloud Gateway --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency!-- SpringCloud Loadbalancer --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-loadbalancer/artifactId/dependency!-- SpringCloud Alibaba Nacos --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!-- SpringCloud Alibaba Nacos Config --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency/dependencies依赖pom文件创建完后我们需要创建启动类和bootstrap.yml
启动类
SpringBootApplication(exclude {DataSourceAutoConfiguration.class })
public class GatewayApplication { public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}bootstrap.yml
# Tomcat
server:port: 8080# Spring
spring:application:# 应用名称name: gateway-apicloud:nacos:discovery:# 服务注册地址server-addr: nacosIP:8848# 命名空间namespace: nacos命名空间IDconfig:# 配置中心地址server-addr: nacosIP:8848# 命名空间namespace: nacos命名空间ID# 配置文件格式file-extension: yaml需要注意的是我们需要在nacos中创建一个新的命名空间和在该命名空间中创建一个名为gateway-api的yaml配置文件。该文件暂时可以是这样空白的
1系统模块
这个模块用于模拟正常业务模块。
系统模块system-api依赖 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- SpringCloud Openfeign --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency!-- SpringCloud Loadbalancer --dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency!-- SpringCloud Alibaba Nacos --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!-- SpringCloud Alibaba Nacos Config --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency/dependencies依赖pom文件创建完后我们需要创建启动类和bootstrap.yml
启动类这里需要加上服务发现注解EnableDiscoveryClient
EnableDiscoveryClient
SpringBootApplication(exclude {DataSourceAutoConfiguration.class })
public class SystemApplication {public static void main(String[] args) {SpringApplication.run(SystemApplication.class, args);}}bootstrap.yml
# Tomcat
server:port: 9201# Spring
spring:application:# 应用名称name: system-apicloud:nacos:discovery:# 服务注册地址server-addr: nacosIP:8848# 命名空间namespace: nacos命名空间IDconfig:# 配置中心地址server-addr: nacosIP:8848# 命名空间namespace: nacos命名空间ID# 配置文件格式file-extension: yaml创建一个名称为system-api的配置文件目前我们配置为空白即可
1创建一个接口用于测试使用
RestController
RequestMapping(/system)
public class UserController {GetMapping(value /user/info)public String getSystemInfo() {return 欢迎来到系统模块;}}路由配置
网关模块作为统一入口那么就需要一个路由配置来给网关“指路”。
最常用的注册中心配置方式lb。注意这里的predicates是必填的我们先如下进行填写。
spring:cloud:gateway:routes:- id: system-apiuri: lb://system-apipredicates:- Path/system-api/**filters:- StripPrefix1http地址配置方式
spring:cloud:gateway:routes:- id: system-apiuri: http://localhost:9201predicates:- Path/system-api/**filters:- StripPrefix1websocket配置方式
spring:cloud:gateway:routes:- id: system-apiuri: ws://localhost:9201predicates:- Path/system-api/**filters:- StripPrefix1这样请求到
localhost:8080/system-api/system/user/info这个接口时就能成功请求了。
路由规则
讲完路由配置后接下来我们就开始讲对应最多规则的路由规则。
DateTime
spring:cloud:gateway:routes:- id: system-apiuri: lb://system-apipredicates:- After2023-08-20T22:20:00.00008:00[Asia/Shanghai]匹配日期时间之后发生的请求。如果在这个设定的时间之前则报404
Cookie
spring:cloud:gateway:routes:- id: system-apiuri: lb://system-apipredicates:- Cookieloginname, smallred匹配指定名称且其值与正则表达式匹配的cookie。如果不存在对应cookie则报404
Header
spring:cloud:gateway:routes:- id: system-apiuri: lb://system-apipredicates:- HeaderX-Request-Id, \d当发送的请求头部中包含一个名为X-Request-Id的字段并且其值为一个或多个数字时该请求就会匹配到这个路由规则。不含该Header则报404
Host
spring:cloud:gateway:routes:- id: system-apiuri: lb://system-apipredicates:- Host**.somehost.org,**.anotherhost.org任何以.somehost.org或.anotherhost.org作为后缀的域名都可以通过这个路由规则进行匹配。
Method
spring:cloud:gateway:routes:- id: system-apiuri: lb://system-apipredicates:- MethodGET,POST只有发送的请求使用了 GET 或 POST 方法时才会匹配到这个路由规则。其他请求方法如 PUT、DELETE 等将不会被匹配。
Path
spring:cloud:gateway:routes:- id: system-apiuri: lb://system-apipredicates:- Path/system/**只有发送的请求的路径以/system/开头时并且可以包含任意子路径比如/system/user、/system/settings等才会匹配到这个路由规则。
Query
spring:cloud:gateway:routes:- id: system-apiuri: lb://system-apipredicates:- Queryusername, abc.只有发送的请求中包含一个名为username且值为abc.的查询参数时才会匹配到这个路由规则。
RemoteAddr
spring:cloud:gateway:routes:- id: system-apiuri: lb://system-apipredicates:- Cookieloginname, smallred只有发送的请求的远程地址为 192.168.10.1 或者属于 192.168.10.1/0 子网时才会匹配到这个路由规则。
Weight
spring:cloud:gateway:routes:- id: system-apiuri: lb://system-apipredicates:- Weightgroup1, 8- id: user-apiuri: lb://user-apipredicates:- Weightgroup1, 2这两个路由规则示例都使用了权重Weight谓词来进行负载均衡通过设置不同的权重值可以控制转发给不同目标地址的请求的比例。在示例中system-api被选中的概率更高大约是user-api的四倍。
最简单的网关路由配置这里就结束了下一章节我们讲讲更加深入的一些配置。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87476.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!