一、nacos概述
nacos是阿里巴巴开源的一个注册和配置中心,使用nacos官网的话说就是“一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。”
二、nacos的安装和启动
1.nacos下载地址:GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
2.nacos解压与安装
cd /usr/upload tar -zxvf nacos-server-1.4.1.tar.gz -C /usr/local
3.nacos的启动与关闭
启动: cd /usr/local/nacos/bin ./startup.sh -m standalone 关闭: cd /usr/local/nacos/bin ./shutdown.sh
访问nacos服务器地址:8848/nacos,输入账户和密码都是nacos
二、nacos服务中心
nacos的服务中心主要存放的是服务的ip和端口等信息
1.在pom中添加依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.bjpowernode</groupId> <artifactId>springcloud_common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
2.创建服务提供者nacos-privoder
1).在springboot启动类中加入@EnableDiscoveryClient注解,其作用是注册自己并切发现其他的服务
@SpringBootApplication @EnableDiscoveryClient // 注册自己并发现其他的服务 public class NacosProviderApp { public static void main(String[] args) { SpringApplication.run(NacosProviderApp.class, args); } }
2).在application.yum中做以下配置
server: port: 8090 spring: cloud: nacos: discovery: server-addr: 192.168.137.114:8848 # 注册中心的地址 application: name: nacos-provider # 注册到nacos的服务名
3.创建服务消费者nacos-consumer
1).在springboot启动类中加入@EnableDiscoveryClient注解,其作用是注册自己并切发现其他的服务
2).在application.yum中做以下配置
server: port: 80 spring: cloud: nacos: discovery: server-addr: 192.168.137.114:8848 # nacos的注册中心地址 application: name: nacos-consumer # 注册到nacos的服务名字
4.在provider中注入DiscoveryClient拼接地址
ServiceInstance service = discoveryClient.getInstances("nacos-provider").get(0); String url = "http://" + service.getHost() + ":" + service.getPort() + "/provider/getUserById/" + id; return restTemplate.getForObject(url, User.class);
去浏览器访问拼接的地址
三、nacos配置中心
nacos的配置中心存放的是服务的配置信息,统一管理项目中的各种配置信息,当各个服务需要获取配置时,就可以来配置中心拉取自己的配置,热部署,当更新完配置后,不需要重启服务即可更新。
1.创建服务配置nacos-config并在pom中添加如下依赖
<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-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
2.bootstrap.yml
注意:客户端配置文件的名称必须为bootstrap.yml
bootstrap.yml比application.yml优先加载,应用于系统级别的参数配置,一般不会变动
application.yml应用于Springboot项目的自动化配置。
1.bootstrap.yml
spring: cloud: nacos: config: server-addr: 192.168.137.114:8848 #注册中心的地址#配置文件的前缀 prefix: nacos-config #配置文件的前缀,默认是spring.application.name file-extension: yaml #配置文件的后缀,默认是properties #Data ID的语法:${spring.cloud.nacos.config.prefix}.${spring.cloud.nacos.config.file-extension}
2.nacos的配置列表里面的配置为
Data ID为nacos-config,使用默认分组就可以
server: port: 8081 spring: cloud: nacos: discovery: server-addr: 192.168.137.114:8848 # 注册中心的地址 application: name: nacos-config # 注册到nacos的服务名
3.configcontroller的配置如下
@RestController
@RefreshScope //重新从BeanFactory获取一个新的实例(该实例使用新的配置)
public class ConfigController {
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.type}")
private String type;
@GetMapping("/config/info")
public String getConfigInfo() {
System.out.println(this);
String configInfo = driverClassName+"<br>"+url+"<br>"+username+"<br>"
+password+"<br>"+type;
return configInfo;
}
}