首页/新闻资讯/正文详情

Spring Cloud Alibaba Nacos注册中心

发布时间:2026/9/24 17:14:49 来源:云帆数科 栏目:资讯中心
Spring Cloud Alibaba Nacos注册中心
一、前言Nacos是一款集服务发现、服务健康监测、动态配置服务、动态 DNS 服务、服务及其元数据管理于一身的开源软件这节主要记录Nacos的服务注册发现功能的使用。借助Spring Cloud Alibaba Nacos Discovery我们可以轻松地使用Spring Cloud编程模型体验Nacos的服务注册发现功能。本节使用的Spring Cloud Alibaba版本为2.2.3.RELEASESpring Boot版本为2.3.2.RELEASE。二、Nacos简介官方参考文档2.1 基本架构及概念2.2 逻辑架构及其组件服务管理实现服务CRUD域名CRUD服务健康状态检查服务权重管理等功能配置管理实现配置管CRUD版本管理灰度管理监听管理推送轨迹聚合数据等功能元数据管理提供元数据CURD 和打标能力插件机制实现三个模块可分可合能力实现扩展点SPI机制事件机制实现异步化事件通知sdk数据变化异步通知等逻辑日志模块管理日志分类日志级别日志可移植性尤其避免冲突日志格式异常码帮助文档回调机制sdk通知数据通过统一的模式回调用户处理。接口和数据结构需要具备可扩展性寻址模式解决ip域名nameserver、广播等多种寻址模式需要可扩展推送通道解决server与存储、server间、server与sdk间推送性能问容量管理管理每个租户分组下的容量防止存储被写爆影响服务可用性流量管理按照租户分组等多个维度对请求频率长链接个数报文大小请求流控进行控制缓存机制容灾目录本地缓存server缓存机制。容灾目录使用需要工具启动模式按照单机模式配置模式服务模式dns模式或者all模式启动不同的程序UI一致性协议解决不同数据不同一致性要求情况下不同一致性机制存储模块解决数据持久化、非持久化存储解决数据分片问题Nameserver解决namespace到clusterid的路由问题解决用户环境与nacos物理环境映射问题CMDB解决元数据存储与三方cmdb系统对接问题解决应用人资源关系Metrics暴露标准metrics数据方便与三方监控系统打通Trace暴露标准trace方便与SLA系统打通日志白平化推送轨迹等能力并且可以和计量计费系统打通接入管理相当于阿里云开通服务分配身份、容量、权限过程用户管理解决用户管理登录sso等问题权限管理解决身份识别访问控制角色管理等问题审计系统扩展接口方便与不同公司审计系统打通通知系统核心数据变更或者操作方便通过SMS系统打通通知到对应人数据变更OpenAPI暴露标准Rest风格HTTP接口简单易用方便多语言集成Console易用控制台做服务管理、配置管理等操作SDK多语言sdkAgentdns-f类似模式或者与mesh等方案集成CLI命令行对产品进行轻量化管理像git一样好用2.3 构建物、部署及启动模式两种交付工件Nacos 支持标准 Docker 镜像(TODO: 0.2版本开始支持及 zip(tar.gz)压缩包的构建物。两种启动模式Nacos 支持将注册中心(Service Registry与配置中心(Config Center) 在一个进程合并部署或者将2者分离部署的两种模式。免费的公有云服务模式除了您自己部署和启动 Nacos 服务之外在云计算时代Nacos 也支持公有云模式在阿里云公有云的商业产品如ACM, EDAS) 中会提供 Nacos 的免费的公有云服务。也欢迎和支持其他的公有云提供商提供 Nacos 的公有云服务。2.4 版本说明官方文档参考2.4.1 组件版本关系Spring Cloud Alibaba VersionSentinel VersionNacos VersionRocketMQ VersionDubbo VersionSeata Version2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE1.8.01.3.34.4.02.7.81.3.02.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE1.7.11.2.14.4.02.7.61.2.02.2.0.RELEASE1.7.11.1.44.4.02.7.4.11.0.02.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE1.7.01.1.44.4.02.7.30.9.02.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE1.6.31.1.14.4.02.7.30.7.12.4.2 版本依赖关系Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot VersionSpring Cloud Hoxton.SR82.2.3.RELEASE2.3.2.RELEASESpring Cloud Greenwich.SR62.1.3.RELEASE2.1.13.RELEASESpring Cloud Hoxton.SR82.2.2.RELEASE2.3.2.RELEASESpring Cloud Hoxton.SR32.2.1.RELEASE2.2.5.RELEASESpring Cloud Hoxton.RELEASE2.2.0.RELEASE2.2.X.RELEASESpring Cloud Greenwich2.1.2.RELEASE2.1.X.RELEASESpring Cloud Finchley2.0.2.RELEASE2.0.X.RELEASESpring Cloud Edgware1.5.1.RELEASE(停止维护建议升级)1.5.X.RELEASE三、Nacos安装3.1 下载解压Nacos下载地址https://github.com/alibaba/nacos/releases,选择最新版本 nacos-server-1.3.1.zip 下载并解压。3.2 数据源配置打开conf目录下的配置文件在application.properties中添加数据源配置spring.datasource.platformmysql db.num1 db.url.0jdbc:mysql://127.0.0.1:3306/nacosdb?characterEncodingutf8connectTimeout1000socketTimeout3000autoReconnecttrueuseUnicodetrueuseSSLfalseserverTimezoneUTCdb.usernacos db.passwordnacos1233.3 数据导入安装数据库版本要求5.6.5我的本地是5.7.23创建数据库和用户createdatabasenacosdbdefaultcharactersetutf8collateutf8_general_ci;createusernacos%identifiedbynacos123;createusernacoslocalhostidentifiedbynacos123;grantallprivilegesonnacosdb.*tonacos%identifiedbynacos123;grantallprivilegesonnacosdb.*tonacoslocalhostidentifiedbynacos123;flushprivileges;导入Nacos解压包conf目录下的nacos-mysql.sql脚本导入后库表如下图所示3.4 启动测试数据层准备好后我们就可以启动Nacos了。本地使用windows10 64bit直接点击bin目录下startup.cmd。linux环境下执行sh startup.sh -m standalone启动单机版Nacos。注意:1.3.2版本在windows上启动单机模式双击startup.cmd可能会报错建议启动时候使用startup.cmd -m standalone这样启动浏览器访问http://127.0.0.1:8848/nacos说明Nacos启动成功账号密码都为nacos。四、框架搭建使用IDEA创建一个maven项目artifactId为spring-cloud-alibaba-nacos-register然后在其下面创建两个ModuleSpring Boot项目artifactId分别为consumer和provider充当服务消费端和服务提供端项目结构如下图所示spring-cloud-alibaba-nacos-register的pom内容?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.3.2.RELEASE/versionrelativePath/!-- lookup parent from repository --/parentgroupIdcom.wno704/groupIdartifactIdspring-cloud-alibaba-nacos-register/artifactIdversion0.0.1-SNAPSHOT/versionnameAlibaba-Nacos-Register/namedescriptionDemo project for Spring Boot/descriptionpackagingpom/packagingmodulesmoduleconsumer/modulemoduleprovider/module/modulespropertiesjava.version1.8/java.versionspring-cloud-alibaba.version2.2.3.RELEASE/spring-cloud-alibaba.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project因为本节演示的是Nacos的服务注册发现功能所以引入的是spring-cloud-alibaba-nacos-discovery依赖。provider的pom的内容如下所示?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.wno704/groupIdartifactIdspring-cloud-alibaba-nacos-register/artifactIdversion0.0.1-SNAPSHOT/versionrelativePath../pom.xml/relativePath/parentartifactIdprovider/artifactIdnameAlibaba-Provider/namedescriptionDemo project for Spring Boot/descriptionbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/projectconsumer的pom内容如下?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.wno704/groupIdartifactIdspring-cloud-alibaba-nacos-register/artifactIdversion0.0.1-SNAPSHOT/versionrelativePath../pom.xml/relativePath/parentartifactIdconsumer/artifactIdnameAlibaba-Consumer/namedescriptionDemo project for Spring Boot/descriptionbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project五、Nacos作为注册中心5.1 provider在provider的com.wno704.alibaba目录下新建controller包然后在该包下新建HelloControllerRestControllerRequestMapping(provide)publicclassHelloController{GetMapping({message})publicStringhello(PathVariableStringmessage){returnString.format(hello %s,message);}}提供了一个REST接口供consumer调用。然后在provider的项目配置文件application.yml里添加如下配置server:port:8900spring:application:name:providercloud:nacos:server-addr:127.0.0.1:8848server.portprovider服务端口为8001spring.application.name服务名称为providerspring.cloud.nacos.server-addr指定Nacos注册中心的地址。5.2 consumerprovider代码准备好后接着在consumer项目的com.wno704.alibaba目录下新建controller包然后在该包下新建ConsumeControllerRestControllerRequestMapping(consume)publicclassConsumeController{AutowiredprivateLoadBalancerClientloadBalancerClient;AutowiredprivateRestTemplaterestTemplate;GetMapping(hello/{message})publicStringhello(PathVariableStringmessage){ServiceInstanceserviceInstanceloadBalancerClient.choose(provider);StringpathString.format(http://%s:%s/provide/%s,serviceInstance.getHost(),serviceInstance.getPort(),message);StringresultrestTemplate.getForObject(path,String.class);returnString.format(%s from %s %s,result,serviceInstance.getHost(),serviceInstance.getPort());}}因为spring-cloud-alibaba-nacos-discovery内置了Ribbon所以我们可以直接注入LoadBalancerClientRestTemplate我们稍后再配置。hello()方法中我们通过服务提供者的名称provider即provider项目配置的spring.application.name从Nacos注册中心中获取对应的服务实例然后访问其提供的/provide/{message} GET服务。这些在《Spring Cloud Ribbon客户端负载均衡》一节中都介绍过了有不懂的可以参阅下。接着在consumer项目的com.wno704.alibaba目录下新建config包然后在该包下新建ConsumerConfigConfigurationpublicclassConsumerConfig{BeanpublicRestTemplaterestTemplate(){returnnewRestTemplate();}}上面代码配置了RestTemplate Bean。最后在consumer项目的配置文件application.yml中添加如下配置server:port:8901spring:application:name:consumercloud:nacos:server-addr:127.0.0.1:8848配置和provider项目类似不再赘述。5.3 启动测试分别启动provider和consumer项目观察Nacos控制台服务列表可以看到两个服务都注册进来了。接着浏览器访问http://localhost:8901/consume/hello/nacos调用成功说明服务发现成功。六、负载均衡我们启动多个provider服务服务名启动参数端口AlibabaProviderApplication-8905server.port89058905AlibabaProviderApplication-8906server.port89058906AlibabaProviderApplication-8907server.port89058907把原来启动AlibabaProviderApplication服务关掉启动新建的三个服务观察Nacos控制台可以看到provider已经有三个实例了然后多次访问http://localhost:8901/consume/hello/nacos可以看到请求是均衡的默认为轮询算法七、Nacos注册中心配置更多可用Nacos Descovery配置配置项Key默认值说明服务端地址spring.cloud.nacos.discovery.server-addr无Nacos Server 启动监听的ip地址和端口服务名spring.cloud.nacos.discovery.service${spring.application.name}给当前的服务命名服务分组spring.cloud.nacos.discovery.groupDEFAULT_GROUP设置服务所处的分组权重spring.cloud.nacos.discovery.weight1取值范围 1 到 100数值越大权重越大网卡名spring.cloud.nacos.discovery.network-interface无当IP未配置时注册的IP为此网卡所对应的IP地址如果此项也未配置则默认取第一块网卡的地址注册的IP地址spring.cloud.nacos.discovery.ip无优先级最高注册的端口spring.cloud.nacos.discovery.port-1默认情况下不用配置会自动探测命名空间spring.cloud.nacos.discovery.namespace无常用场景之一是不同环境的注册的区分隔离例如开发测试环境和生产环境的资源如配置、服务隔离等。AccessKeyspring.cloud.nacos.discovery.access-key无当要上阿里云时阿里云上面的一个云账号名SecretKeyspring.cloud.nacos.discovery.secret-key无当要上阿里云时阿里云上面的一个云账号密码Metadataspring.cloud.nacos.discovery.metadata无使用Map格式配置用户可以根据自己的需要自定义一些和服务相关的元数据信息日志文件名spring.cloud.nacos.discovery.log-name无集群spring.cloud.nacos.discovery.cluster-nameDEFAULT配置成Nacos集群名称接入点spring.cloud.nacos.discovery.enpointUTF-8地域的某个服务的入口域名通过此域名可以动态地拿到服务端地址是否集成Ribbonribbon.nacos.enabledtrue一般都设置成true即可是否开启Nacos Watchspring.cloud.nacos.discovery.watch.enabledtrue可以设置成false来关闭 watch

相关推荐

【在线五子棋对战】实用工具类模块实现
【在线五子棋对战】实用工具类模块实现

目录 日志类 strftime() 宏封装 声明全局Logger对象 MySQL API封装 Jsoncpp的序列化/反序列化封装 字符串分割封装 读取文件封装 密码模块 二进制(字节)数据转十六进制字符串 生成随机盐 计算密码哈希 密码验证 日志类 日志类完成的功能是对… · 2026/9/24 17:14:49

解构一个嵌入式qt工程
解构一个嵌入式qt工程

这个工程具有一定分析价值, qt 的整体程序完整。 但是该工程是基于Qt4的,而我的构建套件是基于Qt5的 解决版本兼容问题 在.pro中增加Qt模块配置 TEMPLATE = app# =========增加Qt模块,重点!========= QT += core gui widgets networkgreaterThan(QT_MAJOR_VERSION, 4): Q… · 2026/9/24 17:14:41

Python后端AI专题19:批量 Embedding 与断点续建:第三批失败后从哪里重来
Python后端AI专题19:批量 Embedding 与断点续建:第三批失败后从哪里重来

Python后端AI专题19:批量 Embedding 与断点续建:第三批失败后从哪里重来一份 500 页手册产生 1800 个 chunk。前两批向量已经写入,第三批遇到供应商 503。若任务从头重跑,不仅浪费 Token,还可能写出重复记录&#xff1… · 2026/9/24 17:14:41

云原生架构-服务网格
云原生架构-服务网格

一、服务网格本质 服务网格的本质,是把微服务之间通信的“脏活累活”——重试、加密、监控、限流——从每个服务的业务代码里抽出来,交给一个统一的、独立的基础设施层去干。业务代码只关心业务逻辑,通信治理由网格统一负责。 在没有服务网格… · 2026/9/24 17:54:09

鸿蒙权限模型实战:Markdown 图片跟随文档的五层落位设计(spike 实验推翻两条铁律)
鸿蒙权限模型实战:Markdown 图片跟随文档的五层落位设计(spike 实验推翻两条铁律)

鸿蒙权限模型实战:Markdown 图片跟随文档的五层落位设计(spike 实验推翻两条铁律) Markdown 文档里插入图片,有个经典难题:图片文件放哪。放全局图库,文档拷给别人图片就断链;放文档旁的 assets… · 2026/9/24 17:54:09

系统分析师之信息化基础知识
系统分析师之信息化基础知识

知识点:信息工程方法信息工程是面向企业计算机信息系统建设,以数据为中心的开发方法。信息工程方法认为,与企业的信息系统密切相关的三要素是企业的各种信息、企业的业务过程和企业采用的信息技术。信息工程自上而下地将整个信息系统的开发过… · 2026/9/24 17:54:02

Spring AI 模型 API 使用指南:从版本选择到聊天模型实战
Spring AI 模型 API 使用指南:从版本选择到聊天模型实战

阅读 Spring 英文 AI 文档 和 中文文档,基于官方文档与学习资料,整理了一份 AI 模型 API 的使用指南,带你从零上手 Spring AI。 1. 版本选择 Spring AI 版本Spring Boot 版本Java 版本Spring AI 1.1.xSpring Boot 3.5.xJava 17 版本阶段排序… · 2026/9/24 17:54:02

2026 年了,AI Agent 框架到底怎么选?一张表说清主流方案
2026 年了,AI Agent 框架到底怎么选?一张表说清主流方案

2026 年了,AI Agent 框架到底怎么选?一张表说清主流方案摘要:别再收藏第 11 篇框架对比了。本文按「单 Agent 快速上手 / 多 Agent 编排 / 低代码接入」三个真实场景分档,一张表说清 LangChain、LangGraph、AutoGen、CrewAI、Dify… · 2026/9/24 17:53:55

华为MetaERP 按「业务节点 → 差异如何确定 → 会计分录」三层结构,把 Oracle EBS / Fusion 在采购接收、接收入库、发票匹配三个时点上,面对外币采购、标准成本、平均成本、
华为MetaERP 按「业务节点 → 差异如何确定 → 会计分录」三层结构,把 Oracle EBS / Fusion 在采购接收、接收入库、发票匹配三个时点上,面对外币采购、标准成本、平均成本、

按「业务节点 → 差异如何确定 → 会计分录」三层结构,把 Oracle EBS / Fusion 在采购接收、接收入库、发票匹配三个时点上,面对外币采购、标准成本、平均成本、不可抵扣进项税组合场景下的 PPV / IPV / 汇兑损益 / 不可抵扣税​ 逻辑一次讲透。EBS 与 F… · 2026/9/24 17:53:55

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码