共计 3631 个字符,预计需要花费 10 分钟才能阅读完成。
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官网收录。而 Nacos 作为 Spring Cloud Alibaba 的外围组件之一,提供了两个十分重要的性能:服务注册核心(服务注册和发现)性能,和对立配置核心性能。
Nacos 简介
Nacos 致力于帮忙开发者发现、配置和治理微服务。它提供了一组简略易用的个性集,帮忙开发者疾速实现动静服务发现、服务配置、服务元数据及流量治理。
Nacos 个性介绍
Nacos 具备以下个性:
- 服务发现和服务衰弱监测:反对基于 DNS 和基于 RPC 的服务发现,反对对服务的实时的健康检查,阻止向不衰弱的主机或服务实例发送申请。
- 动静配置服务:动静配置服务能够让您以中心化、内部化和动态化的形式治理所有环境的利用配置和服务配置。
- 动静 DNS 服务:动静 DNS 服务反对权重路由,让您更容易地实现中间层负载平衡、更灵便的路由策略、流量管制以及数据中心内网的简略 DNS 解析服务。
- 服务及其元数据管理:反对从微服务平台建设的视角治理数据中心的所有服务及元数据。
配置核心性能实现
1. 增加依赖
创立一个新的 Spring Boot 我的项目,增加 nacos config 和 web(非必须)框架依赖,如下图所示:
PS:增加 web 依赖次要作用是为了不便前面代码测试。
如果是老我的项目,那么须要手动增加 nacos config 的依赖,批改 pom.xml 文件,增加以下内容:
<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>
2. 配置 Nacos Config 信息
在利用的 /src/main/resources/ 目录下,创立疏导配置文件 bootstrap.yml(或 bootstrap.properties),增加以下 Nacos Config 配置信息:
spring:
application:
name: nacosconfig # 项目名称和 nacos DataId 相匹配
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # nacos 地址和端口
file-extension: yaml # 获取配置文件的格局:yaml
username: nacos # nacos 认证用户名
password: nacos # nacos 认证明码
server:
port: 9001 # 我的项目启动端口
3. 编写代码读取配置文件
创立一个控制器,应用 @Value 注解读取配置信息,读取形式和 Spring Boot 读取本地配置代码统一:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
// 从 nacos 中读取配置项 config.info
@Value("${config.info}")
private String configInfo;
@GetMapping("/getconfig")
public String getConfigInfo(){return configInfo;}
}
4.Nacos 控制台增加配置信息
在 Nacos 控制台创立并设置配置文件,执行步骤如下所示。
首先,在配置列表中点击“增加”按钮,如下图所示:
进入配置页面,新建 YAML 或 Properties 配置文件,如下图所示:
以上要害参数的含意和规定阐明如下。
① Data ID
Data ID 的拼接格局如下:
${prefix} – ${spring.profiles.active} . ${file-extension}
其中
- prefix 默认为 spring.application.name 的值,也能够通过配置项 spring.cloud.nacos.config.prefix 来配置。
- spring.profiles.active 即为以后环境对应的 profile,当 active profile 为空时,对应的连接符 – 也将不存在,dataId 的拼接格局变成 ${prefix}.${file-extension}
- file-extension 为配置内容的数据格式,能够通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只反对 properties 类型。
② Group
Group 分组选项,次要是用来隔离不同的配置我的项目的,它的默认值为 DEFAULT_GROUP,能够通过 spring.cloud.nacos.config.group 配置。
配置好相应的内容之后,点击底部的“公布”按钮即可,增加胜利之后会主动返回配置列表,如下图所示:
启动我的项目,查看执行后果如下图所示:
动静刷新性能
动静刷新性能是指:在 Nacos 配置核心批改的配置内容,在不重启我的项目的前提下能够实时的读取到。
Nacos 默认会为所有获取数据胜利的 Nacos 的配置项增加了监听性能,在监听到服务端配置发生变化时会实时触发 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 办法。
但 如果须要对 Bean 进行动静刷新 ,须要参照 Spring 和 Spring Cloud 标准, 举荐给类增加 @RefreshScope 或 @ConfigurationProperties 注解。
以下面的案例来说,如果须要增加动静刷新性能,只须要在控制器上增加 @RefreshScope 注解即可,实现代码如下:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope // 开启配置文件的动静刷新
public class TestController {
// 从 nacos 中读取配置项 config.info
@Value("${config.info}")
private String configInfo;
@GetMapping("/getconfig")
public String getConfigInfo(){return configInfo;}
}
最终的实现后果如下:
亮点性能介绍
Nacos 配置核心有两个很好用的性能:一个是批改配置时的内容比照,让您一眼就能够看出此次批改的配置内容,避免误操作;第二个是历史版本一键回滚性能,让您可能轻松的实现溯源和回滚配置文件。
1. 配置文件比照
在批改配置文件时,会先呈现一个配置文件的比照预览页面,如下图所示:
这样您就能够分明的看到此次批改和增加的具体配置信息了,从而缩小了误改的危险。
2. 历史版本一键回滚
Nacos 通过提供配置版本治理及其一键回滚能力,帮忙用户改错配置的时候可能疾速复原,升高微服务零碎在配置管理上的肯定会遇到的可用性危险。
我的项目源码
https://gitee.com/mydb/spring-cloud-alibaba-example/tree/master/spring-cloud-nacos-config
总结
Nacos 作为 Spring Cloud Alibaba 的外围组件之一,提供了两个十分重要的性能:注册核心和配置核心性能。其中配置核心是将配置文件从本地化,变更为云端化的过程(Nacos 服务端),这样既能保障配置文件的安全性,又能实时的批改、查看、回滚和动静刷新配置文件了。
参考文档
Nacos 官网文档:https://nacos.io/zh-cn/docs/w…
是非审之于己,毁誉听之于人,得失安之于数。
公众号:Java 中文社群
Java 面试合集:https://gitee.com/mydb/interview