SpringCloud之Nacos注册中心
Nocas 注册中心
环境配置启动服务注册
Nacos是阿里巴巴的一个产品,说实话,这个注册中心是真的好用。下面我们开始介绍。
首先我们需要安装这个服务,服务区官网下载就可以了。
官网 可以选择点进去github下载服务。
目录结构
然后进去bin目录里面,进行执行开启服务
如何开启服务,打开手册。
在快速开始这里,我们可以进行执行命令。
将这个命令执行后就可以开启这个服务了
然后我们去idea里面配置相关的东西
然后在里面配置相关的依赖,配置依赖的话就需要注释掉eureka的依赖。
如果没有在父工程添加阿里巴巴的依赖的话,我们需要进行添加依赖。
将这个依赖导入到父工程里面。
然后在子工程中将原来的eureka的依赖注释掉
在pom文件当中配置的就是客户端依赖。因为服务端是已经下载安装的。
我们需要将服务端的service和客户端的sevice都配置依赖。
然后我们进行配置yml文件进行配置
然后将eureka的配置注释掉
然后我们将这几个服务启动。我们现在就不需要去启动eureka了。
我们访问nacos的服务列表
管理页面访问地址
进入到服务列表,我们可以看到服务列表查看注册情况
至此注册成功。而且我们可以看到这里userservice一共有两个实例。
这里我们可以看到具体的一些信息,包括端口号,已经健康状态,后面可以进行一些操作,包括服务上线下线的操作。
我们可以进去到服务列表具体实例的详情,可以查看到一些具体的信息。
Nacos 分级存储模型与集群
这里引入了一个新的概念。集群的概念。
这里先不用去关注集群的具体的概念,但是在结合分布式服务的话,集群可以帮助我们解决服务的跨区域的问题。跨区域部署服务器。
按照上图所示集群部署的话,可以部署在不同的地域。杭州,上海等等。然后我们通过nacos进行集群管理。包括相关的实例部署等等。
我们可以去模拟配置集群
这里我们指定了一个集群,表示部署在此地。我们可以对这些服务都指定相关的服务集群
好,现在再次启动重新服务
我们可以看到一共有两个集群,这样我们就指派成功了。
负载均衡
在nacos 也可以进行加权负载均衡
我们一共有两个usersrvice的服务,我们可以去指定其中的一个权值,权值越低被访问调用的几率越1低,权值为0的话就不会被访问了。我们可以测试。
我们可以用postman进行访问测试。
用postman进行测试
可以看到多次访问都没有访问到权值为0的服务实例,这样其实就实现了一个权值的负载均衡策略。
当然你可以指定其他的值。
namespace 环境隔离
其实还有可以进行环境隔离的操作。
现在nacos操作平台进行生成新的命名空间。
我们的之前的命名空间就是public类型,是一个保留空间。
我们可以自己去这里创建空间,然后自己在代码配置中指定给那个服务配置相应的空间。
填写保留空间的名字和描述就可以,Id可以自动生成。
我们给具体的服务配置命名空间,就配置namespace,然后将id复制过去作为键的值。
命名空间的作用就是相当于起到环境隔离的作用。
如果服务在不同的命名空间,那么这两个服务就无法互相访问。
现在我们重新启动userservice的一个实例,我们可以将,然后这个实例是必然不会和orderservive在同一个命名空间。是不会访问到的。
我们测试orderservice能不能访问到userservice的服务端1。
可以看到是不能访问到的。
临时实例和非临时实例(存在依赖的修改更正)
临时实例的服务在宕机后会从nacos的列表中被删除掉,而非临时实例不会被删掉。
到这里发现我之前导入的依赖是不能这样设置的。
前面的设置都可以支持
想要支持实例的配置管理的话需要导入这个依赖
在自己需要的服务里面导入进来。我现在只在useservice这里进行验证临时实例和非临时实例的特点。
我现在的服务都重启
注意看这里,全部为false,然后现在为了对比做这样的操作。
我将其中一个停掉。然后改为true
然后再启动
你看这里发生了什么。为什么会有两个8082的端口的实例服务呢?原因是我们之前给它设置为非临时实例,就算我们刚刚重启了服务,但是它不会被删除,现在我们关闭服务,看看设置为true的这个实例会不会被删掉。
看吧已经删掉,还有一点这里的健康状态和这个颜色我们之前的这个都变了。
对于临时实例和非临时实例的区别,nacos也做出了不同的检测
==临时 实例:nacos会在超过15秒未收到心跳后将实例设置为不健康状态;==
==超过30秒将实例删除;==
==非临时实例:nacos主动探知客户端健康状态,默认间隔为20秒;
健康检查失败后实例会被标记为不健康,不会被立即删除。==
统一配置管理与热更新
我们先了解nacos是如何加载配置的
我们想要做的的是在nacos的管理界面进行配置,然后这个配置首先可以被加载,然后这样的加载配置在我们发布以后会自动生效,而不需要我们重启服务器,这样的配置更新方法也叫做热更新。
具体怎么做呢?我们先去nacos的配置管理界面。在这里我发布了一个新的配置。
我们来看具体的详情
这样配置后然后发布就可以了,当然这只是在nacos的配置列表进行的配置。我们还需要在idea里面操作一些东西。
我们还需要引入一个依赖。nacos的配置管理依赖
这个配置依赖需要在你想要进行统一配置和热部署操作的服务的pom中添加。
然后我们需要创建一个配置文件
这个配置文件的优先级别高,nacos会先加载这个配置文件,然后会加载application.yml文件,将着两个配置文件的配置合并一起。
要记得在原来的配置文件中注释掉一些可能重复的配置或者非必要的配置。
服务名,还有地址,集群的话不需要,命名空间的话,因为我的nacos添加的配置在public下面,所以我把之前指定的也注释掉了。
在nacos管理配置列表配置的一些东西和这里是对应的,所以一定要细心注意。
这样的话我们如何知道配置生效,或者如何去验证热部署成功?
我们可以通过value读取,将这个数据读到Controller里面,给这个值配置一个访问路径。我们可以这样去做。
这里有个坑,就是如果你的nacos无法解析的话,就需要升级一下。升级到1.4.2.。
还有一点就是需要配置自动热更新。
我现在的服务已经启动,我们去访问。
你看这样搜先加载到了。
现在我们在nacos配置管理那里稍微改动一下。
发布的时候会告诉你原始值和你修改的。
现在我们再去访问
这样就验证成功了。热部署成功·。
还有一种属性注入方式
我们需要去写一个配置类
然后在Controller里面这样做
还有这种方法不需要去添加这个注解
需要注意的是,可能存在bean无法注入的问题。那么我们可以去给他扫描。
------未完续更,等待
- 点赞
- 收藏
- 关注作者
评论(0)