Nacos 学习
理论知识
-
基本概念
Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
-
Nacos 的关键特性包括:
- 服务发现和服务健康监测
- 动态配置服务
- 动态 DNS 服务
- 服务及其元数据管理
Nacos服务学习步骤
启动Nacos 服务,修改配置文件
Nacos 启动有多种模式 有单体模式,集群模式
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
http://localhost:8848/nacos
官网地址
https://nacos.io/zh-cn/docs/quick-start.html
在springBoot 项目中引入如下的依赖
#通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${latest.version}</version>
</dependency>
<!-- SpringBoot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
#通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
服务注册与服务发现的基本原理
-
服务发现主要是对springBoot 项目中增加上面相应的注解,然后通过特定的Http地址让Nacos 和服务能相互通信,通过json 返回信息,里面包含着服务的基本信息 这些基本信息就成为了注册到Nacos 上的信息
动态配置服务(分布式配置中心)基本原理
-
还是通过加入依赖使服务支持Nacos-Config的依赖 主要是对服务进行命名 例如配置如下 在此之前需要先普及一下配置文件加载的优先级(由高到低)所以我们需要将一些静态的配置放到bootstrap.yml 文件中
bootstrap.properties ->bootstrap.yml -> application.properties -> application.yml
-
# Spring spring: application: # 应用名称 name: ruoyi-xxxx profiles: # 环境配置 active: dev cloud: nacos: config: # 配置中心地址 server-addr: 127.0.0.1:8848 # 配置文件格式 可以暂时忽略 file-extension: yml # 共享配置 可以暂时忽略 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
-
首先定义了服务的名称这样 在Nacos 中我们的服务在注册的时候就有了唯一的名称 后期我们在做调用的时候也可以直接用服务名称进行调用,Nacos 上创建相应的配置文件
-
-
在Nacos Spring Cloud 中,数据集(Data Id) 的配置完整格式如下:
${spring.cloud.nacos.config.prefix}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
通俗一点就是前缀-环境-扩展名,需要注意的是要指定文件的类型否则就会为*.roperties 格式,配置的DataId 就是的server${spring.cloud.nacos.config.prefix}=spring.application.name 所以我们的配置文件名称应该为 ruoyi-xxx-dev.xml
-
@RefreshScope 这个参数可以动态的修改配置文件里面的配置参数而且不用重复部署服务
多环境下的配置中心
-
在引入spring-cloud-starter-alibaba-nacos-config 后 Nacos 支持像SpringBoot 的profiles 这样的 参数
我们只需要在nacos 里面配置相应的配置文件 例如
application-dev.yml
application-prod.yml
application-test.yml以上三种不同的配置环境 然后在boostrap.yml 使用spring.profiles.active :prod 指定了引用application-prod.yml
tion-prod.yml
application-test.yml
以上三种不同的配置环境 然后在boostrap.yml 使用spring.profiles.active :prod 指定了引用application-prod.yml