SpringCloudAlibaba升级手册-nacos问题记录

news2024/12/28 17:09:30

目录

一、前言

二、升级过程

1.问题

2.原因

3.出处

4.理论解决

5.测试环境问题

6.Spring Cloud Alibaba版本对比

7. Spring Cloud Alibaba适配组件版本对比

8.降低Spring Cloud版本

9.SpringCloud与SpringBoot兼容对比表

10.naocs-client版本对比

三、最终解决


一、前言

背景

项目做改造工作,要符合架构的某些要求,进行的版本升级工作。

技术清单

序号

类型

版本现状

新版本选择

1

SpringBoot

2.3.2.RELEASE

2.7.18

2

SpringCloud

Hoxton.SR9

2021.0.9

3

SpringCloudAlibaba

2.2.6.RELEASE

2021.0.5.0

4

nacos-client

1.4.2

2021.0.5.0内嵌2.2.0

5

Nacos 服务端

2.2.3

不变

        Nacos2.0的服务端完全兼容1.X客户端。Nacos2.0客户端由于使用了gRPC,无法兼容Nacos1.X服务端,请勿使用2.0以上版本客户端连接Nacos1.X服务端。

二、升级过程

1.问题

等其他兼容性问题,编译问题解决完,启动时,报错,错误信息:

Client not connected, current status:STARTING

2.原因

Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口,9848,9849。

3.出处

Nacos 2.0.0 兼容性文档:

Nacos 2.0.0 兼容性文档

4.理论解决

        本地开通了访问处于测试环境的nacos服务端的9848端口,本地服务成功注册到测试环境nacos上。

5.测试环境问题

        把项目打包部署到测试linux环境,依然报这个错误,随后在已开通9848端口防火墙的基础上又开通了9849,7848两个接口,(注:测试环境是单台单节点服务部署),依然不行。

6.Spring Cloud Alibaba版本对比

        排查了各种网络问题后,最后不得不从版本兼容性考虑,又仔细阅读了spring-cloud-alibaba的版本说明文档。

版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub

        由于 Spring Boot 3.0,Spring Boot 2.7~2.4 和 2.4 以下版本之间变化较大,目前企业级客户老项目相关 Spring Boot 版本仍停留在 Spring Boot 2.4 以下,为了同时满足存量用户和新用户不同需求,社区以 Spring Boot 3.0 和 2.4 分别为分界线,同时维护 2022.x、2021.x、2.2.x 三个分支迭代。如果不想跨分支升级,如需使用新特性,请升级为对应分支的新版本。 为了规避相关构建过程中的依赖冲突问题。

        我们项目使用了Spring Boot 2.7.x,然后选择spring-cloud-alibaba2021.x,2021.x 分支适配 Spring Boot 2.4,Spring Cloud 2021.x 版本及以上的 Spring Cloud Alibaba 版本按从新到旧排列如下表(最新版本用*标记):

Spring Cloud Alibaba Version

Spring Cloud Version

Spring Boot Version

2021.0.5.0*

Spring Cloud 2021.0.5

2.6.13

2021.0.4.0

Spring Cloud 2021.0.4

2.6.11

2021.0.1.0

Spring Cloud 2021.0.1

2.6.3

2021.1

Spring Cloud 2020.0.1

2.4.2

7. Spring Cloud Alibaba适配组件版本对比

每个 Spring Cloud Alibaba 版本及其自身所适配的各组件对应版本如下表所示:

Spring Cloud Alibaba Version

Sentinel Version

Nacos Version

RocketMQ Version

Dubbo Version

Seata Version

2022.0.0.0

1.8.6

2.2.1

4.9.4

~

1.7.0

2022.0.0.0-RC2

1.8.6

2.2.1

4.9.4

~

1.7.0-native-rc2

2021.0.5.0

1.8.6

2.2.0

4.9.4

~

1.6.1

2.2.10-RC1

1.8.6

2.2.0

4.9.4

~

1.6.1

2022.0.0.0-RC1

1.8.6

2.2.1-RC

4.9.4

~

1.6.1

2.2.9.RELEASE

1.8.5

2.1.0

4.9.4

~

1.5.2

2021.0.4.0

1.8.5

2.0.4

4.9.4

~

1.5.2

2.2.8.RELEASE

1.8.4

2.1.0

4.9.3

~

1.5.1

2021.0.1.0

1.8.3

1.4.2

4.9.2

~

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

        如图所示,如果Springboot是2.7.x,选择SpringCloudAlibaba的版本为2021.0.5.0较为合适,实际到了测试环境,项目启动不成功的,难道对SpringCloud的小版本有敏感要求?

8.降低Spring Cloud版本

        把SpringCloud 2021.0.9改为表中的Spring Cloud 2021.0.5不行。剩下的是Springboot版本不一致了,项目用的2.7.18,Spring Cloud Alibaba版本对比中,要求Springboot是2.6.13那这个做不到,架构受限要求,去SpringCloud官网查找SpringCloud与SpringBoot的版本兼容。

9.SpringCloud与SpringBoot兼容对比表

Spring Cloud官网

Release Train

Spring Boot Generation

2024.0.x aka Moorgate

3.4.x

2023.0.x aka Leyton

3.3.x, 3.2.x

2022.0.x aka Kilburn

3.0.x, 3.1.x (Starting with 2022.0.3)

2021.0.x aka Jubilee

2.6.x, 2.7.x (Starting with 2021.0.3)

2020.0.x aka Ilford

2.4.x, 2.5.x (Starting with 2020.0.3)

Hoxton

2.2.x, 2.3.x (Starting with SR5)

Greenwich

2.1.x

Finchley

2.0.x

Edgware

1.5.x

Dalston

1.5.x

Spring Cloud 2021.0.5对springBoot2.7.x是兼容的,Spring Cloud Alibaba只认2.6.13

        剩下的还有一个Alibaba自己组件版本不同的地方,Spring Cloud 2021.0.5要求Naocs版本是2.2.0,而我们系统的是2.2.3,难道让我卸载高版本Nacos服务端换成低版本的,生产环境集群也是2.2.3,测试环境换成了nacos2.2.0。

        好像还是启动失败,但是Nacos兼容性文档里说,高版本的Nacos服务端是兼容低版本的客户端的。

10.naocs-client版本对比

Spring Cloud Alibaba版本

nacos-client版本

Spring Cloud 版本

2021.0.5.0

2.2.0

2021.0.5

2021.0.4.0

2.0.4

2021.0.4

2021.0.1.0

1.4.2

2021.0.1

2021.1

1.4.1

2020.0.1

三、最终解决

        SpringCloud依然使用规定的2021.0.9,把SpringCloudAlibaba的版本降到2021.0.1.0,使用nacos-client1.4.2,不用什么gRPC协议替换http协议,条件满足后,卸载Nacos改为consul。

Maven中央仓库下载地址:

https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery

能提供思路的技术博客:

项目启动不了网关模块解决:Client not connected, current status:STARTING_client not connected current status-CSDN博客

https://zhuanlan.zhihu.com/p/675727483?utm_campaign=shareopn&utm_medium=social&utm_psn=1854727891834761217&utm_source=wechat_session

https://zhuanlan.zhihu.com/p/709652782?utm_campaign=shareopn&utm_medium=social&utm_psn=1854729147697487872&utm_source=wechat_session

nacos错误:com.alibaba.nacos.api.exception.NacosException: failed to req API:/nacos/v1/ns/instance_nacos清除缓存-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2267025.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

15、【OS】【Nuttx】OS裁剪,运行指定程序,周期打印当前任务

背景 接之前wiki【Nsh中运行第一个程序】https://blog.csdn.net/nobigdeal00/article/details/144728771 OS还是比较庞大,且上面搭载了Nsh(Nuttx Shell),需要接入串口才能正常工作,一般调试的时候用,非调试…

C# 窗体应用程序嵌套web网页,基于谷歌浏览器内核(含源码)

有一个winform项目,需要借助一个web项目来显示,并且对web做一些操作,web页目是需要用谷歌内核,基于谷歌 Chromium项目的开源Web Browser控件来开发写了一个demo。 安装步骤 第一步:右键项目,点击 管理NuGet程序包 , 输…

通过远程控制软件实现企业高效协作

在这个信息技术迅猛发展的时代,远程办公已经成为一种趋势,而远程控制软件则是连接分散团队的重要工具。技术的革新不仅推动了远程控制软件的广泛应用,也为现代办公带来了高效的协作体验。本文将探讨远程控制软件的发展,并以RayLin…

赋能开发者 | 麒麟信安受邀参加2024开放原子开发者大会,以技术为引领,以人才创发展

12月20至21日,以“一切为了开发者”为主题的“2024开放原子开发者大会暨首届开源技术学术大会”在湖北武汉举办。本届大会由开放原子开源基金会、中国通信学会联合主办,旨在贯彻落实国家软件发展战略,加速培育壮大我国开源生态。工业和信息化…

每天40分玩转Django:Django国际化

Django国际化 一、今日学习内容概述 学习模块重要程度主要内容国际化基础⭐⭐⭐⭐⭐基本概念、配置设置字符串翻译⭐⭐⭐⭐⭐翻译标记、消息文件模板国际化⭐⭐⭐⭐模板标签、过滤器动态内容翻译⭐⭐⭐⭐模型字段、表单翻译 二、国际化基础配置 # settings.py# 启用国际化 …

Elasticsearch 国产化替代方案之一 Easysearch 的介绍与部署指南

一、前言 在国内数字化转型浪潮和 信创 大背景下,“替代进口”成为许多企业级应用所需要面对的重要课题,搜索领域也不例外。 Elasticsearch(简称 ES)作为一款业界领先的全文搜索和分析引擎,虽然功能强大,但…

Ubuntu 24.04.1 LTS 配置静态固定IP地址

查看网络配置信息 ip addr使用该命令查看网卡名字,一般是ens33或者ens32 修改配置文件 打开 /etc/netplan/下面的yaml配置文件 根据自己的需要配置 network:ethernets:ens33: # 配置的网卡的名称addresses: [192.168.23.140/24] # 配置的静态ip地址和掩码d…

Deep Deterministic Policy Gradient (DDPG)算法

代码 import torch import torch.nn as nn import torch.optim as optim import numpy as np import gym import random from collections import deque# 定义 Actor 网络 class Actor(nn.Module):def __init__(self, state_dim, action_dim, max_action):super(Actor, self).…

C++ OCR 文字识别

一.引言 文字识别,也称为光学字符识别(Optical Character Recognition, OCR),是一种将不同形式的文档(如扫描的纸质文档、PDF文件或数字相机拍摄的图片)中的文字转换成可编辑和可搜索的数据的技术。随着技…

【解决报错】AttributeError: ‘NoneType‘ object has no attribute ‘group‘

学习爬虫时,遇到如下报错: 报错原因: 正则表达式的 search 或 finditer 方法没有找到任何匹配项,可能是换行符处理不当等。 解决方法如下: 在正则表达式末尾加上re.S即可,re.S是一个编译标志&#xff0c…

JVM实战—3.JVM垃圾回收的算法和全流程

大纲 1.JVM内存中的对象何时会被垃圾回收 2.JVM中的垃圾回收算法及各算法的优劣 3.新生代和老年代的垃圾回收算法 4.避免本应进入S区的对象直接升入老年代 5.Stop the World问题分析 6.JVM垃圾回收的原理核心流程 7.问题汇总 1.JVM内存中的对象何时会被垃圾回收 (1)什么…

基于SpringBoot在线音乐系统平台功能实现十八

一、前言介绍: 1.1 项目摘要 随着互联网技术的迅猛发展和普及,人们对音乐的获取和欣赏方式发生了巨大改变。传统的音乐播放方式,如CD、磁带或本地下载的音乐文件,已经不能满足用户日益增长的需求。用户更希望通过网络直接获取各…

RouYi-Vue框架,环境搭建以及使用

使用若以框架需要配置node.js,如果不了解可以去看node.js安装,uni-app的配置使用_uniapp使用nodejs类库-CSDN博客 安装若依 首先是去若以官网下载自己所需要的框架类型 RuoYi-Vue: 🎉 基于SpringBoot,Spring Security&#xff…

XL系列433芯片、2.4G收发芯片 通讯对码说明

XL系列433芯片对码说明: 发射芯片 XL4456 通过数据脚接收高低电平然后经过调制将波形发出,而接收芯片 XL520 通过接收波形后进行解调,数据脚输出高低电平。至于具体的通信协议,需要用户自定义,一般而言,使…

蓝牙BLE开发——解决iOS设备获取MAC方式

解决iOS设备获取MAC方式 uniapp 解决 iOS 获取 MAC地址,在Android、iOS不同端中互通,根据MAC 地址处理相关的业务场景; 文章目录 解决iOS设备获取MAC方式监听寻找到新设备的事件BLE工具效果图APP监听设备返回数据解决方式ArrayBuffer转16进制…

期权懂|如何计算期权卖方平仓后的盈利?

锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 如何计算期权卖方平仓后的盈利? 期权卖方平仓后的盈利计算涉及多个因素,包括期权的交易价格、平仓价格以及权利金的变动等。 交易价格:期权卖…

QT:一个TCP客户端自动连接的测试模型

版本 1:没有取消按钮 测试效果: 缺陷: 无法手动停止 测试代码 CMakeLists.txt cmake_minimum_required(VERSION 3.19) project(AutoConnect LANGUAGES CXX)find_package(Qt6 6.5 REQUIRED COMPONENTS Core Widgets Network)qt_standard_project_setup(…

uniapp中wx.getFuzzyLocation报错如何解决

一、用wx.getLocation接口审核不通过 用uniapp开发小程序时难免需要获取当前地理位置。 代码如下: uni.getLocation({type: wgs84,success: function (res) {console.log(当前位置的经度: res.longitude);console.log(当前位置的纬度: r…

解决Ubuntu下无法装载 Windows D盘的问题

电脑安装了 Windows 和 Ubuntu 24.04 后,在Ubuntu系统上装载 D盘,发现无法装载错误如下: Error mounting /dev/nvme0n1p4 at /media/jackeysong/Data: wrong fs type, bad option, bad superblock on /dev/nvme0n1p4, missing codepage or h…

硬件设计-高速电路的过孔

目录 摘要 : 过孔的机械特性: 过孔直径: 过孔焊盘尺寸 摘要 : 过孔这个词指得是印刷电路板( PCB )上的孔。过孔可以用做焊接插装器件的焊( Through hole) ,也可用做连接层间走…