Nacos注册中心

简介: Nacos是SpringCloud Alibaba的核心组件,集服务注册发现与配置管理于一体,支持AP+CP模式。本文详解其安装部署、服务分级模型、负载均衡、权重控制、环境隔离及实例类型,助你掌握Nacos如何替代Eureka,实现高效微服务治理。

Nacos注册中心
1.Nacos安装部署
1.1 下载安装
nacos官网提供了安装部署教程,其下载链接指向github官网,选择合适版本即可。如访问受阻可直接使用以下最新稳定版压缩包:
nacos-server-2.1.0.zip
(112 MB)
,后续我们也可能会更改为其他版本做更多测试。
公司一般会采用最新版落后几个版本的稳定版当做生产版本,避免一些新特性引发的未知问题。
1.2 启动
window请直接进入路径:cd nacos/bin后双击startup.sh启动,或按照下述指令启动
linux或mac进入路径:nacos/bin/,cmd控制台执行
注意:如存在端口冲突,可至路径:nacos/conf/application.properties 中修改后启动
注意:nacos存储路径不可有中文。如遇启动异常,
mac可至路径:nacos/logs/start.out 查看具体错误信息
windows可至路径:nacos/logs/nacos.log 查看具体错误信息,正常启动日志如下
1.3 访问
成功启动后访问如下地址:http://localhost:8848/nacos/#/login,默认用户名/密码:nacos/nacos
2.整合Nacos注册中心
2.1 依赖导入
父工程新增spring-cloud-alibaba依赖
因为Spring-cloud-alibaba自身也是集成了多个组件,所以这里只需引入alibaba大管家即可
子工程去除eureka依赖
注意order-service、user-service均需删除
子工程新增spring-cloud-alibaba-nacos依赖
注意:不同于父工程,是nacos-discovery,order-service、user-service均需添加
至此,三个工程pom如下(eureka相关工程无需操作):
父pom:
pom.xml
(3 KB)
user-service pom:
pom.xml
(2 KB)
order-service pom:
pom.xml
(2 KB)
2.2 配置文件修改注册中心
子工程均去除eureka注册配置,均新增nacos配置
至此,两个业务工程application.yml如下(eureka相关工程无需操作):
order-service:
application.yml
(1 KB)
user-service:
application.yml
(1 KB)
2.3 启动工程并验证
启动应用后访问Nacos会发现服务已完成注册
如启动遇到工程仍存在Eureka依赖,可尝试重新编译整个工程,或手动删除target文件夹后再启动
3.Nacos服务分级模型
不同于Zookeeper没有针对服务发现设计数据模型,它的数据是以一种更抽象的树形K-V组织的,因此理论上可以存储任何语义的数据。而Eureka或Consule都做到了实例级别的数据扩展,这能满足大多数场景但无法满足大规模和多环境的服务数据存储。Nacos经过多年经验后提炼出上述模型,其特点在于:服务-集群-实例三层模型,可以满足所有场景下的数据存数和管理。
通过设置不同的集群所在参数,可以保证相同集群间优先调用,减少网络开销。当本地集群服务无法拉取时,再去跨集群调用。对于此工程我们只需要设置提付提供者集群参数:
此时访问Nacos会发现其增加了集群属性发生变化,原为:Default
为模拟多集群场景,此时我们复制一个新的userApplicatio3启动类,具体操作步骤如下:
复制一个新的userApplicatio3启动类,设置其启动端口:-Dserver.port=8083
更改配置文件集群属性为GZ(注意不要停userApplication、userApplication2,否则原注册信息会失效)
启动userApplication3并访问nacos
此时查看Nacos服务信息会发现,已经有了两个集群信息。
此时我们就完成Nacos分级模型的验证,在实际的工作、生产环境中,一般来说服务都是同集群部署,不需要开发人员声明式感知服务所在集群信息。
4.NacosRule负载均衡策略
修改oder-service集群属性、负载均衡策略,调整为如下:
注意:此时需要将OrderApplication中的代码声明式负载均衡策略注释或删除(约定大于配置),否则失效
此时重启应用后会发现orderservice集群属性存在变化:
访问oder-service服务会发现其优先匹配HZ集群的userApplication、userApplication2。
上面我们提到优先调用本集群的服务,当本集群服务实例不存在时会考虑跨集群调用,故我们停掉userApplication、userApplication2,再做一次访问会发现访问正常,同时请求日志打到userApplication3。
5.Nacos权重控制
基于上一章节的负载均衡算法,我们可以了解到:存在部分机器性能更优,此时该机器理应得到更多的流量分配,nacos通过设置服务权重解决这一问题,权重越大访问评率越高,配置页面如下:
编辑后再次访问服务,会发现流量产生明细变化。如权重设置为0对于服务调用方等同于服务下线。
6.Nacos环境隔离
日常开发过程中,我们一般会有dev、test、poc、prod等多个环境,同一个服务不同环境之间因存在代码不一致问题肯定需要做隔离调度,Nacos通过namespace解决此问题,配置页面如下,我们新增一个dev:
增加完成后列表发生变化如下:
我们尝试在order-service中增加namespace,并重启服务再次访问,注意:namespace后字符串为上图ID
此时会因不在同一命名空间导致无法访问(因userservice暴露服务时未声明namespace,默认public)
我们修改user-service的配置文件,增加namespace,并重启服务再次访问会发现服务恢复正常
7.Nacos临时实例与持久化实例
Nacos在定义上区分临时实例和持久化实例,其主要区分关键是健康检查的方式。
临时实例:客户端上报模型,能够自动摘除不健康实例,无需持久化实例存储
持久实例:服务端反省探测模式,客户端因不上报心跳故不会自动摘除下线实例
在大中型公司,两种类型一般都会使用,基础的组件如数据库、缓存等往往不能上报心跳,这种类型的服务在注册时就需要作为持计划实例注册。而上层的业务服务,如微服务或Dubbo服务,服务的Provider端支持添加心跳,此时就可以使用临时实例的注册方式。
其配置文件配置如下:
8.Nacos更多总结分析
Nacos.mm
(32 KB)
,如无法访问可链接至:https://kdocs.cn/l/ccGuOOfpPjFv,图片展示如下:
9.总结
本节从Nacos安装、运行到具体规则配置,带领读者们深度参与了Nacos日常使用场景,Nacos作为注册中心可以优雅替换Eureka也离不开SpringCloud Alibaba的开源贡献。作为国内主流的配置、注册中心,Nacos在国内多数微服务公司都有使用,感兴趣的可以阅读一下本节推荐资料,笔者整理归纳在本文第8章节。
Nacos除了能够实现服务注册发现(AP),此外还有个重要特性:配置管理(CP),我们将在下一章节展开学习。
思考问题
Nacos是什么?解决了什么问题?
Nacos是如何优雅替换Eureka的?
Nacos实现的是客户端,还是服务端负载均衡?
Nacos如何实现注册中心?

相关文章
|
1天前
|
消息中间件 缓存 Java
消息中间件RabbitMQ(基础)
RabbitMQ是基于AMQP协议的开源消息中间件,使用Erlang语言开发,实现应用解耦、异步通信与流量削峰。通过生产者、消费者、交换机、队列等组件,支持多种消息模型,如简单队列、发布订阅、路由匹配等,提升系统性能与可靠性。
15 0
|
1天前
|
自然语言处理 监控 搜索推荐
分布式搜索引擎ElasticSearch
ElasticSearch是基于Lucene的分布式开源搜索引擎,支持海量数据的快速检索、日志分析与实时监控。通过倒排索引实现高效模糊查询,结合Kibana、Logstash等组件构成ELK技术栈,广泛应用于搜索、日志统计与系统监控场景。
21 0
|
1天前
|
数据采集 监控 NoSQL
用n8n打造自愈型用例库与质量知识图谱
三年前,测试团队困于臃肿用例库与信息孤岛。我们基于n8n构建自愈型质量管理系统,打通需求、缺陷与测试数据,实现用例自动修复、智能推荐与持续优化,让质量知识自主进化。
|
1天前
|
人工智能 自然语言处理 算法
2025数字人企业厂商排名与新榜单及新技术指南
数字人企业崛起,引领虚拟与现实融合新潮流。像衍科技、阿里、百度等凭借技术与场景创新领跑行业,推动数字人在金融、传媒、教育等领域落地。数字人不仅是虚拟形象,更是AI驱动的智能体,正重塑人机交互方式,助力企业降本增效,迈向“轻量化”“情境化”未来。
|
1天前
|
JSON 监控 API
1688查询榜单列表API开发指南
1688查询榜单列表API提供热门商品、类目销售排行等多类型榜单数据,支持实时更新,助力电商选品、市场分析与决策。返回商品ID、标题、价格、销量等关键信息,数据格式为JSON,编码UTF-8,适用于多种业务场景。
|
1天前
|
SQL 容灾 Nacos
Seata的部署和集成
本文介绍Seata分布式事务框架的部署与集成。首先下载并解压seata-server-1.5.1,修改application.yml配置,将seataServer.properties配置上传至Nacos作为统一配置中心,并创建所需数据库表。启动tc-server后,注册到Nacos,通过控制台可查看服务状态。各微服务需引入Seata依赖,并在application.yml中配置相关参数。为实现高可用,可搭建多节点TC集群,如GZ和HZ集群,通过Nacos统一管理事务组映射,微服务从Nacos读取client.properties配置,动态切换TC集群连接,提升系统容灾能力。
13 0
|
1天前
|
SQL 容灾 数据库
分布式事务Seata
Seata是阿里开源的分布式事务解决方案,提供XA、AT、TCC、SAGA四种模式,解决微服务架构下的跨库跨服务事务一致性问题。通过TC(事务协调者)、TM、RM三大角色实现全局事务管理,支持高可用部署与无缝集成Spring Cloud,助力系统实现最终一致或强一致性事务。
17 0
|
1天前
|
NoSQL Redis
Redis集群伸缩,转移插槽失败
Redis集群伸缩时出现插槽转移失败,提示节点配置不一致及存在导入中插槽。需登录对应实例,如`redis-cli -c -p 7004`,根据警告信息获取异常slot ID(如0),执行`cluster setslot 0 stable`取消迁移,恢复集群一致性后方可重新平衡。
12 0
|
1天前
|
消息中间件 Shell Linux
RabbitMQ部署指南
本指南详细介绍RabbitMQ在CentOS7中基于Docker的单机与集群部署,涵盖DelayExchange插件安装、普通模式与镜像模式集群搭建、仲裁队列配置及高可用测试,助力实现稳定可靠的消息队列服务。
15 0
|
1天前
|
关系型数据库 应用服务中间件 nginx
容器引擎Docker
Docker是一种开源容器化技术,将应用及依赖打包成镜像,实现跨环境一致部署。它通过隔离机制确保容器间互不干扰,解决开发、测试、生产环境差异与依赖冲突问题,具备启动快、资源占用少、易迁移等优势,是现代微服务部署的核心工具。
20 0