什么是Nacos?
- Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
- Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos的作用
- 服务发现和服务健康监测
- 动态配置服务
- //TODO 动态DNS服务
- 服务及其元数据管理
Nacos快速入门
Docker搭建Nacos
clone项目
git clone https://github.com/nacos-group/nacos-docker.git
- 项目文件夹如图:
- Nacos支持三种部署模式
- 单机模式 - 用于测试和单机试用。
- 集群模式 - 用于生产环境,确保高可用。
- 多集群模式 - 用于多数据中心场景。
选择单机部署模式,启动容器
#执行standalone-derby.yaml脚本 docker-compose -f standalone-derby.yaml up #容器查看是否启动成功 docker ps
登录Nacos dashboard
#部署Nacos机器的IP #用户和密码默认为nacos/nacos http://127.0.0.1:8848/nacos/#/
Spring项目中引入Nacos
- 服务发现和服务健康监测
- 动态配置服务
启动服务发现
- 添加pom.xml依赖
- 在application.yml添加配置
将应用注册到Nacos
#作用:此注解能够让注册中心能够发现,扫描到该服务。 #用法:在启动类上添加该注解 @EnableDiscoveryClient
启动配置管理
添加pom.xml依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
在boostrap.yml添加配置
# bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等。 # application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。 # bootstrap.yml 先于 application.yml 加载。 # 技术上,bootstrap.yml 是被一个父级的 Spring ApplicationContext 加载的。这个父级的 Spring ApplicationContext是先加载的,在加载application.yml 的 ApplicationContext之前。 spring: profiles: active: dev application: #项目名称 name: gateway-service cloud: nacos: config: #安装nacos的服务器IP server-addr: 127.0.0.1:8848 file-extension: properties namespace: e63e5c13-3da2-41af-9d2e-176432cd856d group: DEFAULT_GROUP
Nacos-Dashboard
新建命名空间
- 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
- 新建dev命名空间如图:
Spring若要读取对应的配置,则应该修改boostrap.yml配置:
spring: profiles: active: dev application: name: gateway-service cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: properties #命名空间ID namespace: e63e5c13-3da2-41af-9d2e-176432cd856d #配置组 group: DEFAULT_GROUP
配置管理
- 系统配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动。
- 编辑配置
配置的dataId 的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
- boostrap.yml添加配置分组group信息。
- 在项目中使用@RefreshScope和@Value读取配置
- 请求API,检验配置内容在项目中是否生效
- 修改配置内容,查看项目输出的日志
- 请求API,检验修改后配置内容在项目中是否生效
- 小结:动态配置在项目中生效并输出对应的日志。但是如果我想回滚到某个历史版本呢?没问题!
- 配置回滚
- 配置支持回滚到历史版本(保留30天)
服务管理
- 服务流量权重支持
Nacos 为用户提供了流量权重控制的能力,同时开放了服务流量的阈值保护,以帮助用户更好的保护服务服务提供者集群不被意外打垮。如下图所以,可以点击实例的编辑按钮,修改实例的权重。如果想增加实例的流量,可以将权重调大,如果不想实例接收流量,则可以将权重设为0。 - 服务元数据管理
Nacos提供多个维度的服务元数据的暴露,帮助用户存储自定义的信息。这些信息都是以K-V的数据结构存储,在控制台上,会以k1=v1,k2=v2这样的格式展示。类似的,编辑元数据可以通过相同的格式进行。例如服务的元数据编辑,首先点击服务详情页右上角的“编辑服务”按钮,然后在元数据输入框输入:version=1.0,env=prod。 - 服务优雅上下线
Nacos还提供服务实例的上下线操作,在服务详情页面,可以点击实例的“上线”或者“下线”按钮,被下线的实例,将不会包含在健康的实例列表里。
权限管理
- 基于RABC模型的权限管理
总结
本章由Nacos的搭建入门,在spring项目中引入Nacos,实践了以下概念的基本操作,让读者对Nacos的基本功能有初步的认识。
- 服务发现
- 动态配置服务
- 服务及其元数据管理
Remarks
- 实践项目git地址
https://github.com/D2C-Cai/he...
TODO
- Nacos-feature-list
https://nacos.io/zh-cn/docs/f... - Nacos-architecture
https://nacos.io/zh-cn/docs/a...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。