Nacos服务注册与发现的原理和如何配置

news/2024/10/11 20:43:19

由于在大型为微服务项目中存在很多服务提供者,甚至相同的服务会使用不同的路径去调用,为了更好的管理并调用这些服务,我们需要使用注册中心来帮助我们管理这些服务

以nacos为例,
1.当使用nacos来管理服务的时候,服务启动时会将自己的注册信息,例如服务名,Ip,端口注册到注册中心中。
2.调用者可以直接从调用中心订阅需要的服务,便可以获取该服务对应的服务实例列表(一个服务可以拥有多个实例服务,他们具有相同的服务名称,但是请求的路径不同)
3.调用者可以通过一系列算法决定使用那个实例服务
4.通过实例服务,我们可以获取到访问这个服务的Path路径,也可以决定直接使用路径访问或者使用插件完成远程调用

当服务提供者实例故障或者启动新实例时
1.当启动时会自动将服务信息放入注册中心中,同时定期发送自己的健康状态。
2.当注册中心长时间无法收到服务实例的发送的健康状态,会向实例发送请求询问,如果请求无法成功,便会i认为实例故障,从实例服务列表中移除,同时通知使用者,更新本地的服务列表

基于docker安装nacos就看这个大佬的博客吧
https://www.cnblogs.com/johnnyzen/p/18097914

在装完nacos后,启动服务,访问下面地址:http://localhost:8848/nacos
,注意将localhost替换为你自己的虚拟机IP地址。首次访问会跳转到登录页,账号密码都是nacos.

完成nacos安装后我们就可以开始注册服务了
首先需要导入依赖
<!--nacos 服务注册发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
然后在服务的application.yml中添加nacos地址配置:
spring: application: name: item-service # 服务名称 cloud: nacos: server-addr: localhost:8848 # nacos地址
然后启动服务就能在网页上看到该服务

服务发现
调用者使用服务时,也要通过nacos去获取远程调用的服务
因此也需要导入nacos的依赖
<!--nacos 服务注册发现--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
这个依赖中同时包含了服务注册和发现的功能。因为任何一个微服务都可以调用别人,也可以被别人调用,即可以是调用者,也可以是提供者。
配置nacos的地址
spring: cloud: nacos: server-addr: localhost:8848
在发现服务时,调用者会获得多个实例,因此需要负载均衡算法去选择对应的实例。
在未使用nacos时,我们的服务中远程调用都是把url写在代码中

但在使用nacos后我们可以使用获取到的实例的path动态的获取服务

可以看到虽然访问的服务不是固定的了,但是代码依旧很难看,因此最好在使用服务远程调用的插件来调用服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/70381.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

多校 A 层冲刺 NOIP2024 模拟赛 05

难度 ★★★☆☆多校A层冲刺NOIP2024模拟赛05 T1 好数(number) 签到题 首先 \(O(nV)\) 的背包暴力是显然的,注意到本题只需要合法性,状态只有 \(0/1\),上 \(bitset\) 优化转移即可。 时间复杂度 \(O(\frac{nV}{w})\)。 T2 SOS字符串(sos) 签到题 计数题难点在不重不漏,…

VS2019/2022配置C++ OpenCV4.10.0环境

一、下载opencv4.10.0 官网链接:https://opencv.org/ 安装的时候记住安装路径,本人安装到E盘 二、新建C++项目 1、本人新建C++/CLR .Netframework项目 2、右击打开C++项目属性 2.1、添加包含目录 此处本人配置的是绝对地址,拷贝build文件夹到程序目录,然后配置相对地址方…

搜狗输入法ng版导入细胞词库过程的简要分析

今天有点时间,对deepin/uos上的搜狗输入法ng版导入细胞词库的行为做了一下分析。今天有点时间,对deepin/uos上的搜狗输入法ng版导入细胞词库的行为做了一下分析,过程如下: 1.在属性设置界面,用户选择.scel细胞词库文件,输入法对.scel的文件头进行验证,如果是 40 15 00 0…

花指令与anti-debug

花指令 anti-Debugptrace反调试 (1) ptrace系统调从名字上看是用于进程跟踪的,它提供了父进程可以观察和控制其子进程执行的能力,并允许父进程检查和替换子进程的内核镜像(包括寄存器)的值。其基本原理是: 当使用了ptrace跟踪后,所有发送给被跟踪的子进程的信号(除了SIGKILL),都…

禁止嵌套 iframe

vim /etc/nginx/nginx.conf 在:http 中加入:server { add_header X-Frame-Options "SAMEORIGIN"; } -----------------如:------------------------------------------ -------------------------------------------- 重启: cd /usr/sbin ./nginx -s relo…

诸多注解的作用

@Configuration标明这个类是一个配置类 @ComponentScan()用于设定扫描路径,此注解只能添加一次,多个注解用数组格式 @Scope注解是 Spring IOC 容器中的一个作用域,@Scope(singleton)标明为单例对象(默认也是单例),@Scope(prototype)标明为多例对象 影响Servlet生命周期的…

最终的方案

每个人维护一个歌单,建议一周一随,直接随出来几个歌单编号,由个人直接来决定最终歌曲,已经选过的歌单会等最后选完再重新计入。(两个机房的都可以贡献歌单) 现在建立新的歌单,曾经的那个仅供参考。 规则与上次相同。征求歌单!!! 原公告地址: 《公告》 CLOI在此向其…

南沙C++信奥赛陈老师解一本通题 1950:【10NOIP普及组】接水问题

​ 【题目描述】学校里有一个水房,水房里一共装有m个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。 现在有n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1到n 编号,i号同学的接水量为w。接水开始时,1 到m 号同学各占一个水龙头,并同…