Nacos(Naming and Configuration Service)是一个开源的分布式服务发现和配置管理系统,由阿里巴巴开源,用于帮助开发者实现微服务架构中的服务注册、发现、动态配置等功能。Nacos 提供了服务注册与发现、动态配置、服务健康检查等核心功能,适用于各种基于云原生架构的应用。
前往 Nacos 的 GitHub 仓库下载最新版本的 Nacos 发行版。
将下载的压缩包解压到你希望安装 Nacos 的目录
进入解压后的 Nacos\bin目录,cmd中执行以下命令启动 Nacos 服务器(单机启动)
startup.cmd -m standalone
出现如下界面则代表启动成功
由于每次启动都需要到对应目录使用命令打开非常麻烦,所以在这里提供一个简单的启动脚本,方便启动Nacos
start cmd /k "cd /d 安装目录路径 && startup.cmd -m standalone"
一旦 Nacos 服务器启动,你可以使用 Web 控制台或 API 来进行服务注册、发现、配置等操作。
Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说,并没有太大区别。
首先,需要在 Spring Cloud 项目的 pom.xml 文件中添加 Nacos 相关的依赖
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>
在 Spring Cloud 项目的配置文件(如 application.yml 或 application.properties)中配置连接到 Nacos 服务器的地址
spring:
cloud:
nacos:
config:
server-addr: localhost:8848 # Nacos 服务器地址
application: # 服务名称 名称唯一,如果一样就自动成了集群
name: example
在 Spring Cloud 项目的主启动类上添加@EnableDiscoveryClient 注解,启用服务发现功能
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
启动后就可以在Nacos的服务列表中看到注册的服务
注:同上,需要先添加 Nacos 依赖和配置 Nacos 服务器地址
在 Nacos 控制台上创建配置数据。例如,可以创建一个名为 my-service-dev.yaml 的配置文件,内容如下
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
然后,在 Spring Cloud 项目的 bootstrap.yml(或 bootstrap.properties)文件中配置 Nacos 配置中心的配置
spring:
application:
name: my-service
cloud:
nacos:
config:
server-addr: ${NACOS_SERVER_ADDR:localhost:8848}
group: DEFAULT_GROUP
file-extension: yaml
在 Spring Cloud 项目中,使用 @Value 注解或 @ConfigurationProperties 注解来获取从 Nacos 中获取的配置值
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@Value("${spring.datasource.url}")
private String datasourceUrl;
@GetMapping("/config")
public String getConfig() {
return "Datasource URL: " + datasourceUrl;
}
}
在上述示例中,@Value(“${spring.datasource.url}”) 会从 Nacos 配置中心获取名为 spring.datasource.url 的配置值
综上所述,Nacos 可以在 Spring Cloud 项目中用于实现服务注册、发现和配置管理。通过添加依赖、配置 Nacos 服务器地址、使用 @EnableDiscoveryClient 启用服务发现,以及使用 @Value 注解获取配置,你可以方便地在 Spring Cloud 项目中使用 Nacos。