nacos是alibaba开发的,是微服务的注册中心+配置中心
注册中心:所有的微服务都可以注册到nacos服务中,而且nacos提供控制台可以更加方便的操作nacos
微服务的注册:
1:启动nacos微服务, localhost:8848/nacos
2:给服务导入依赖。
注意:springboot的版本是2.2.5.RELEASE
导入alibaba的cloud服务
导入nacos注册中心的jar包
3:在yml文件中添加配置,使得微服务注册到nacos服务中
spring.cloud.nacos.discovery.service-addr:绑定nacos的地址 localhost:8848
4:在微服务的启动处添加@EnableDiscoveryClient注解(不加也是可以的)
5:去localhost:8848控制台上查看服务是否注册上了。
微服务的配置中心:把项目中经常要修改的yml文件写到配置中心中,这样就可以在不要停止服务的情况下修改配置文件,配置中心修改的配置使用@ReflashScope让项目动态加载配置中心的配置文件。动态更新不重启
1:启动nacos微服务, localhost:8848/nacos
2:添加nacos配置中心的jar包
注意:springboot的版本是2.2.5.RELEASE
导入alibaba的cloud服务
导入nacos配置中心的jar包
3:在nacos控制台上添加配置文件
实现: 空间列表+配置列表
空间列表:是创建不同的环境的,比如生成环境 prod 开发环境dev 设置好不同的环境 ,让配置列表创建配置文件选择,这样把配置文件分类按照环境分类好,这样项目就可以快速的部署。
配置列表:添加配置文件
Data ID :给创建的配置文件命名
配置格式::选择配置文件的格式 一般使用YAML或者Properties
配置内容:添加配置文件的内容
4:微服务读取配置中心的配置文件
注意:创建的配置文件,如果使用properties类型存储,文件名字的后缀加properties 如果文件是yml类型,文件的后缀加yml
1:定义微服务的名字,服务会默认的从配置中心加载这个名字的配置文件
spring.application.name=xxxxx 则会去配置中心加载xxxx配置文件
2:这个要写在bootstrap.yml文件中,因为,springboot项目中配置文件的加载顺序是bootstrap先加载,配置中心的配置文件要比本地的yml配置文件先加载
spring.cloud.nacos.config.service-addr:localhost:8848
2: 在bootstrap中配置加载指定环境的配置文件(dev/test等)
spring.cloud.nacos.config.namespace=92e9b98e-1737-42e4-a08a-727cb5ac61b0 这个是创建空间时给每个空间的id,唯一标识
3:指定加载的配置文件属于那一组
properties写法: spring.cloud.nacos.config.group=xxx
cloud:
nacos:
config:
group: 指定组
4:指定加载的配置文件的类型
yml写法
cloud:
nacos:
config:
file-extension: properties/yml等
properties写法:spring.cloud.nacos.config.file-extension=properties
5: 配置在一个微服务中加载配置中心的多个配置文件
spring.cloud.nacos.config.ext-config[0].data-id=jdbc.properties
#开启动态刷新配置,否则配置文件修改,工程无法感知
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=redis.properties
spring.cloud.nacos.config.ext-config[1].refresh=true
6:加载同一个环境下不同组,但是文件名相同的配置文件
spring.cloud.nacos.config.ext-config[1].data-id=redis.properties
spring.cloud.nacos.config.ext-config[1].refresh=true
spring.cloud.nacos.config.ext-config[1].group=provider
5/6使用yml文件去配置
nacos:
config:
ext-config: #加载多个配置文件
- data-id: redis.properties
refresh: true
group: dev
- data-id: mybatis.properties
refresh: true
group: dev
5:要保证微服务项目不用重启就可以动态的加载配置中心修改后的配置文件需要在启动项中加一个注解@ReflashScope
6:把控制台上的配置文件持久化存储到mysql上
在nacos平台上配置的配置文件是存放在内存中,所有一但这个nacos服务挂了,这些配置文件就会消失,所有要把这些配置文件存放到mysql中,这样即使服务挂了,只要重启配置文件依然还在
首先找到nacos的配置文件夹,找到nacos-mysql.sql文件,在Mybatis中执行,创建好数据库的表,然后再修改application.propeties文件夹,
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connec
tTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
让每次nacos服务启动时去数据库加载存储的配置文件,这样数据就可以持久化存储
nacos中的配置文件是支持版本回滚的,即把配置文件恢复到老的版本
配置管理--》配置文件-》更多--》历史版本--》回滚
SpringBoot项目中的配置文件介绍
配置文件的启动顺序
bootstrap优先启动,所有在这个配置文件中配置获取配置中心数据
使用注解给一个类创建对象,把加载到内存里面的配置文件的值赋给创建的对象,并把这个对象加载到spring的对象容器中。
@Data
@ToString
@Configuration
@ConfigurationProperties(prefix = "aliyun.oss")
public class OssProperties {
private String endpoint ;
private String accessKeyId ;
private String accessKeySecret ;
private String bucketName;
}
浙公网安备 33010602011771号