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>
步骤二: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 !
综上,既然不是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"
解决方案
# 在二者上面加上 JAVA_HOME 对应的 jdk的路径地址即可
set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_301"
问题二:当我们解决上述问题之后通过命令行再次启动 startup.cmd 时启动报错
这里会持续尝试 starting 你会发现 第一行有 server IP list of Nacos is []
这不就问题来了?作为第一次启动而且也没有集群配置启动不起来很正常。
所以可以肯定跟 Nacos 启动模式是有关的
解决方案1
版本低的模式是单机启动,版本高的默认是all方式启动
startup.cmd -m standalone # 单机模式启动
解决方案2
set MODE=“all”
set MODE=“standalone”
步骤四:Add Nacos server address configurations to file /src/main/resources/application.properties.
spring:
cloud:
nacos:
server-addr: 192.168.56.1:8848
步骤五:Use the @EnableDiscoveryClient annotation to turn on service registration and discovery.
这里用 GrainmallCouponApplication 来进行举例
@SpringBootApplication
@EnableDiscoveryClient
public class GrainmallCouponApplication {
public static void main(String[] args) {
SpringApplication.run(GrainmallCouponApplication.class, args);
}
}
步骤六:进行测试
错误信息: 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
运行结果
http://192.168.56.1:8848/nacos/#/login
默认用户名称:nacos
默认用户密码:nacos
注册成功啦~
步骤七:依次将每个模块进行相应配置,使得每个模块注册到注册中心当中