Spring Cloud Alibaba Nacos 初始
(一)Nacos 简介
1) Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理;
2)Nacos 就是微服务架构中服务注册中心以及统一配置中心,用来替换原来的(eureka,consul)以及 config 组件;
(二)简易安装
a. 下载地址:nacos-github版本 【本人安装 tag 版本:nacos-server-1.3.1.tar.gz 】
b. 解压到指定目录:
- bin 启动 nacos 服务的脚本目录
- conf nacos 的配置文件目录
- target nacos 的启动依赖存放目录
- data nacos 启动成功后保存数据的目录
c. 进入 Nacos 目录下的 bin 目录,执行命令启动服务 startup.cmd -m standalone
d. 在浏览器地址栏输入 http://localhost:8848/nacos 即可访问
(三)开发服务注册到 Nacos
开发 SpringCloud 微服务,常用的步骤:第一步在 pom.xml 文件中加入依赖;第二步在 application.properties 配置文件中加入配置;第三步在启动类加入该组件对应的注解;
第一步:创建项目并在 pom.xml 文件中引入 Nacos 服务注册与发现依赖
<!--引入nacos client的依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
第二步:配置注册地址信息
server.port=8789 # 指定当前服务端口 spring.application.name=nacosclient # 指定服务名称 spring.cloud.nacos.server-addr=localhost:8848 # 指定nacos服务地址 spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr} # 指定注册中心地址 management.endpoints.web.exposure.include=* # 暴露所有web端点
第三步:在启动类上加入对应组件的注解
@SpringBootApplication @EnableDiscoveryClient // 开启 nacos 服务注册与发现,新版本 springCloud 默认开启服务注册和发现可以不加入 public class NacosClient8789Application { public static void main(String[] args) { SpringApplication.run(NacosClient8789Application.class, args); } }
第四步:查看服务列表
(四)
创建项目并引入 Nacos 配置中心依赖
<!--引入nacos client依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--引入nacos config 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2)配置配置中心地址
spring.cloud.nacos.server-addr=localhost:8848 # 远程配置中心的地址此时 nacos 作为配置中心 config server,而不是注册中心【两个功能公用了这一个配置而已】
# springcloud 应用服务再启动的时候,需要指定 nacos 服务访问地址,默认去 localhost:8848 的 public 公共空间 DEFAULT_GROUP 默认组里面拉取 dataid 的配置
spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.server-addr}
# spring.cloud.nacos.config.namespace=public # 不写的话默认命名空间就是 public 的
spring.cloud.nacos.config.group=DEFAULT_GROUP # 读取配置的分组 【默认分组】
spring.cloud.nacos.config.file-extension=properties # 指定读取文件后缀
spring.application.name=configclient # 指定读取文件的前缀
pring.profiles.active=prod # 指定读取文件的具体环境
3)在 Nacos 中创建配置
4)启动项目测试,获取远端 Nacos 配置中心的配置信息,自动测试即可
(五)Nacos 配置中心详解 Nacos配置中心参考文档
1)dataId 用来读取远程配置中心的具体配置文件其完整格式为:${prefix}-${spring.profile.active}.${file-extension}
a. prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置;
b. spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension};
c. file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
2)实现自动刷新,默认情况下 Nacos 已经实现了自动配置刷新功能,如果需要刷新配置直接在控制器中加入 @RefreshScope 注解即可;
@RestController @Slf4j @RefreshScope // 实现 nacos 自动配置刷新,读取配置即可 public class TestController { @Value("${user.name}") private String name; @GetMapping("/test/test") public String test() { log.info("当前获取配置中 name 为:[{}]", name); // 直接就可以读取到在 Nacos 服务上更新后的 user.name 值 return "当前获取配置中 name 为:" + name; } }
namespace 命名空间是 Nacos 针对于企业级开发设计用来针对于不同环境的区分,比如正在企业开发时有测试环境,生产环境,等其他环境,因此为了保证不同环境配置实现隔离,提出了Namespace 的概念,默认在 Nacos 中存在一个 public 命名空间所有配置在没有指定命名空间时都在这个命名空间中获取配置,在实际开发时可以针对于不能环境创建不同的 namespace 空间,默认public 空间不能删除,每个命名空间都有一个唯一的标识,互不影响;
namespace 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
4)配置分组 group
配置分组是对配置集进行分组,通过一个有意义的字符串(如 Buy 或 Trade )来表示,不同的配置分组下可以有相同的配置集(Data ID)。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:可用于区分不同的项目或应用,例如:学生管理系统的配置集可以定义一个group为:STUDENT_GROUP。
初始 Nacos,每天进步一点点......