SpringCloudAlibaba-Nacos
运行Nacos服务
官网
https://nacos.io/
单机运行模式
startup.cmd -m standalone
访问 http://localhost:8848/nacos
核心功能
作为服务注册发现(替代Eureka)
添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
添加配置
spring:
application:
name: NACOS-PAYMENT-SERVICE
cloud:
nacos:
discovery:
server-addr: localhost:8848
management:
endpoints:
web:
exposure:
include: '*'
启动类配置@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class NacosProvider9001 {
public static void main(String[] args) {
SpringApplication.run(NacosProvider9001.class, args);
}
}
启动后就可以从nacos网站的服务列表看到当前服务
几个常见注册中心区别
| 组件 | CAP 模型 | 一致性机制 |
|---|---|---|
| Nacos | AP/CP 可切换 | 支持临时节点(AP)和持久节点(CP)模式 |
| Eureka | AP | 最终一致性 |
| Zookeeper | CP | ZAB 协议强一致性 |
| Consul | CP | Raft 协议强一致性 |
Nacos生态图

作为配置中心(替代Config)
添加依赖
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfig3377 {
public static void main(String[] args) {
SpringApplication.run(NacosConfig3377.class);
}
}
添加bootstrap配置
server:
port: 3377
spring:
application:
name: NACOS-CONFIG-3377
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
file-extension: yaml
# 暴露端点
management:
endpoints:
web:
exposure:
include: '*'
可以通过spring.cloud.nacos.config.namespace和 spring.cloud.nacos.config.group指定命名空间和分组
添加application配置
spring:
profiles:
active: dev
创建nacos平台配置
在nacos平台的配置管理 - 配置列表中创建配置,DataID要保持以下格式
${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
其中${spring.cloud.nacos.config.prefix}默认取spring.application.name
需要注意的是,如果file-extension用的yaml,那么DataID的名称也要用yaml,不要用yml后缀
创建测试类
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${data.user.password}")
private String password;
@GetMapping("/getConfigInfo")
public String getConfig() {
return password;
}
}
启动项目后访问测试
curl -X GET "http://localhost:3377/config/getConfigInfo"
1234
# 修改后测试
curl -X GET "http://localhost:3377/config/getConfigInfo"
1235
可以发现nacos不需要重启,立马生效

浙公网安备 33010602011771号