1.什么是Nacos
Nacos和Eureka有着相同的能力,并且更加强大,还能够进行云端配置管理。
Nacos两大功能:服务注册与发现,配置管理
官方对Nacos的定义:
Nacos致力于帮助您发现,配置和管理微服务。它提供了一组简单有用的功能,使您能够实现动态服务发现,服务配置,服务元数据和流量管理。
Nacos使构建,交付和管理微服务平台变得更容易,更快捷。它是通过微服务或云原生方法支持以服务为中心的现代应用程序体系结构的基础架构。
2.Nacos服务安装
官方提供了Nacos的服务端供我们下载使用,我们启动Nacos后将我们的微服务注册进入Nacos即可。
下载地址:Releases · alibaba/nacos · GitHub
2.1.启动Nacos,访问Nacos
启动Nacos:解压后, windows执行bin目录下的startup命令 ,linux 执行 sh startup.sh -m standalone
访问Nacos,端口8848:http://127.0.0.1:8848/nacos/index.html ,用户名和密码都是:nacos
登录成功后:
2.2.配置启动
打开bin目录,start.cmd,修改配置model="standalone"
2.3.数据库持久化
创建数据库nacos
导入/config/nacos-mysql.sql
config/application.properties文件中修改数据库账号密码
3.提供者服务注册到Nacos
3.1.导入依赖
<!--服务发现-->
<dependency>
<groupId>com.alibaba.cloud </groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--加入WEB依赖是为了方便后面写Controller-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.2.主配置类
创建配置类加上@EnableDiscoveryClient注解开启服务发现功能
@SpringBootApplication
@EnableDiscoveryClient
public class UserApplication1010 {
public static void main(String[] args) {
SpringApplication.run(UserApplication1010.class, args);
}
}
3.3.yml配置文件
配置文件主要配置端口,服务名,已经nacos注册中心地址
server:
port: 1010
spring:
application:
name: user-server
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #注册中心地址
3.4.启动测试
启动服务,观察Nacos服务列表 , 可以看到user-server已经注册进去了
4.服务通信
同之前文章Springcloud一样
5.Nacos配置管理
5.1.创建配置文件
1.首先打开Nacos监控面板,选中+号添加配置
2.将配置文件拷贝到云端中
5.2.项目导入依赖
<!-- 配置中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
5.3.项目中创建bootstrap.yml
spring:
profiles:
active: dev #环境
cloud:
nacos:
discovery:
server-addr: localhost:8848 #注册中心
config:
server-addr: localhost:8848 #配置中心
file-extension: yml #配置文件格式
prefix: application-user #配置前缀
group: DEFAULT_GROUP #默认分组
shared-configs:
- application-dev.yml
5.4.Nacos配置中心,抽取公共配置
1.在nacos创建一个公共配置文件
2.2.项目bootstrap.yml中使用:shared-configs: 配置公共的配置文件名
5.5.命名空间
命名空间可以用来隔离不同项目的配置文件,在Nacos中配置了命名空间后,那么Java客户端需要指定命名空间后才能拉取到该命名空间下的配置文件。
5.6.注意细节
- 云端配置文件的后缀应该是yml 而不是 yaml
- 客户端配置需要指定:spring.profiles.active=dev 环境名
- 客户端配置 :前缀 + 环境名 + 后缀应该和云端配置文件的DataId一致