千家信息网

如何使用Nacos实现服务注册与发现

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,如何使用Nacos实现服务注册与发现,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是NacosNacos致力于帮助您发现、配置和管理
千家信息网最后更新 2026年11月02日如何使用Nacos实现服务注册与发现

如何使用Nacos实现服务注册与发现,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

什么是Nacos

Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以"服务"为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

在接下里的教程中,将使用Nacos作为微服务架构中的注册中心(替代:eurekba、consul等传统方案)以及配置中心(spring cloud config)来使用。

安装Nacos

下载地址:https://github.com/alibaba/nacos/releases
本文版本:1.1.3

下载完成之后,解压。根据不同平台,执行不同命令,启动单机版Nacos服务:

  • Linux/Unix/Mac:sh startup.sh -m standalone

  • Windows:cmd startup.cmd -m standalone

启动完成之后,访问:http://127.0.0.1:8848/nacos/,可以进入Nacos的服务管理页面默认账号密码都是nacos,具体如下:

构建应用接入Nacos注册中心

在完成了Nacos服务的安装和启动之后,下面我们就可以编写两个应用(服务提供者与服务消费者)来验证服务的注册与发现了。

服务提供者

第一步:创建一个Spring Boot应用,可以命名为:alibaba-nacos-discovery-server。

第二步:编辑pom.xml,加入必要的依赖配置,比如:

    org.springframework.boot    spring-boot-starter-parent    2.0.5.RELEASE                             org.springframework.cloud            spring-cloud-dependencies            Finchley.SR1            pom            import                            org.springframework.cloud            spring-cloud-alibaba-dependencies            0.2.2.RELEASE            pom            import                        org.springframework.boot        spring-boot-starter-web                org.springframework.cloud        spring-cloud-starter-alibaba-nacos-discovery                org.projectlombok        lombok        1.18.2        true    

上述内容主要三部分:

  • parent:定义spring boot的版本

  • dependencyManagement:spring cloud的版本以及spring cloud alibaba的版本,由于spring cloud alibaba还未纳入spring cloud的主版本管理中,所以需要自己加入

  • dependencies:当前应用要使用的依赖内容。这里主要新加入了Nacos的服务注册与发现模块:spring-cloud-starter-alibaba-nacos-discovery。由于在dependencyManagement中已经引入了版本,所以这里就不用指定具体版本了。

第三步:创建应用主类,并实现一个HTTP接口:

@EnableDiscoveryClient@SpringBootApplicationpublic class TestApplication {    public static void main(String[] args) {        SpringApplication.run(TestApplication.class, args);    }    @Slf4j    @RestController    static class TestController {        @GetMapping("/hello")        public String hello(@RequestParam String name) {            log.info("invoked name = " + name);            return "hello " + name;        }    }}

内容非常简单,@SpringBootApplication定义是个Spring Boot应用;@EnableDiscoveryClient开启Spring Cloud的服务注册与发现,由于这里引入了spring-cloud-starter-alibaba-nacos-discovery模块,所以Spring Cloud Common中定义的那些与服务治理相关的接口将使用Nacos的实现。这点不论我们使用Eureka、Consul还是其他Spring Cloud整合的注册中心都一样,这也是Spring Cloud做了封装的好处所在

第四步:配置服务名称和Nacos地址

spring.application.name=alibaba-nacos-discovery-serverserver.port=8001spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

第五步:启动上面创建的应用。可以在启动时候增加-Dserver.port=8001的形式在本机的不同端口上启动多个实例。

在应用启动好之后,我们可以在控制台或日志中看到如下内容,代表已经注册成功:

INFO 2998 --- [           main] o.s.c.a.n.registry.NacosServiceRegistry  : nacos registry, alibaba-nacos-discovery-server 192.168.1.139:8001 register finished

在启动都ok之后,我们可以访问Nacos的管理页面http://127.0.0.1:8848/nacos/来查看服务列表,此时可以看到如下内容:

这里会显示当前注册的所有服务,以及每个服务的集群数目、实例数、健康实例数。点击详情,我们还能看到每个服务具体的实例信息,如下图所示:

服务消费者

接下来,实现一个应用来消费上面已经注册到Nacos的服务。

第一步:创建一个Spring Boot应用,命名为:alibaba-nacos-discovery-client-common。

第二步:编辑pom.xml中的依赖内容,与上面服务提供者的一样即可。

第三步:创建应用主类,并实现一个HTTP接口,在该接口中调用服务提供方的接口。

@EnableDiscoveryClient@SpringBootApplicationpublic class TestApplication {    public static void main(String[] args) {        SpringApplication.run(TestApplication.class, args);    }    @Slf4j    @RestController    static class TestController {        @Autowired        LoadBalancerClient loadBalancerClient;        @GetMapping("/test")        public String test() {            // 通过spring cloud common中的负载均衡接口选取服务提供节点实现接口调用            ServiceInstance serviceInstance = loadBalancerClient.choose("alibaba-nacos-discovery-server");            String url = serviceInstance.getUri() + "/hello?name=" + "didi";            RestTemplate restTemplate = new RestTemplate();            String result = restTemplate.getForObject(url, String.class);            return "Invoke : " + url + ", return : " + result;        }    }}

这里使用了Spring Cloud Common中的LoadBalancerClient接口来挑选服务实例信息。然后从挑选出的实例信息中获取可访问的URI,拼接上服务提供方的接口规则来发起调用。

第四步:配置服务名称和Nacos地址,让服务消费者可以发现上面已经注册到Nacos的服务。

spring.application.name=alibaba-nacos-discovery-client-commonserver.port=9000spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

第五步:启动服务消费者,然后通过curl或者postman等工具发起访问,下面以curl为例:

$ curl localhost:9000/testInvoke : http://10.123.18.216:8001/hello?name=didi, return : hello didi

看完上述内容,你们掌握如何使用Nacos实现服务注册与发现的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

服务 应用 接口 内容 版本 实例 管理 配置 消费 消费者 不同 信息 地址 提供者 帮助 供方 名称 平台 方法 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 江苏根荣互联网科技 科技制造互联网公司 互联网公司 科技公司 广州互联网科技公司 北京互联网科技有限公司 合肥互联网科技公司 唐信互联网科技 湖南诚度互联网科技有限公司 彤创互联网科技有限公司 允成互联网科技有限公司融资 如何创新互联网科技 锡山区互联网智能科技产品供应 北京市互联网新科技 广州千川互联网科技有限公司 四川互联网展示科技馆设计 九思连强互联网电子科技有限公司 西安左小互联网科技有限公司 广州三三互联网科技有限公司 陕西彩京云互联网科技有限公司 高科技和互联网的现代国家 科技互联网企业 朗涯互联网科技 人人互联网科技是培训 成都铂石互联网科技做什么的 昭通互联网科技选哪家 华夏互联网科技业 互联网行业科技股 山东有哪些互联网科技公司 黑云互联网科技有限公司 安徽九吞吴互联网科技有限公司
0