• SpringCloud Alibaba —— Nacos 作为注册中心 —— Nacos 的安装与配置 以及安装后启动可能出现的问题


    📑 SpringCloud Alibaba Nacos 作为注册中心

    🔖 Nacos的配置与启动模块注册

    Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。他是使用 Java 编写。需要依赖 Java 环境

    Nacos 文档地址: https://nacos.io/zh-cn/docs/quick-start.html

    alibaba/spring-cloud-alibaba

    在这里插入图片描述

    步骤一:Add dependency spring-cloud-starter-alibaba-nacos-discovery in the pom.xml file in your Spring Cloud project.

    • 将依赖导入到聚合公共模块当中,因为我们后续的每个模块都需要将服务注册到注册中心。
     <dependency>
         <groupId>com.alibaba.cloudgroupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
     dependency>
    
    • 1
    • 2
    • 3
    • 4

    步骤二:Install Nacos Server by downloading or build from source code.Recommended latest version Nacos Server

    • 因为服务是要注册到注册中心服务器当中的,所以我们需要进行下载并安装 Nacos Server 这个服务中心。

    • Download: Download Nacos Server download page

    • 下载windows 版本进行单机测试,之后续再下载tar.gz安装到Linux上

    步骤三:解压缩之后进入 nacos/bin 目录下 双击startup.cmd 即可

    • 启动成功界面

    在这里插入图片描述

    🔖 总结:第一次在windows下安装启动 Nacos 出现的问题

    问题一:双击startup.cmd 直接闪退并没有出现服务运行进程

    • 此时我们可以通过尝试命令行进行启动
    # 启动命令行进入到nacos/bin目录下
    cd R:\SpringCloud\nacos\bin
    startup.cmd
    > Please set the JAVA_HOME variable in your environment Nacos, We need java(x64):jdk8 or later is better !
    
    • 1
    • 2
    • 3
    • 4
    • 此时就会出现运行错误提示,我们根据提示可以很容易知道出现问题的是 Java的环境变量问题,但是检查环境变量时,的确在本地与系统变量中均设置好了 JAVA_HOME 的 jdk 环境变量。

    📚 综上,既然不是jdk的环境变量问题,为什么还是会报错呢?

    我们通过编辑模式进入startup.cmd中查看代码,是什么原因导致的报错

    if not exist "%JAVA_HOME%\bin\java.exe" echo Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! & EXIT /B 1
    set "JAVA=%JAVA_HOME%\bin\java.exe"
    
    • 1
    • 2
    • 很明显是这句话爆出的错误!

    解决方案

    # 在二者上面加上 JAVA_HOME 对应的 jdk的路径地址即可
    set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_301"
    
    • 1
    • 2

    问题二:当我们解决上述问题之后通过命令行再次启动 startup.cmd 时启动报错

    在这里插入图片描述

    这里会持续尝试 starting 你会发现 第一行有 server IP list of Nacos is []

    • 这里是一个IP List 而且启动之后的第一句话是 nacos is starting with cluster 说明是集群启动 !

    这不就问题来了?作为第一次启动而且也没有集群配置启动不起来很正常。

    在这里插入图片描述

    所以可以肯定跟 Nacos 启动模式是有关的

    解决方案1

    • 通过命令行启动的时候指定其启动模式

    版本低的模式是单机启动,版本高的默认是all方式启动

    startup.cmd -m standalone # 单机模式启动
    
    • 1

    解决方案2

    • 修改启动 startup.cmd 文件

    set MODE=“all”
    set MODE=“standalone”


    步骤四:Add Nacos server address configurations to file /src/main/resources/application.properties.

    • 为每个微服务模块的yaml文件中进行配置对应的 Nacos 服务的服务地址
    spring:
      cloud:
        nacos:
          server-addr: 192.168.56.1:8848
    
    • 1
    • 2
    • 3
    • 4

    步骤五:Use the @EnableDiscoveryClient annotation to turn on service registration and discovery.

    • 可以通过在SpringBoot的主启动类上使用 @EnableDiscoveryClient 这个注解来向注册中心进行注册与服务发现

    这里用 GrainmallCouponApplication 来进行举例

    @SpringBootApplication
    @EnableDiscoveryClient
    public class GrainmallCouponApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(GrainmallCouponApplication.class, args);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    步骤六:进行测试

    • 启动 GrainmallCouponApplication 之后发现启动期间会报错

    错误信息: java.lang.IllegalArgumentException: Param ‘serviceName’ is illegal, serviceName is blank

    📚 解决方案:根据错误信息我们可以知道当前的注册服务的注册模块名不可为空,所以我们需要回到模块对应的applition.yaml中进行配置当前服务名.

    spring:
      cloud:
        nacos:
          server-addr: 192.168.56.1:8848
      application:
        name: grainmall-coupon
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行结果

    http://192.168.56.1:8848/nacos/#/login
    
    • 1

    在这里插入图片描述

    默认用户名称:nacos

    默认用户密码:nacos

    在这里插入图片描述

    • 此时进入到服务管理中查看我们刚才启动的微服务模块是否已经注册到了注册中心中。

    在这里插入图片描述

    注册成功啦~

    步骤七:依次将每个模块进行相应配置,使得每个模块注册到注册中心当中

    • 首先进入到模块中的 application.yaml 的配置文件中 设置对应的nacos 服务地址
    • 其次需要设置模块中的 application.yaml 的配置文件中 设置 当前application-name 因为模块注册名称不可为空
    • 在 每个模块的主启动类上设置好 @EnableDiscoveryClient
  • 相关阅读:
    [vite] Failed to load source map for */*.css.js
    守护进程(初学者必备)
    m低信噪比下GPS信号的捕获算法研究,分别使用matlab和FPGA对算法进行仿真和硬件实现
    谷歌翻译API接口,翻译API接口,翻译API接口申请指南
    算法竞赛进阶指南 0x68 二分图的匹配
    六大银行数据治理现状盘点:治理架构、数据标准与数据平台
    如何成为Spring(认证)中国教育管理中心授权培训合作伙伴?
    解决Springboot使用Junit测试时对数据库的修改无效
    class10:子路由和MVC模型
    Day799.优化垃圾回收机制 -Java 性能调优实战
  • 原文地址:https://blog.csdn.net/fuijiawei/article/details/126001431