SpringCloudAlibaba——Nacos 微服务注册+配置功能组件使用教程

📅 2026/7/23 18:08:48
SpringCloudAlibaba——Nacos 微服务注册+配置功能组件使用教程
目录一. Nacos是什么二. Nacos注册中心功能怎么用三. Nacos服务分级存贮模型四. NacosRule负载均衡五. Nacos服务权重配置六. Nacos环境隔离七. Nacos与Eureka的区别其它微服务组件文章合集有需要的小伙伴可跳转观看SpringCloud——Eureka 微服务注册中心组件使用教程SpringCloudAlibaba——Nacos 微服务注册配置功能组件使用教程SpringCloud——OpenFeign 微服务远程调用组件使用教程SpringCloud——gateway 微服务网关组件使用教程SpringCloud——Ribbon 微服务负载均衡原理解析一. Nacos是什么Nacos是Alibaba推出的一款全新的可以替代Eureka注册中心的微服务组件之一。我们都知道在做微服务项目时我们可以通过Eureka将各个服务注册进去完成服务的拉取调用那么我们的Nacos也是一个服务注册中心。而且Nacos不仅可以作为一个注册中心还可以当作配置中心来使用直接可以替换掉我们之前所使用的 SpringCloudConfig 组件可以说是一个顶俩此外Nacos还有一些附加的功能属性这里就不再一一举例了我们直接进入正题。二. Nacos注册中心功能怎么用想要使用Nacos这款分布式组件首先我们要下载它下载的过程可能有些繁琐耗时这里就不展示了没有下载的可以去搜索相关博客进行下载。在微服务项目中想要使用Nacos完成功能模块的注册简单分为一下几步1启动Nacos安装好我们的Nacos之后打开nacos文件中的bin文件夹点击启动就可以了这里要注意使用单机启动因为Nacos默认为集群启动。如果不知道怎么改有两个办法看我演示方法一使用命令行的形式还是进入我们nacos文件的bin目录文件下如下所示输入cmd回车会出现黑窗口命令行在黑窗口中输入startup.cmd -m standalone 翻译过来就是以单机模式启动启动成功如下图方式二修改文件配置使用编辑模式打开我们的启动器 startup.cmd 文件把文件中的集群改成单机set MODE“standalone”就可以了这里我已经改好了改过之后保存仍然双击这个文件就可以启动了启动成功之后页面和方式以是一样的。2在父工程中方添加Spring-Cloud-Alibaba依赖!--nacos的管理依赖-- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version2.2.5.RELEASE/version typepom/type scopeimport/scope /dependency这里面的版本可不是乱用的每个alibaba组建的版本所对用的springboot版本和springcloud版本都是有联系的如果你的与我不一致可以去alilbababa官网搜索与自己版本一致的使用否则后期可能会出现一些奇怪的小bug3添加Nacos客户端依赖!-- nacos客户端依赖包 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency这里的客户端依赖要在每一个微服务项目的pom.xml文件中都要引入否则Nacos是不会注册它们的。4修改yml文件spring: cloud: nacos: server-addr: localhost:8848 # nacos端口地址在pom文件中添加依赖之后还要在各个项目的yml文件中配置nacos的地址和端口因为我的是本机所以就写成了localhost但是在实际开发中nacos都是集群配置每一个nacos都要写真实的ip和端口端口号不改默认就是8848.5启动项目测试完成了上述依赖配置和文件配置我们就可以进行测试了打开浏览器输入localhost:8848如下图所示这里我已经注册成功了几个实例点击详情还可以查看各个实例的详细信息。三. Nacos服务分级存贮模型在我们的nacos中它还添加了一个服务分级存贮模型的概念什么意思呢我们都知道一个微服务项目是非常庞大的可能我们的一个业务会有很多的模块在部署的时候我们可以把它部署在同一台机器上一个服务下面对应多个实例这就好比是把所有的鸡蛋放在同一个篮子里。如下图所示但是有一个问题如果有一天机房出现故障了那业务不就停掉了吗这肯定是不行的那该怎么办呢nacaos中就设置了分级存储模型添加了一个集群的概念。在之前我们的一个服务可以对应多个实例但现在我们的一个服务可以对应若干个集群集群下面又对应多个实例在中间加了一层如下所示当我们的业务越做越大我们可以在多个城市部署多个集群就算未来有一天某个机房出故障了那也只是其中的一个集群挂掉了但另外的集群仍然可以运作对我们的业务不会造成较大影响。那么在nacos中怎样设置分级存储模型呢很简单我们只需要在yml文件中设置一个属性就可以了nacos: discovery: cluster-name: SZ我们在yml文件中nacos的下一级设置一个discovery的属性这里有一个cluster-name就是用来设置集群名称的名字可以随便起配置好之后我们重启项目在浏览器中再去看nacos点击我们配置的一个实例点击详情这里就会显示我们刚才配置的集群名称“SZ”四. NacosRule负载均衡我们知道在Eureka中我们可以配置负载均衡规则在nacos中也是可以配置负载均衡规则的。配置方法也是在yml文件中userservice: ribbon: NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule因为我们的orderservice业务调用了userservice业务所以要在orderservice的yml文件中配置调用userservice时的负载均衡规则。而且当我们配置了NacosRule之后它会默认优选选择同集群的机器访当同集群的机器都出现故障访问不了时它才会访问同业务的其他集群并会爆出跨集群访问警告但不会报错此外NacosRule是随机负载均衡。五. Nacos服务权重配置当我们设置了集群之后请求会到达我们的多台设备nacos会根据随机负载均衡去挑选一台设备。但是有些激起他们的性能是有差异的假设有两台机器机器A性能好机器B性能差我们希望机器A能多处理一些请求机器B能少处理一些请求怎么做呢我们就可以通过设置服务权重来实现在nacos控制台如下图点击一个实例我们可以点击编辑设置其权重所有实例默认都为1权重越小被随机访问的概率越低就能达到我们的目的。另外当我们权重调成0时是无法被访问的我们就可以在实际开发中做到一个平滑的升级。六. Nacos环境隔离因为我开在开发时有开发环境有生产环境有测试环境。怎么样能将它们隔开呢这里就可以用到我们Nacos的环境隔离怎么做呢很简单第一步第二步第三步第四步在yml文件中进行配置如下我么还是在orderservice业务的yml文件下discovery下方配置namespace属性即可namespace的值为随机生成的id。完成上述步骤之后重启服务当我们再查询订单时就查不到了也因为他们的namespace不一样被隔离在了两个环境下。七. Nacos与Eureka的区别Eureka注册中心是AP更加注重可用性我们的服务消费者会调用服务提供者并把服务提供者列表缓存起来每隔30s会再次从Eureka拉去一次更新如果在30s内有服务挂掉Eureka是不会主动提醒服务消费者的就会造成不一致性而且Eureka发现有服务挂掉之后是不会把它从服务列表中剔除的而是等它恢复正常。Nacos是APCP既可以选择AP又可以选择CP。在Nacos中所有的实例默认都是临时实例当所有实例都是临时实例时nacos和eureka一样都是AP当nacos中有非临时实例时就会转变成CP。服务提供者因为在Nacos中我们可以为一个实例设置是永久实例还是临时实例。它们两个在做健康检测时是不太一样的。如果是临时实例也是通过心跳总检测与Eureka一样每隔一段时间发送一次心跳发送频率比Eureka要快当它挂掉之后Nacos会把它从服务列表中剔除。如果是非临时实例Nacos会主动向非临时实例发送请求询问它是否还健康可用当它挂掉之后Nacos不会把它剔除而是将它标记为不健康状态等它恢复正常。服务消费者Eureka采用的是Pull拉取的方式消费者会从Eureka注册中心中拉取自己所需要的服务列表并短暂的缓存起来这样下次再调用同一个服务时就不需要再次拉取了而是直接从缓存服务列表中拿到消费即可Nacos是采用PullPush(拉取和推送)除了Pull和Eureka一样之外多了一个Push(推送)的功能Nacos每隔一段时间会主动将服务列表推送给消费者Nacos每隔一段时间去更新服务列表而且当我们有服务挂掉之后nacos会马上推送消息给服务消费者告诉它有所变更保证了服务的一致性。