Nacos 注册中心&配置中心——简单入门
介绍
- Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
- 相对于 Spring Cloud Eureka 来说,Nacos 更强大。Nacos = Spring Cloud Eureka + Spring Cloud Config
- Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config
- 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
- 如果微服务架构中没有使用统一配置中心时,所存在的问题:
- 配置文件分散在各个项目里,不方便维护
- 配置内容安全与权限
- 更新配置后,项目需要重启
nacos配置中心:系统配置的集中管理(编辑、存储、分发)、动态更新不重启、回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动。
Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。
Nacos主要提供以下四大功能:
- 服务发现和服务健康监测
- 动态配置服务
- 动态DNS服务
- 服务及其元数据管理
官方文档
请先通过官方文档快速安装nacos
快速开始
1.启动 nacos
bin文件夹中启动
startup.cmd -m standalone windows ./startup.sh -m standalone linux sh startup.sh -m standalone linux
- 默认本地启动地址:http://localhost:8848/nacos
- 默认用户名和密码都是 nacos
2.作注册中心
服务注册
引入依赖
<!-- SpringCloud Alibaba环境指定: SpringBoot环境:2.3.12.RELEASE SpringCloud环境:Hoxton.SR12 SpringCloud Alibaba环境:2.2.7.RELEASE --> <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR12</spring-cloud.version> <spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version> </properties> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
配置文件 application.yml
server: port: 8081 spring: application: name: nacos-provider # 服务名 cloud: nacos: discovery: # nacos服务地址 server-addr: localhost:8848/
启动类加上注解 @EnableDiscoveryClient
正常的话就可以在 nacos上看到此服务了
3.作配置中心
加载 nacos上配置文件
引入依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
配置文件 bootstrap.yml
- 系统级别的配置文件,优先级要高于application.yml,先加载
- 通常系统级别的配置文件,加载一些需要优先加载的配置信息,比如:配置中心的内容
spring: cloud: nacos: config: # nacos服务地址(记得先在 nacos上创建配置文件) server-addr: localhost:8848 # 账号、密码 # username: nacos # password: nacos # 命名空间ID,默认public # namespace: public # 加载配置文件信息 prefix: application-test # 配置文件默认扩展名,默认Properties file-extension: yaml # 实时更新配置文件,默认true refresh-enabled: true # 配置文件组,默认DEFAULT_GROUP,可以针对业务进行分组,如订单模块,库存模块等 group: DEFAULT_GROUP # 加载多个配置文件,类似Maven的拆分和聚合操作 profiles: active: dev #dev、test、prod 三种配置可以在这里进行一键切换,默认激活 dev(开发)环境配置
在 nacos上创建文件 application-test.yml
server: port: 8088 spring: application: name: nacos-gateway cloud: nacos: discovery: # 加载Nacos注册中心地址 server-addr: localhost:8848 gateway: routes: - id: toConsumer predicates: - Path=/consumer/** uri: lb://006-nacos-consumer - id: toBaidu predicates: - Path=/ uri: https://www.baidu.com - id: toBaiduNews predicates: - Path=/, /guonei, /guoji uri: https://news.baidu.com/
@RefreshScope
控制器 controller加上注解,则修改 Nacos配置中心的配置信息后,客户端也能实时获取到配置信息
配置文件的拆分和聚合
可以把以上 application-test.yml 拆分成几个 yaml文件,再通过 bootstrap 配置聚合
请先分别在 nacos创建以下5个配置文件,并把上述 application-test.yml 拆分到这几个文件中
spring: cloud: nacos: config: # 加载Nacos配置中心地址 server-addr: localhost:8848 # 加载配置信息的命名空间 namespace: 8600ea68-008b-4d9e-8d50-d78b4b4803a0 # 把上面的yaml文件在nacos中拆分成多个配置文件 # 同时加载多个配置文件,系统会自动聚合在一起 extension-configs: - dataId: application-base.yaml group: base refresh: true - dataId: application-server.yaml group: SERVER refresh: true - dataId: application-spring.yaml group: spring refresh: true - dataId: application-nacos.yaml group: nacos refresh: true - dataId: application-gateway.yaml group: gateway refresh: true
扩展:持久化操作
- 找到nacos/conf目录中的application.properties
spring.datasource.platform=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.0=nacos #数据库用户名 db.password.0=nacos #数据库密码
- mysql创建数据库和表结构
- 要求Mysql的版本必须为 5.7+
- nacos/conf目录下nacos-mysql.sql
- 将这个文件创建到数据库中,生成表结构,重启启动Nacos即可
分类:
微服务
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)