Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录。而 Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:注册中心和配置中心,我们今天来了解和实现一下二者。,Nacos 致力于帮助开发者发现、配置和管理微服务。它提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。,Nacos 具有以下特性:,注册中心有两个重要的功能:服务注册和服务发现,它解决了微服务集群中,调用者和服务提供者连接管理和请求转发的功能,让程序的开发者无需过多的关注服务提供者的稳定性和健康程度以及调用地址,因为这些都可以依靠 Nacos 进行监测、管理和自动转发。,注册中心中有两个角色:一个是服务提供者 Provider,另一个是服务调用者 Consumer,接下来我们分别来创建二者。,新建一个 Spring Boot 项目,使用阿里云地址 http://start.aliyun.com 来创建 Spring Cloud Alibaba Nacos 项目,如下图所示:,,点击 Next 下一步,如下图所示:,,增加 Nacos Service Discovery 框架支持,如下图所示:,,对应的依赖框架如下:,在配置文件 application.properties 中要填写 Nacos 的相关连接信息,具体信息如下:,新建一个控制器 Controller,添加一个 sayhi 方法,此方法可以使用 HTTP 协议进行访问,它是为后面的服务消费者提供的调用方法,具体实现如下:,编写完代码之后,运行项目就可以在 Nacos 的服务列表中看到它了,如下图所示:,,经过以上步骤,我们的服务提供者就创建好了,接下来我们创建一个服务消费者 Consumer。,此步骤和上面的服务提供者类似,也是添加 nacos discovery 和 web 依赖,具体实现如下:,,,服务消费者的实现有两个关键点,第一,先 new 一个 RestTemplate 对象,此对象是 Spring 框架提供用于进行 HTTP 请求的类,实现代码如下:,第二,新建一个控制器,注入 RestTemplate 对象,并调用 Nacos 中的服务提供者接口,实现代码如下:,通过以上配置,我们的服务消费者也创建好了,启动项目,执行结果如下图所示:,,从上述结果可以看出,服务消费者通过 Nacos 已经成功调用到服务提供者了,这就是 Nacos 中注册中心的基本使用。,配置中心的作用是将本地配置文件云端话,所谓的云端也就是 Nacos 的服务器端,这样既能保证配置文件中的敏感数据不会暴露,同时又提供了实时的修改、查看、回滚和动态刷新配置文件的功能,非常实用。,但是需要注意的是配置中心和注册中心的依赖包是不同的,注册中心的依赖包是 nacos discovery,而配置中心的依赖包是 nacos config,它的具体如下。,创建一个 Spring Boot 项目,添加 nacos config 和 web 依赖包,如下图所示:,,对应的配置依赖信息如下:,在应用的 /src/main/resources/ 目录下,创建引导配置文件 bootstrap.yml(或 bootstrap.properties),添加以下 Nacos Config 配置:,新建控制器,使用 @Value 注解读取配置信息,实现代码如下:,在 Nacos 控制台创建并设置配置文件,执行步骤如下所示。首先,在配置列表中点击“添加”按钮,如下图所示:,,进入配置页面,新建 YAML 或 Properties 配置文件,如下图所示:,,以上关键参数的含义和规则说明如下。,Data ID 的拼接格式如下:,${prefix} – ${spring.profiles.active} . ${file-extension},其中,Group 分组选项,主要是用来隔离不同的配置项目的,它的默认值为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置。,配置好相应的内容之后,点击底部的“发布”按钮即可,添加成功之后会自动返回配置列表,如下图所示:,,经过以上步骤,Nacos 配置中心的功能就实现完了,接下来启动项目,程序的执行结果如下图所示:,,动态刷新功能是指,在 Nacos 配置中心修改了配置文件,在不重启项目的前提下,可以实时读取到最新的配置内置。,Nacos 默认会为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听到服务端配置发生变化时会实时触发 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法。,但如果需要对 Bean 进行动态刷新,需要参照 Spring 和 Spring Cloud 规范,推荐给类添加 @RefreshScope 或 @ConfigurationProperties 注解,就可以实现配置中心的动态刷新功能了。,https://gitee.com/mydb/spring-cloud-alibaba-example,Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:注册中心和配置中心。注册中心有两个重要的功能:服务注册和服务发现,它解决了微服务集群中,调用者和服务提供者连接管理和请求转发的功能,保证了服务调用者能够稳定的调用到健康的服务。而注册中心的本质是将项目中的本地配置文件云端化,解决了配置文件的安全性与统一性的问题,并且提供了配置文件历史版本回滚和配置文件动态刷新的功能。,Nacos 官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html
© 版权声明
文章版权归作者所有,未经允许请勿转载。