SpringCloud怎么使用Nacos做注册中心+配置中心?
Posted Java_程_序_员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud怎么使用Nacos做注册中心+配置中心?相关的知识,希望对你有一定的参考价值。
Nacos是阿里生态下, 用于微服务注册与发现、配置管理实时刷新的微服务平台. 默认使用嵌入式持久化, 可支持mysql数据库持久化
安装Nacos服务1.下载nacos服务 版本 1.3.2 Windows下下载zip包并解压
2.可使用默认方式持久化, 跳过此步骤. 如果使用mysql, 需要创建数据库nacos, 执行conf/nacos-mysql.sql, 并修改application.properties, 配置MySQL连接信息
### If use MySQL as datasource:
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
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=root
db.password=root
3.双击bin/startup.cmd, 启动nacos, 如果是单节点启动, 需要修改startup.cmd, 否则会报错
4.访问地址 http://localhost:8848/nacos/index.html username: nacos password: nacos
set MODE="standalone" // 默认为cluster调整provider
set FUNCTION_MODE="all"
set SERVER=nacos-server
set MODE_INDEX=-1
set FUNCTION_MODE_INDEX=-1
set SERVER_INDEX=-1
set EMBEDDED_STORAGE_INDEX=-1
set EMBEDDED_STORAGE=""
1.调整pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 如果使用配置中心, 需要依赖此jar -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
</dependencies>
2.配置bootstrap.yml, 注意名称一定要是bootstrap
server:
port: 8079
spring:
application:
name: provider
cloud:
nacos:
config:
enable: true
server-addr: localhost:8848
discovery:
enabled: true
server-addr: localhost:8848
3.设置Applicaiton
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
4.添加controller
@RestController调整consumer
public class IndexController {
@GetMapping("/index")
private String index() {
return "success";
}
}
1.调整pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
</dependencies>
2.配置bootstrap.yml, 注意名称一定要是bootstrap
server:
port: 8081
spring:
application:
name: consumer
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml # 此处为配置使用的后缀名
discovery:
server-addr: localhost:8848
3.设置Applicaiton
@EnableFeignClients
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
4.添加FeginClient
@FeignClient(name = "provider")
public interface ProviderFeignClient {
@GetMapping("/index")
String index();
}
5.添加配置映射
@Component
@RefreshScope // 添加此注解表示会实时更新value 另外需要给属性添加get set方法
public class NacosConfig {
@Value("${is_test:true}") // 此处true为默认值
private boolean isTest;
public boolean isTest() { return isTest; }
public void setIsTest(boolean isTest) { this.isTest = isTest; }
}
6.添加controller, controller处不能添加@RefreshScope注解, 否则使用@Value获取不到配置信息
@RestController
public class IndexController {
@Autowired
private NacosConfig config;
@Autowired
private ProviderFeignClient providerFeignClient;
@GetMapping("/index")
private String index() {
return config.isTest() + "--" + providerFeignClient.index();
}
}
7.nacos管理后台添加配置信息 配置管理->配置列表->右侧"+", 注意Data ID格式
${prefix}-${spring.profiles.active}.${file-extension}
8.启动provider, consumer, 可在nacos管理平台查看服务状态
9.consumer启动关键日志, consumer已获取到配置信息
2020-10-25 09:47:22.928 WARN 4032 --- [ main] c.a.c.n.c.NacosPropertySourceBuilder : Ignore the empty nacos configuration and get it based on dataId[consumer] & group[DEFAULT_GROUP]
2020-10-25 09:47:22.942 INFO 4032 --- [ main] c.a.c.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: \'consumer.yaml\', group: \'DEFAULT_GROUP\', data: is_test: false
2020-10-25 09:47:22.949 INFO 4032 --- [ main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource {name=\'NACOS\', propertySources=[NacosPropertySource {name=\'consumer.yaml\'}, NacosPropertySource {name=\'consumer\'}]}
2020-10-25 09:47:22.954 INFO 4032 --- [ main] c.c.demo.consumer.ConsumerApplication : No active profile set, falling back to default profiles: default
10.访问http://localhost:8081/index, 如果将配置删除, 找不到is_test, 会变为默认值true. 测试
11.在nacos管理平台修改配置is_test值, 可以看到consumer日志变化
2020-10-25 10:01:51.091 INFO 4032 --- [-localhost_8848] o.s.c.e.event.RefreshEventListener : Refresh keys chan
以上是关于SpringCloud怎么使用Nacos做注册中心+配置中心?的主要内容,如果未能解决你的问题,请参考以下文章
微服务架构SpringBoot+SpringCloud+VUE三 || 服务注册与配置中心Nacos
SpringCloud学习 —— SpringCloud Alibaba Nacos服务注册和配置中心