Spring cloud 使用-nacos
Nacos
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos官网
Nacos下载安装
下载地址
进入github上,找到要下载的版本,比如我要下载2.0.3
的
等待下载完成,启动服务器,出现以下界面说明启动成功。
spring cloud 注册到nacos
生产者
上次我们将服务注册到了eureka上,这次 我们稍作调整,将服务注册到nacos上。
父工程中添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.0.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
消费者工程pom.xml注释掉eureka的依赖,添加nacos相关依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
配置文件注释掉eureka的调价nacos,注意这里的127.0.0.1:8848
是要注册到的nacos服务地址,这是个工具,可以按照官方文档下载。
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
消费者
与提供者类似,按照提供者的来操作一遍,在加上一下依赖,这个版本的 spring-cloud-starter-alibaba-nacos-discovery
中没有loadbalance依赖,所以得手动引入下,要不然会报 consumerservice; nested exception is java.net.UnknownHostException: consumerservice] with root cause
,这里的 consumerservice
是计划调用的微服务。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
Nacos控制台
访问http://127.0.0.1:8848/nacos/index.html
,输入账号密码都是nacos
,可以到服务管理-服务列表看到 注册上来的微服务。
关于nacos的详细说明请参阅指定版本的官方文档,每个版本稍有差异,也可以到文档中提到的github上参考example
Nacos 配置热更新
以上面消费者服务为例也就是 drugsetvice
在nacos的控制台配置管理-配置列表-➕
,命名drugsetvice-dev.yaml
,命名规则 ${prefix}-${spring.profiles.active}.${file-extension}
写好配置后,点击发布。
在pom.xml中添加如下内容:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
通过以下两种方式来获取
方式一:@Value
新建一个bean,引入要使用的配置,并在类上添加@RefreshScope
注解,这里注意下,不能在controller
通过上添加@Value+@RefreshScope
的方式获取,会取成null。
@Data
@RefreshScope
@Component
public class CompantNacon {
@Value("${user.name}")
private String name;
@Value("${user.age}")
private Long age;
}
方式二:@ConfigurationProperties
@Data
@Component
@ConfigurationProperties(prefix = "user")
public class NaconProperties {
private String name;
private Long age;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人