0
点赞
收藏
分享

微信扫一扫

SpringCloud整合之中遇到的坑

霸姨 2022-05-03 阅读 56

最近在跟着谷粒商城做项目,但现在是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>
举报

相关推荐

0 条评论