选注册中心是为了验证nacos的各项功能
测试\异常
启动配置Client模块,很快啊,我就看见一大堆错,内容是这样的,主要有作用的就这三行。
ERROR 37644 --- [ restartedMain] c.a.c.n.registry.NacosServiceRegistry : nacos registry, config-client register failed...NacosRegistration....................
com.alibaba.nacos.api.exception.NacosException: Request nacos server failed:
.....................
Caused by: com.alibaba.nacos.api.exception.NacosException: Client not connected,current status:STARTING
....................
真是刚爬出来沼泽又掉进了大海,这可怎么办,赶紧百度、官网、社区。能找的都找了,方法倒是有几个,但都说是没关防火墙、没开放端接口。这不放屁吗,我要没关防火墙,就访问不到web页面,我几次三番确认,我关了防火墙,这样就不是防火墙的错。
解决异常
重点来了,突然有一个答案说是降低springcloudalibaba的版本,首先说一句我的alibaba版本是2.2.7,答案上说换成2.1.2就行。
此时很怀疑,因为官网给的版本选型是这样的
官方版本确定的地址是:地址
组件版本关系
每个 Spring Cloud Alibaba 版本及其自身所适配的各组件对应版本(经过验证,自行搭配各组件版本不保证可用)如下表所示(最新版本用*标记):
| Spring Cloud Alibaba Version | Sentinel Version | Nacos Version | RocketMQ Version | Dubbo Version | Seata Version |
|---|---|---|---|---|---|
| 2021.0.1.0* | 1.8.3 | 1.4.2 | 4.9.2 | 2.7.15 | 1.4.2 |
| 2.2.7.RELEASE | 1.8.1 | 2.0.3 | 4.6.1 | 2.7.13 | 1.3.0 |
| 2.2.6.RELEASE | 1.8.1 | 1.4.2 | 4.4.0 | 2.7.8 | 1.3.0 |
| 2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE | 1.8.0 | 1.4.1 | 4.4.0 | 2.7.8 | 1.3.0 |
| 2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE | 1.8.0 | 1.3.3 | 4.4.0 | 2.7.8 | 1.3.0 |
| 2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE | 1.7.1 | 1.2.1 | 4.4.0 | 2.7.6 | 1.2.0 |
| 2.2.0.RELEASE | 1.7.1 | 1.1.4 | 4.4.0 | 2.7.4.1 | 1.0.0 |
| 2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE | 1.7.0 | 1.1.4 | 4.4.0 | 2.7.3 | 0.9.0 |
| 2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE | 1.6.3 | 1.1.1 | 4.4.0 | 2.7.3 | 0.7.1 |
毕业版本依赖关系(推荐使用)
下表为按时间顺序发布的 Spring Cloud Alibaba 以及对应的适配 Spring Cloud 和 Spring Boot 版本关系(由于 Spring Cloud 版本命名有调整,所以对应的 Spring Cloud Alibaba 版本号也做了对应变化)
| Spring Cloud Alibaba Version | Spring Cloud Version | Spring Boot Version |
|---|---|---|
| 2021.0.1.0 | Spring Cloud 2021.0.1 | 2.6.3 |
| 2.2.7.RELEASE | Spring Cloud Hoxton.SR12 | 2.3.12.RELEASE |
| 2021.1 | Spring Cloud 2020.0.1 | 2.4.2 |
| 2.2.6.RELEASE | Spring Cloud Hoxton.SR9 | 2.3.2.RELEASE |
| 2.1.4.RELEASE | Spring Cloud Greenwich.SR6 | 2.1.13.RELEASE |
| 2.2.1.RELEASE | Spring Cloud Hoxton.SR3 | 2.2.5.RELEASE |
| 2.2.0.RELEASE | Spring Cloud Hoxton.RELEASE | 2.2.X.RELEASE |
| 2.1.2.RELEASE | Spring Cloud Greenwich | 2.1.X.RELEASE |
| 2.0.4.RELEASE(停止维护,建议升级) | Spring Cloud Finchley | 2.0.X.RELEASE |
| 1.5.1.RELEASE(停止维护,建议升级) | Spring Cloud Edgware | 1.5.X.RELEASE |
而我一开始学习SpringCloud的时候,版本选型就是按照这个和Spring官网留下的版本选的。我一开始选的是 Hoxton.SR12 和 2.2.7.RELEASE ,这很符合推荐,但是就报错,debug跟着过去只会看见他比较一个过期时间直接层层抛出异常。我功夫不到位,看不出来什么
所以此时把版本改成 2.1.2 然后等加载好,再跑配置Client,哎,他就好了,很快就好了。比上一个报异常出结果都快,日志告诉我他注册到指定地址的集群了。
问题就这么解决了,浪费了一下午一晚上的时间
==========================================
以下是我的父工程版本控制pom文件的部分
父工程版本控制(一部分)
除了2.2.7,都行,2.2.1、2.1.2、2.2.6我用了都能注册到nacos集群并且获取到指定命名空间、组、文件名的配置文件里面的内容。
<!-- dependencyManagement 标签用于父工程,标签里面的坐标只是用来声明将来引用父工程坐标的子工程依赖版本
这是一种聚合操作,当子类没有声明版本使用的依赖就和父类保持一致,声明了就用子类自己的
子模块继承之后,提供作用:锁定版本+子modlue不用写groupId和version -->
<dependencyManagement>
<dependencies>
<!--spring boot 2.3.12.RELEASE-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.3.12.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud Hoxton.SR12-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR12</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud alibaba 2.2.7.RELEASE-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<!-- 在官方给出的版本匹配,应该是 SR12 和 2.2.7 -->
<!-- <version>2.2.7.RELEASE</version>-->
<!-- 在进行往 nacos 集群注册服务时,高版本会报那个 current status:STARTING 错,用这个 2.1.2 直接就好了 -->
<!-- <version>2.1.2.RELEASE</version>-->
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
结果
此时控制台告诉你ConfigClient模块注册到注册中心,并且没报错,然后你发送请求,获取配置文件内容,获取到了。更改配置文件内容,再次刷新,就能获取到。
用2.1.2这个版本的时候,这个过程你可以在控制台看见每过两秒控制台就会输出一句话获取GroupKey[],如果你更改了配置文件里面就有一大坨,包括命名空间、组名、文件名、改的内容。然后你去浏览器刷新请求,就能拿到,很快。nacos做配置中心还是方便,就是推荐的版本有些叫我难受
我还碰见了个情况,我启动了多个服务注册到nacos,但是能拿到配置文件内容,但是在模块管理看不见注册进去的模块,我就退了重新登录就能看见了。
然后还有就是,有时候刷新会提示你请求坏了,我估计是我的小CentOS快要被撑爆了,所以加载的有些慢,多刷几次,更暴力,他就不叫了。
好,nacos配置集群,3节点启动,nginx代理,切换数据源,服务注册、配置获取、动态刷新。就都试过了