首先,介绍一下:SpringCLoud Alibaba的Nacos相对于SpringCloud而言,实现了Eureka和Config和Ribbon的作用,可以界面化的实现这些功能,简单实用,一站式解决分布式的问题。
针对上面介绍的三种作用,下面进行一一实现。
本章讲解如何实现配置中心的作用(所有服务使用nacos上面的配置,不走本地配置)
一、 修改提供者服务
首先展示一下目录结构:
注意:配置中心功能会使用到如下依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.7.RELEASE</version> </dependency>
修改配置文件:
注意:配置文件的加在顺序是先加载bootstrap再加载application,所有读取nacos的配置写在bootstrap配置里,如下:
每一个配置都很重要:
application.name会对应nacos上面配置文件的dataid值
server-addr是nacos的地址
file-extension是对应nacos上面配置文件的扩展名
namespace是对应nacos上面配置文件所属的命名空间(为了区别配置文件的重名问题,建立命名空间可以解决这个问题)
active是表示后缀使用哪个配置文件,例如nacos-provider2-dev.yaml,nacos-provider2-test.yaml
refresh-enabled是开启配置文件自动刷新(修改nacos的配置文件后默认不会自动刷新,除非重启服务。注意:需要结合@RefreshScope注解一起使用)
yml配置文件如下(并不会走这个配置文件了):
二、定义nacos配置
进入nacos,新增配置。
第一步先新增命名空间(方便管理同名的配置文件),如下:
点击新增即可。
进入配置列表可以看到已经新增成功,切换页签即可向不同的命名空间添加配置文件。
框选处即为上面的yml配置文件的namespace需要填写的值。此处是我新建的三个配置文件(点击右上角加号即可新增)。
注意:
dataid必须与配置文件的spring.application.name保持一致。
配置格式必须与spring.cloud.nacos.config.file-extension保持一致。
如下是我的配置:
从前面可以看到,我的本地provider服务的端口是9003,如果成功的话, 端口应该是9034。
修改controller:
增加RefreshScope注解(动态刷新配置文件,加在需要读取配置的地方)。
运行provider服务,如下:
三、演示
查看效果:
进入nacos:
查看provider服务详情:
的确是9034,读取的nacos的配置文件,没有走本地配置,成功。
再通过postman调用消费者81端口的服务测试一下:
再测试一下动态刷新效果:
修改nacos配置文件:
改为9088,再点击发布,访问postman测试 如下:
provider服务的端口为9088,动态刷新配置文件测试成功。
前两章的服务调用都是基于RestTemplate(RestTemplate需要单独提供服务地址,不方便),下一章整合Dubbo,通过Dubbo这个PCR框架进行调用。
若有问题,欢迎提出。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/12764.html