Nacos 是一个用于动态服务发现、配置管理和服务管理的平台。学习 Nacos 的基础语法和配置对于有效地管理和维护微服务架构非常重要。以下是一些关键的基础语法和概念,涵盖了服务注册与发现、配置管理等方面。
基础概念
-
服务注册与发现
- 服务提供者将自身信息注册到 Nacos 中。
- 服务消费者从 Nacos 获取所需的服务实例列表。
-
配置管理
- 管理应用的各种配置文件,支持实时更新和热加载。
-
命名空间(Namespace)
- 用于隔离不同的环境或项目组,如开发、测试、生产环境。
-
分组(Group)
- 在同一个命名空间内,可以按功能或业务模块进行分组。
-
数据 ID(Data ID)
- 配置文件的唯一标识符,通常包括文件名和扩展名,如
example.properties
。
- 配置文件的唯一标识符,通常包括文件名和扩展名,如
-
集群模式
- 支持单机模式和集群模式,确保高可用性。
主要配置文件
- application.properties
- Nacos 服务器的主要配置文件,位于
conf/application.properties
。
- Nacos 服务器的主要配置文件,位于
关键配置项
application.properties 示例
Properties
# Spring Boot 应用配置
server.port=8848
# 数据库连接配置
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=nacos
db.password=nacos
# 集群配置
nacos.core.auth.enabled=false
nacos.cluster.enabled=true
nacos.core.auth.system.type=nacos
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
# 其他配置
management.endpoints.web.exposure.include=*
服务注册与发现
使用 Spring Cloud Alibaba 进行服务注册与发现
- 添加依赖
在 pom.xml
中添加 Nacos Discovery 依赖:
xml
XML
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.配置 application.yml
在 src/main/resources/application.yml
中配置 Nacos 服务器地址:
yaml
XML
spring:
application:
name: your-service-name
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
3.启用服务注册
在主类上添加 @EnableDiscoveryClient
注解:
java
java
package com.yourcompany.yourservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class YourServiceApplication {
public static void main(String[] args) {
SpringApplication.run(YourServiceApplication.class, args);
}
}
配置管理
使用 Spring Cloud Alibaba 进行动态配置管理
- 添加依赖
在 pom.xml
中添加 Nacos Config 依赖:
xml
XML
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.配置 bootstrap.yml
在 src/main/resources/bootstrap.yml
中配置 Nacos 配置中心地址:
yaml
XML
spring:
application:
name: your-service-name
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
3.使用配置
在需要使用配置的地方注入配置属性:
java
java
package com.yourcompany.yourservice.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppConfig {
@Value("${your.config.property:default_value}")
private String configProperty;
public String getConfigProperty() {
return configProperty;
}
}
控制台操作
-
登录控制台
- 打开浏览器,访问
http://127.0.0.1:8848/nacos
。 - 默认用户名和密码为
nacos
。
- 打开浏览器,访问
-
服务管理
- 在"服务列表"中查看已注册的服务。
- 可以手动添加、删除和编辑服务实例。
-
配置管理
- 在"配置管理"中添加、编辑和发布配置文件。
- 支持多种格式,如 properties、yaml 等。
示例代码
以下是一个简单的示例,展示如何在 Spring Boot 应用中使用 Nacos 进行服务注册与发现和配置管理。
1. 添加依赖
xml
XML
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
2. 配置 bootstrap.yml
yaml
XML
spring:
application:
name: example-service
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
3. 启用服务注册
java
java
package com.example.exampleservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class ExampleServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ExampleServiceApplication.class, args);
}
}
4. 使用配置
java
java
package com.example.exampleservice.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AppConfig {
@Value("${app.message:Default Message}")
private String message;
public String getMessage() {
return message;
}
}
5. 控制器示例
java
java
package com.example.exampleservice.controller;
import com.example.exampleservice.config.AppConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@Autowired
private AppConfig appConfig;
@GetMapping("/hello")
public String sayHello() {
return "Hello, " + appConfig.getMessage();
}
}
总结
通过掌握上述 Nacos 的基本语法和配置选项,你可以有效地实现服务注册与发现、配置管理等功能,并确保微服务架构的高效性和可维护性。进一步的学习可以通过官方文档和其他资源来深入理解每个配置项的详细用法和最佳实践。
官方文档
这些资源提供了更详细的配置和高级功能介绍,帮助你更好地理解和使用 Nacos。