Nacos服务注册与发现
一、Nacos的作用(Eureka同等作用)
Nacos是Alibaba开源的作为配置中心及服务发现的中间件。
用于发现、配置和管理微服务,一个更易于构建云原生应用的动态服务发现、配置管理、服务元数据及流量管理平台。
Nacos从官方的介绍上看,就像是SpringCloud中Eureka+Config+Bus+Git+MQ的一个结合体,但也不能完全这样理解。
二、Nacos的下载使用
- 去GitHub下载Nacos: Nacos在GitHub的地址
- 安装Nacos
① 解压Nacos
② 文件解压以后进入nacos文件夹,找到bin文件目录,找到startup.cmd双击运行
③ 如果界面出现Nacos的标志,并且没有报错,那就说明Nacos启动成功
④ 访问:http://localhost:8848/nacos(默认的登录账户和密码都是nacos)
⑤ 如果能出现Nacos后台管理界面,就安装运行成功
三、如何配置nacos持久化
修改application.properties文件(在nacos文件中),增加支持mysql数据源配置
① 增加db mysql连接配置
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=password
② Nacos控制台新增修改配置文件内容,包括mysql、redis等连接
③ Redis的密码修改是一次性的,重启redis密码还原为空
四.Spring中使用Nacos的三大步骤?
① 添加依赖:
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-spring-context</artifactId>
<version>0.3.4</version>
</dependency>
② 添加 @EnableNacosConfig 注解启用 Nacos Spring 的配置管理服务。
以下示例中,我们使用 @NacosPropertySource 加载了 dataId 为 example 的配置源,并开启自动更新:
@Configuration
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
@NacosPropertySource(dataId = "example", autoRefreshed = true)
public class NacosConfiguration { }
③ 通过 Spring 的 @Value 注解设置属性值。
注意:需要同时有 Setter方法才能在配置变更的时候自动更新。
五.Nacos三大应用场景?
① 数据库连接信息,有效的密码管理,开发不触碰到密码配置,运维人员和架构团队统一管理避免泄露;
Ⅰ.添加依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${latest.version}</version>
</dependency>
Ⅱ.在 application.yml 中添加 本地Nacos 连接配置
nacos:
config:
server-addr: 127.0.0.1:8848
在实际生产中,还需配置 Nacos 命名空间信息(区分环境)、鉴权信息(如 AccessKey、SecretKey 等,即将支持的权限访问控制)。
Ⅲ.添加 @NacosPropertySource(dataId = “mysql.properties”) 注解
Ⅳ.在本地启动的 Nacos 控制台上新增 dataId 为 mysql.properties 的配置,配置内容为 MySQL 连接配置信息:
② 限流阈值和降级开关
实现运行时的动态调整阈值和开关的启停
③ 流量的动态调度
业务发展到一定规模,单一的集群无法承载全部的用户请求,需要将用户的流量分流到不同的集群上,不同的集群位于不同的区域,这样,除了缓解业务处理的压力,也给系统带来容灾的能力。
做这个流量秒级分流从区域A到另外区域集群上,就用到nacos,能做到秒级推送到十万级别机器上的推送效率。
六.分布式配置中心(程序代码获取nacos配置文件数据)
程序类中通过@Value(“${配置在nacos配置文件的名称}”),获取配置文件的值
程序类中:
nacos配置文件中:
程序resources的配置文件中:(默认会访问application name的nocos配置文件名,另外的nacos配置文件用shared-dataids来指明)
POM文件中: