SpringCloud整合之中遇到的坑

最近在跟着谷粒商城做项目,但现在是2022年了,视频中的项目是20年,所以我选择了更新一下版本,使用的版本是Cloud2020,CloudAlibaba的是2021.1,SpringBoot版本用的2.5.13,Nacos根据alibaba文档上用的1.4.1。版本说明链接

Nacos的配置中心

在SpringBoot高版本后需要手动加入一个bootstrap依赖,否则不能发现引导文件

        <!-- 根引导文件 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.1</version>
        </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,是在是真正的找了一天的问题,百度的解决方案什么的都试过了,然并卵,最后还是去看官方版本依赖说明,才发现SpringCloud对应alibaba版本
在这里插入图片描述
最后估摸着应该是版本依赖的问题,就重新搭建了一个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

		<!--nacos客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.1</version>
            <!-- 使用spring loadbalancer,弃用ribbon -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2021.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </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发现不到的情况,最后将端口更换至其他完美解决

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值