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;
}
posted @   Geoary  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示