淘宝客网站建设视频教程,wordpress和mvc,逆思维服装设计公司,网络营销工具SpringCloudNacosGatewaySpringBoot整合GatewayNacos一. 环境准备1. 版本环境2. 服务环境二. 实战1.创建用户服务2.创建订单服务3.创建网关服务4.测试三. 避坑指南问题1--503问题问题2--网关服务启动报错SpringBoot整合GatewayNacos
本篇文章只演示通过gateway网关服务访问其他…
SpringCloudNacosGatewaySpringBoot整合GatewayNacos一. 环境准备1. 版本环境2. 服务环境二. 实战1.创建用户服务2.创建订单服务3.创建网关服务4.测试三. 避坑指南问题1--503问题问题2--网关服务启动报错SpringBoot整合GatewayNacos
本篇文章只演示通过gateway网关服务访问其他服务不对gateway的其他功能做演示
一. 环境准备
1. 版本环境
Jdk: java.version1.8/java.versionSpringBoot: version2.4.2/versionSpringCloud: spring.cloud.version2020.0.1/spring.cloud.versionSpringCloudAlibaba: spring-cloud-alibaba.version2021.1/spring-cloud-alibaba.version 以下是项目中pom配置可拿来直接使用 1. 独立订单/用户服务pom文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.4.2/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.scg/groupIdartifactIdspring-cloud-order-center/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-cloud-order-center/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.versionspring.cloud.version2020.0.1/spring.cloud.versionspring-cloud-alibaba.version2021.1/spring-cloud-alibaba.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring.cloud.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.24/version/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project
2. 独立网关服务pom文件
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.4.2/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.scg/groupIdartifactIdspring-cloud-nacos/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-cloud-gateway/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.versionspring.cloud.version2020.0.1/spring.cloud.versionspring-cloud-alibaba.version2021.1/spring-cloud-alibaba.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring.cloud.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency!--得不加上这个配置不然会报503--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build
/project2. 服务环境
本节使用一个简单的案例来演示Spring Cloud Gateway的使用方法,首先我们准备三个SpringBoo应用
spring-cloud-user-center : 独立用户服务spring-cloud-order-center : 独立订单服务spring-cloud-gateway 独立的网关服务
二. 实战
1.创建用户服务
引入相关依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencyyml配置
server:port: 8085spring:application:name: spring-cloud-user-centercloud:nacos:discovery:server-addr: 127.0.0.1:8848ip: 127.0.0.1
management:endpoints:web:exposure:include: *编写测试类
/*** author gf* date 2023/2/14*/
Slf4j
RestController
public class UserController {RequestMapping(/user)public String user(){log.info(hello Mr gateway,this is user server);return hello Mr gateway,this is user server;}
}
由于我们要将服务注册倒注册中心所以我们在以内nacos依赖后要在启动类上添加EnableDiscoveryClient注解
EnableDiscoveryClient
SpringBootApplication
public class SpringCloudUserCenterApplication {public static void main(String[] args) {SpringApplication.run(SpringCloudUserCenterApplication.class, args);}}2.创建订单服务 创建订单服务和创建用户服务的过程一直我们可以在测试类上做些改变以区分后面的调用 订单服务测试类 Slf4j
RestController
public class OrderController {RequestMapping(/order)public String getOrder(){log.info(hello Mr gateway,this is order server);return hello Mr gateway,this is order server;}
}
3.创建网关服务
引入相关依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.4.2/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.scg/groupIdartifactIdspring-cloud-nacos/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-cloud-gateway/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.versionspring.cloud.version2020.0.1/spring.cloud.versionspring-cloud-alibaba.version2021.1/spring-cloud-alibaba.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring.cloud.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependency!--得不加上这个配置不然会报503--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build
/project配置yml文件
server:port: 8082
spring:application:name: gateway_servercloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:discovery:locator:#开启从注册中心动态创建路由的功能利用微服务名进行路由enabled: true#开启小写验证默认feign根据服务名查找都是用的全大写lowerCaseServiceId: trueroutes:- id: spring-cloud-order-centeruri: lb://spring-cloud-order-center# 断言,路径相匹配的进行路由predicates:- Path/order-center/**filters:- StripPrefix1- id: spring-cloud-user-centeruri: lb://spring-cloud-user-center# 断言,路径相匹配的进行路由predicates:- Path/user-center/**filters:- StripPrefix1
management:endpoints:web:exposure:include: *3. 启动类添加EnableDiscoveryClient注解java
EnableDiscoveryClient
SpringBootApplication
public class SpringCloudGatewayApplication {public static void main(String[] args) {SpringApplication.run(SpringCloudGatewayApplication.class, args);}}4.测试 同时启动三台服务我们可以看到这三者服役已经注册到了nacos注册中心中 按照我们的配置访问http://localhost:8082/user-center/user会调用用户中心的的user接口访问http://localhost:8082/order-center/order会调用订单中心的order接口接下来我们测试一下 通过网关访用户服务
通过网关访订单服务
三. 避坑指南
问题1–503问题 解决办法添加如下依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency问题原因 参考gateway 503 问题
问题2–网关服务启动报错
***************************
APPLICATION FAILED TO START
***************************Description:Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.cloud.gateway.config.GatewayAutoConfiguration required a bean of type org.springframework.http.codec.ServerCodecConfigurer that could not be found.Action:Consider defining a bean of type org.springframework.http.codec.ServerCodecConfigurer in your configuration.Process finished with exit code 1问题原因 这是由于所依赖的模块中有 spring-boot-starter-web 的依赖而 SpringCloudGateway 还不支持 spring-boot-starter-web 解决方案 网关服务去掉spring-boot-starter-web依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency