Spring Cloud 微服务项目实战
姚秋辰(姚半仙)
PayPal 研发经理
15861 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
结束语 (1讲)
Spring Cloud 微服务项目实战
15
15
1.0x
00:00/00:00
登录|注册

09 | 集成 Nacos:如何将服务提供者注册到 Nacos 服务器?

你好,我是姚秋辰。
今天我们来动手集成优惠券平台项目到 Nacos 服务器。这个项目我们将分两节课来讲,通过这两节课的学习,你可以知道如何借助 Nacos,搭建起一个端到端的微服务调用链路。在这个过程中,你还会学到 Nacos 自动装配器的工作原理,以及 Nacos 核心参数的配置。掌握了这些内容,你就可以平稳驾驭 Nacos 服务治理了。
在 Nacos 的地盘上,下游服务需要先将自己作为“服务提供者”注册到 Nacos,这个流程叫做“服务注册”;而上游服务作为“服务消费者”,需要到 Nacos 中获取可供调用的下游服务的列表,这个流程就是“服务发现”。
今天我先从两个下游服务 coupon-template-serv 和 coupon-calculation-serv 开始,利用 Nacos 的服务注册功能,将服务提供者注册到 Nacos 服务器。在下一节课中,我再向你展示作为服务消费者的 coupon-customer-serv 是如何通过服务发现机制向服务提供者发起调用。
在集成 Nacos 之前,我们需要先把 Nacos 的依赖项引入到项目中。

添加 Nacos 依赖项

Nacos 是 Sping Cloud Alibaba 项目的一款组件,在引入 Nacos 的依赖项之前,我们需要在项目的顶层 pom 中定义所要使用的 Spring Cloud 和 Spring Cloud Alibaba 的版本。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用Nacos进行服务注册的方法。首先,通过引入Nacos的依赖项和配置,实现了服务注册的功能。作者详细解释了Nacos的自动装配原理,通过自动装配器实现了Nacos核心功能的初始化任务,包括服务发现、服务注册等。文章还介绍了Nacos的核心配置项,如服务注册地址、心跳间隔、命名空间等,并解释了它们的使用场景。接着,文章指导读者验证Nacos的服务注册功能,包括开启Nacos服务器、创建命名空间以及启动服务并检查注册情况。最后,作者鼓励读者通过阅读Nacos源码,深入了解Nacos的底层业务。整体而言,本文内容详实,适合想要了解如何使用Nacos进行服务注册的读者。文章还强调了学习框架时需要深入了解其工作原理,建议读者通过阅读源码锻炼自己的技术能力。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Spring Cloud 微服务项目实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(31)

  • 最新
  • 精选
  • 别拽我的红领巾
    为什么我会优先读取application的nacos配置文件而不是boostrap呢?是不是有什么配置需要修改?

    作者回复: 同学用的是新版本的spring boot/cloud,因此要手工引入下面这个依赖,才能保证优先读取boostrap文件。这是新版和老版之间的一个区别 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>

    2022-03-11
    12
  • so long
    老师你好,nacos服务注册顺藤摸瓜如下,主要靠实现 ApplicationListener<WebServerInitializedEvent>,服务启动初始化完成后进行服务注册。 NacosServiceRegistryAutoConfiguration->NacosAutoServiceRegistration->AbstractAutoServiceRegistration.onApplicationEvent(WebServerInitializedEvent event)->NacosServiceRegistry.register(Registration registration)->NacosNamingService.registerInstance(String serviceName, String groupName, Instance instance)->NamingProxy.registerService(String serviceName, String groupName, Instance instance)

    作者回复: 棒棒哒,so long同学是瓜王

    2022-01-05
    3
  • 你的笑忘书
    Spring Cloud Alibaba 2021.1 适配的 Nacos 版本是 1.4.1

    作者回复: 服务端可以无缝升级2.0版,官方也给出了升级指南 https://nacos.io/zh-cn/docs/2.0.0-upgrading.html

    2022-03-20
    2
  • 来来
    public class NacosDiscoveryAutoConfiguration { // 读取Nacos所有配置项并封装到NacosDiscoveryProperties中 @Bean @ConditionalOnMissingBean public NacosDiscoveryProperties nacosProperties() { return new NacosDiscoveryProperties(); } 上面例子中的这个return new NacosDiscoveryProperties(); 直接new的写法有疑问,为什么不是spring的注入或者查找,直接new出来配置怎么加载的?

    作者回复: 同学可以点击进去NacosDiscoveryProperties,在这个类上有个ConfigurationProperties注解类起了关键作用,指定读取了特定前缀的配置项。你可以在本地用同样方法new一个类试试看,也会达到同样的效果

    2022-01-04
    3
    2
  • 大碗
    nacos具有环境隔离的功能,可以区分生产环境、预发环境和开发环境,请问老师正常生产环境中,只需要一套naocs注册中心就可以么?需不需要有一套测试的nacos注册中心,专门用于注册测试环境的服务

    作者回复: 同学这个问题非常好,我建议生产环境使用单独的nacos服务器,把测试和生产隔离开来以保证线上环境稳定性,并且在线上nacos portal里设置更为严格的登录用户权限控制。

    2021-12-31
    1
  • Geek_3100bd
    我本地配置的远程注册地址,但一直读取本地文件,currentServerAddr:http://localhost:8848, err : connect timed out

    作者回复: 看error是localhost:8848连不上。同学有没有用虚拟机跑应用?或者是虚机起docker镜像,如果是的话,那就不好用localhost了

    2023-07-03归属地:贵州
  • silent
    姚老师,我这边有个疑问啊,为什么我2个服务注册到nacos 会出现,IP1 下存在一个IP2 下存在一个,而不是每一个IP 下都展示2个服务那?

    作者回复: 同学有截图参考吗?如果这两个应用是在本地以不同端口启动,那么在nacos的注册信息应该是IP相同但端口不一样

    2023-03-01归属地:江苏
  • ¯\_(ツ)_╱¯
    老师 pom,xml文件中<relativePath>的作用是什么 为什么有的pom文件中有配置为../pom.xml 有的文件中没有呀

    作者回复: 这里有一个默认的行为,就是当没有配置上级父目录的时候,只写了< relativePath />的时候,会默认自动往../pom.xml这个位置寻找pom文件

    2022-10-24归属地:贵州
  • Geek_277281
    nacos在集群模式下,template可以注册,calculate注册失败;在-m standalone时,两个都可以成功```不明白为什么

    作者回复: 集群模式下是calculate永远是不幸的那个,还是两个交替不幸?

    2022-09-05归属地:上海
    2
  • Geek_277281
    老师你好,我试图在我的机器上运行您提供的源码,更改设置后,template-serv可以正常注册,但cauculation-serv不行,错误发生在cauculation-serv的启动过程中, com.alibaba.nacos.api.exception.NacosException: failed to req API:/nacos/v1/ns/instance after all servers([localhost:8948]) tried: ErrCode:400, ErrMsg:<html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p><div id='created'>Mon Sep 05 10:13:11 UTC 2022</div><div>There was an unexpected error (type=Bad Request, status=400).</div></body></html>

    作者回复: 从报错里我猜想应该是集群模式下失败了,同学你检查下cluster文件里添加的IP是不是真实IP,而不是127.0.xxx之类的所谓本机IP

    2022-09-05归属地:上海
收起评论
显示
设置
留言
31
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部