栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud整合之中遇到的坑

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud整合之中遇到的坑

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

Nacos的配置中心

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

        
        
            org.springframework.cloud
            spring-cloud-starter-bootstrap
            3.1.1
        

一、Nacos整合的依赖问题

我觉得如果说SSM是配置炼狱,那么Cloud简直就是依赖炼狱,所以最好跟着官方版本走,这里我也是踩了很久的坑,在Nacos整合Gateway网关进行转发的时候,会有跨域的问题,再有就是版本依赖,先发一下跨域的解决

@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

		
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
            2021.1
            
            
                
                    org.springframework.cloud
                    spring-cloud-starter-netflix-ribbon
                
            
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
            2021.1
        
        
            org.springframework.cloud
            spring-cloud-loadbalancer
        

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发现不到的情况,最后将端口更换至其他完美解决

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/861068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号