当前位置:网站首页 > 去中心化金融(DeFi) > 正文

Nacos配置中心死活连接不上(nacos配置中心详解)



在微服务架构中,当系统从一个单体应用被拆分成分布式系统上的一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了。不仅配置会分散,分散中还会包含着冗余。

配置中心将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。

Nacos是阿里巴巴的一个开源项目,针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案

Nacos官网简介:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

官网地址:

服务发现和服务健康监测

        Nacos使服务器更容易注册,并通过DNS或HTTP接口发现其它服务,Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。

动态配置服务

        动态配置服务允许在所有环境中以集中和动态的方式管理所有的服务配置,Nacos消除了在更新配置时重新部署应用程序,使得配置更加高效和灵活。

动态 DNS 服务

        Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以域名的方式暴露端口,让三方应用方便的查阅和发现。

服务及其元数据管理

        Nacos可以从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。

        Windows10 64位

        JDK1.8

        Maven3.2以上

        在这里我下载的是1.4.1版本的Nacos,解压后访问文件下的bin目录中的startup.cmd即可运行

        注意:在Nacos在1.3.2之后默认使用的cluster(集群方式启动),如果我们本地是单击模式的话,需要手动改回standalone(单机模式启动)

修改方法:

        将startup.cmd使用编辑工具打开,修改cluster为standalone即可

        可以看到Nacos默认端口为8848,此时提示的网页是无法登录的,因为没有进行配置数据源,因此接下来要在conf文件加下的application.properties文件中进行数据源的配置。去掉前两行的注释,将参数设置为自己的数据库连接信息后再次点击startup.cmd启动Nacos,即可进入到登录页面。

        初始用户名:nacos

        初始密码:nacos

        输入初始用户名和初始密码后登录即到主界面

总结

        以上便是安装Nacos的过程,在安装运行时应该注意到的地方为在1.3.2之后的版本后启动方式默认为集群方式启动,因此要在本地上单点登录的话,需要编辑startup.cmd文件修改启动方式为单机模式。

接下来配置集群,继续当前目录将cluster.conf.example改名为cluster.conf并打开,如果是部署在不同机器就要填写相应的IP地址加端口。

进入bin目录,右键编辑startup_cmd以记事本方式打开,这是nacos的启动文件

         

接下来将nacos目录复制3份,必须停止nacos再复制,否则会报错

分别进入conf下的application.properties配置文件,更改端口号,与配置cluster.conf 时相对应。

 

 

修改springboot配置文件:写单个或者多个地址效果都一样

一个服务可以有多个实例,例如我们的user-service,可以有:

127.0.0.1:8081

127.0.0.1:8082

127.0.0.1:8083

假如这些实例分布于全国各地的不同机房,例如:

127.0.0.1:8081,在上海机房

127.0.0.1:8082,在上海机房

127.0.0.1:8083,在杭州机房

Nacos就将同一机房内的实例 划分为一个集群。

也就是说,user-service是服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型,如图:

微服务互相访问时,应该尽可能访问同集群实例,因为本地访问速度更快。当本集群内不可用时,才访问其它集群。例如:

杭州机房内的order-service应该优先访问同机房的user-service。

1、配置文件:application.properties

        #配置当前服务的集群名称,名称自定义的  HZ代指杭州

        spring.cloud.nacos.discovery.cluster-name=HZ

2、启动三个用户实列,看看效果

        可以看见这里有两个集群,总共三个实列,点击详情可以看见:

 存在两个集群,分别是HZ和SH。

小知识,IDEA上面一个服务启动多个实列和配置实列的参数:

 选中实列,点击复制,就可以出现新的实列了,也可以在红框哪里给新的实列配置各种参数。

3、服务之间集群调用的使用

1、给订单服务添加集群配置和负载均衡配置:application.properties

#配置当前服务的集群名称,名称自定义的  HZ代指杭州

spring.cloud.nacos.discovery.cluster-name=HZ

#负载均衡策略为:优先访问本集群的服务,如果本集群有多个实列,那么对本集群实列的访问就是随机

#如果本集群没有实列,那么访问其他集群的实列时,采用的是随机策略。

userservice.ribbon.NFLoadBalancerRuleClassName=com.alibaba.cloud.nacos.ribbon.NacosRule

注意:需要把用户服务的权重设置为1。

注意:如果访问的不是本地集群,那么会出现下列的警告:跨集群访问警告

总结:com.alibaba.cloud.nacos.ribbon.NacosRule 负载均衡策略

优先选择同集群服务实例列表

本地集群找不到提供者,才去其它集群寻找,并且会报警告

确定了可用实例列表后,再采用随机负载均衡挑选实例

实际部署中会出现这样的场景:

服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承但更多的用户请求。Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。

总结:实例的权重控制

Nacos控制台可以设置实例的权重值,0~1之间

同集群内的多个实例,权重越高被访问的频率越高

权重设置为0则完全不会被访问

Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离。

 一般开发中,都会存在三个环境,dev-开发环境,uat-测试环境,master-生产环境,这里的环境隔离就是可以根据这个来划分,用来防止 开发环境的服务 访问到了 测试环境的服务。

1、Nacos控制台可以创建namespace,用来隔离不同环境

2、然后填写一个新的命名空间信息:

3、保存后会在控制台看到这个命名空间的id:

4、修改订单服务的配置文件:application.properties

# 命名空间,填ID  dev环境

spring.cloud.nacos.discovery.namespace=492a7d5d-237b-46a1-a99a-fa8e98e4b0f9

5、效果

6、此时通过订单服务访问用户服务会报错,因为它们不在同一个环境中。

总结:Nacos环境隔离

每个 namespace 都有唯一id

服务设置 namespace 时要写id而不是名称

不同 namespace下的服务互相不可见,即相互之间不能访问

到此这篇Nacos配置中心死活连接不上(nacos配置中心详解)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • nacos配置中心热更新原理(nacos实现配置文件热更新)2026-01-14 20:09:05
  • pivas静脉配置中心(pivas静脉配置中心题库)2026-01-14 20:09:05
  • cnn是哪个国家的新闻媒体中心(cnn是什么新闻媒体)2026-01-14 20:09:05
  • pivas静脉配置中心工作流程(静脉配置中心的工作内容)2026-01-14 20:09:05
  • github 太慢(github进去慢)2026-01-14 20:09:05
  • pivas静脉配置中心ppt(pivas静脉配置中心工作流程)2026-01-14 20:09:05
  • 静脉配置中心是哪个部门(静脉配置中心是哪个部门负责)2026-01-14 20:09:05
  • pivas静脉配置中心工作内容(静脉配置中心的工作内容)2026-01-14 20:09:05
  • 打印机控件怎么装(打印机控件怎么装进去)2026-01-14 20:09:05
  • Apollo配置中心满足cp还是ap(appollo 配置中心)2026-01-14 20:09:05
  • 全屏图片