最近在跟着谷粒商城做项目,但现在是2022年了,视频中的项目是20年,所以我选择了更新一下版本,使用的版本是Cloud2020,CloudAlibaba的是2021.1,SpringBoot版本用的2.5.13,Nacos根据alibaba文档上用的1.4.1。版本说明链接
Nacos的配置中心在SpringBoot高版本后需要手动加入一个bootstrap依赖,否则不能发现引导文件
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-bootstrapartifactId>
<version>3.1.1version>
dependency>
一、Nacos整合的依赖问题
我觉得如果说SSM是配置炼狱,那么Cloud简直就是依赖炼狱,所以最好跟着官方版本走,这里我也是踩了很久的坑,在Nacos整合Gateway网关进行转发的时候,会有跨域的问题,再有就是版本依赖,先发一下跨域的解决
/**
* @author Xiang
* @date 2022/5/2 - 3:08 下午
*/
@Configuration
public class MallCorsConfig {
@Bean
public CorsWebFilter corsWebFilter() {
UrlBasedCorsConfigurationSource configurationSource = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
// corsConfiguration.addAllowedOrigin("*");
// 这里为什么要注释是因为SpringBoot高版本之后需要用 addAllowedOriginPattern
corsConfiguration.addAllowedOriginPattern("*");
corsConfiguration.setAllowCredentials(true);
configurationSource.registerCorsConfiguration("/**", corsConfiguration);
return new CorsWebFilter(configurationSource);
}
}
这是第一个跨域的问题,还有一个就是一个gateway整合nacos进行转发的问题,先说一下我的问题,最开始在进行nacos搭建的时候,我并没有注意nacos的版本,直接docker pull nacos拉下了最新版本,2.1.0,但是我后面整合的时候发现springBoot2.5.13和nacos2.1.0是可以完美契合实现服务发现和配置中心的,所以在整合gateway、nacos的时候也还是用的2.1.0,但后面进行转发的时候gateway的nacos一直爆发现不了服务 no server available: mall-coupon
,返回结果503,是在是真正的找了一天的问题,百度的解决方案什么的都试过了,然并卵,最后还是去看官方版本依赖说明,才发现
最后估摸着应该是版本依赖的问题,就重新搭建了一个1.4.1版本的nacos,这里也有一个坑,1.4.1版本的JVM内存配置默认都是1G和2G,在进行启动的时候要注意设置一下系统配置参数
,贴一下我的docker Nacos命令
[root@VM-16-11-centos ~]# docker pull docker.io/nacos/nacos-server:1.4.1
[root@VM-16-11-centos ~]# docker run -d \
> -e MODE=standalone \
> -e JVM_XMS=256M \
> -e JVM_XMX=256M \
> -e JVM_XMN=256M\
> -e SPRING_DATASOURCE_PLATFORM= mysql \
> -e MYSQL_SERVICE_HOST=你的mysql ip \
> -e MYSQL_SERVICE_PORT=你的端口 \
> -e MYSQL_SERVICE_USER=你的账号 \
> -e MYSQL_SERVICE_PASSWORD=你的密码 \
> -e MYSQL_SERVICE_DB_NAME=你的库名 \
> -p 8848:8848 \
> --restart=always \
> --name nacos \
> docker.io/nacos/nacos-server
还有就是因为ribbon在20年的时候就被宣布停止维护了,所以在Cloud20年开始就移除了ribbon的组件,但是nacos里面还是有默认的ribbon实现负载均衡,这里要替换一下依赖,手动加入loadbalancer
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
<version>2021.1version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-netflix-ribbonartifactId>
exclusion>
exclusions>
dependency>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
<version>2021.1version>
dependency>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-loadbalancerartifactId>
dependency>
Gateway整合踩坑
在使用gateway进行路由的时候,一定要按照官网的版本进行对应,否则会爆出各种花式Exception,比如502,发现不了nacos服务,404等等,切记切记一定要按照官网的版本对应的来。在说一个我的坑,在springCloudAlibaba的版本对应上,cloud用2020.1版本。cloud alibaba使用2021.1,nacos使用1.4.1,然而整合gateway负载均衡路由的时候就爆出nacos配置中心请求监听配置502,最后索性把所有版本全部换至最新推荐,Spring Cloud 2021.0.1,cloud alibaba 2021.0.1.0,nacos1.4.2,SpringBoot2.6.3,最后完美解决
还有一个坑就是,在使用gateway进行路由的时候,如果有服务注册在8080端口上,即时在nacos服务上已经注册成功,但还是出现gateway发现不到的情况,最后将端口更换至其他完美解决
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)