Nacos简介
2018年6月,Eureka 2.0宣布闭源(但1.X版本仍然活跃),同年7月,阿里Nacos宣布开源,并迅速成为国内开发者关注的焦点。作为Eureka的替代品,Nacos目前已经成为国内开发者的首选。
Nacos(Dynamic Naming and Configuration Service)最初开源时,选择将内部的三个产品(Configserver非持久注册中心,VIPServer持久化注册中心,Diamond配置中心)合并并统一开源。其定位为一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。因此,Nacos被认为是一个注册中心组件,但它不仅限于此功能。
截至目前,Nacos几乎支持所有的主流语言,如Java、Go、C++、Node.js、Python、Scala等。
Nacos是Spring Cloud Alibaba的组件,而Spring Cloud Alibaba遵循Spring Cloud定义的服务注册和发现规范。因此,使用Nacos和使用Eureka对于微服务并没有太大区别。
主要差异在于:
Eureka需要单独搭建一个服务,而Nacos不需要自行搭建服务,其组件已经预先准备好,只需启动即可。
相应的依赖和配置略有不同。
Nacos安装
本文使用的是单机安装。download.fastgit.orghttps://download.fastgit.org/alibaba/nacos/releases/download/2.2.3/nacos-server-2.2.3.zip把链接放到迅雷上下载会比较快。本文使用的是2.2.3
压缩包的内容如下:
Windows安装
把下载后的安装包解压缩到任何一个没有中文的文件夹下即可。
修改启动方式
nacos默认启动方式是集群,如果不是,需要修改成单机模式。
用任意文本编辑器打开bin下的startup.cmd。
把set MODE="cluster" 改成 set MODE="standalone"
启动nacos
进入bin目录双击startup.cmd即可。
如果点击无反应,注意一下是否配置了jdk的环境变量。
访问 127.0.0.1:8848/nacos 出现以下界面就成功了。
Linux安装
解压安装包
把下载的安装包解压到某个目录下。
修改启动方式
同Windows
启动nacos
#进入nacos/bin目录下
# CentOS命令
sh startup.sh -m standalone
# Ubuntu命令
bash startup.sh -m standalone
输入IP:8848\nacos访问(记得在防火墙打开端口)
常见问题
- 主机上都要有jdk运行,版本大于等于8。Windows中还要添加到环境变量中。
- 报错日志在nacos/logs/nacos.log下
- 端口号冲突。可能会与8848有冲突,要么杀死8848的进程,要么在配置文件中修改端口号,在conf目录下的application.properties中的server.port
Nacos简单使用
按照http://t.csdnimg.cn/ahirj 基础来开始Nacos的使用。
引入依赖
Spring Cloud Alibaba 与 Spring Cloud的版本要对应上。具体参考下面的文档。版本发布说明 | https://sca.aliyun.com
在父项目的pom文件的 <properties> 部分指定Spring Cloud Alibaba版本
<spring-cloud-alibaba.version>2022.0.0.0-RC2</spring-cloud-alibaba.version>
同时在 dependencies 部分引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
完整父项目pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>spring-cloud-nacos</artifactId>
<version>1.0-SNAPSHOT</version>
<modules>
<module>order-service</module>
<module>product-service</module>
</modules>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.6</version>
<relativePath/>
</parent>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<java.version>17</java.version>
<mybatis.version>3.0.3</mybatis.version>
<mysql.version>8.0.33</mysql.version