首页 > 其他分享 >--Nacos服务注册与发现的概述与原理--

--Nacos服务注册与发现的概述与原理--

时间:2024-10-12 09:59:25浏览次数:8  
标签:服务 中心 -- Nacos 列表 实例 概述 注册

什么是 Nacos

官网中的概述:Nacos官网链接

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

简单来说Nacos就是一个开源的动态服务注册与发现、配置管理和服务管理平台。

Nacos的作用:

  1. 服务注册与发现:Nacos提供了服务注册中心的功能,能够帮助微服务架构中的各个服务实例进行注册与发现。通过Nacos,可以轻松地实现服务间的通信,无需手动维护服务地址列表。

  2. 配置管理:Nacos提供了统一的配置管理平台,可以集中管理所有微服务在不同环境下的配置信息。通过Nacos,可以实现动态更新配置,避免重启服务来生效配置修改,方便快捷。

  3. 服务健康检测:Nacos支持服务实例进行健康检查,能够主动感知服务是否可用。同时,Nacos可以实现通知已经注册的客户端。为开发者提供了便利,可以实时感知并做出相应的处理。

  4. 动态路由与负载均衡:Nacos可以作为动态路由的组件,通过实时更新服务实例的状态和配置信息,实现负载均衡和流量控制等功能。提高了服务的稳定性和性能。

  5. 事件驱动编程:Nacos基于事件驱动的机制,当服务实例发生变更时(如上线、下线、配置修改等),Nacos可以实时通知已经注册的客户端。为开发者提供了便利,可以实时感知并做出相应的处理。

Nacos的原理:

  1. 服务注册:当一个服务启动时,它会将自己的元数据 (如IP地址、端口、健康状态等) 发送给Nacos注册中心,并且与注册中心建立长连接。这样,注册中心就知道每个服务的存在和相关信息。

  2. 服务发现:其他需要调用某个服务的服务或者客户端可以通过向Nacos注册中心发送查询请求来获取目标服务的实力列表。注册中心维护了所有以注册服务实例的元数据,并在需要时对外提供查询接口。

  3. 心跳与健康检查:注册中心会定期向各个服务实例发送心跳请求,用以检测服务是否在线。如果某个服务实例在一定时间内没有发送心跳,注册中心会将其标记为不可用,并且从服务列表中移除。

  4. 负载均衡:当服务调用方从注册中心获取到多个可用的服务实例是,它可以使用负载均衡算来选择合适的服务实例进行调用,从而实现负载均衡。

  5. 服务变更通知:当有服务上线、下线或者发生配置变更时,注册中心会向订阅该服务的客户端发送变更通知。客户端收到通知后,可以更新本地服务列表,从而及时感知服务的变化。

流程图:

流程如下:

  • 服务启动时就会注册自己的服务信息(服务名、IP、端口)到注册中心

  • 调用者可以从注册中心订阅想要的服务,获取服务对应的实例列表(1个服务可能多实例部署)

  • 调用者自己对实例列表负载均衡,挑选一个实例

  • 调用者向该实例发起远程调用

当服务提供者的实例宕机或者启动新实例时,调用者如何得知呢?

  • 服务提供者会定期向注册中心发送请求,报告自己的健康状态(心跳请求)

  • 当注册中心长时间收不到提供者的心跳时,会认为该实例宕机,将其从服务的实例列表中剔除

  • 当服务有新实例启动时,会发送注册服务请求,其信息会被记录在注册中心的服务实例列表

  • 当注册中心服务列表变更时,会主动通知微服务,更新本地服务列表

标签:服务,中心,--,Nacos,列表,实例,概述,注册
From: https://www.cnblogs.com/chengzhenghai/p/18459311

相关文章

  • 【多媒体应用设计师】第一章 多媒体技术基础
    根据考试大纲要求,在多媒体技术基础知识方面,要求考生掌握以下知识点:1.1媒体的定义与分类1.1.1媒体的定义与分类1.1.2多媒体的定义、内涵与特点1.1.3多媒体技术的应用●考点分析国际电话报咨询委员会将媒体分为5类:(1)感觉媒体:指的是直接作用于人的感觉器官,使人产生直......
  • 微信公众号推送每日天气(Java版)
    准备工作公众号必须经过企业认证,个人公众号的无法使用这是获取到微信公众号的appId、secret网址贴这儿了:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index还有测试的模板申请每日一言,我这里使用的彩虹屁,地址:https://www.tianapi.com/......
  • 工程企业为什么一定要用工程项目管理软件?蓝燕云经验分享!
    施工企业一定会遇到哪些问题?工人怠工、材料浪费、数据造假、工期拖延、质量问题、安全隐患等。这些问题正在悄然侵蚀建施工业的经济效益。每一个环节的失控都可能导致巨大的经济损失,还可能损害企业的声誉。面对日益复杂的工程管理环境,如何有效应对这些挑战,成为了建筑企业必须认......
  • ui自动化测试框架po框架(版本2)
    新建项目po 在编写如下包: 内容:importos#定义项目路径base_path=os.path.dirname(os.path.dirname(__file__))#项目所在的路径#data路径data_path=os.path.join(base_path,'data')#pages路径pages_path=os.path.join(base_path,'public','pages'......
  • 某普SSLVPN 任意文件读取
    0x01产品描述:‌   迪普科技的VPN产品是一款面向广域互联应用场景的专业安全网关产品,集成了IPSec、SSL、L2TP、GRE等多种VPN技术,支持国密算法,实现分支机构、移动办公人员的统一安全接入,提供内部业务跨互联网的安全访问。‌该产品支持基于用户、应用的安全策略,提供攻击防......
  • Java在图片上写字生成新图片的代码实现
    引言在图像处理领域,有时我们需要在图片上添加文字,以生成带有特定信息的新图片。Java作为一种功能强大的编程语言,提供了多种库和工具来实现这一需求。本文将详细介绍如何使用Java在图片上写字,并生成一张新的图片。准备工作在开始编写代码之前,我们需要确保已经安装了Java开......
  • jinja2+elementUI前端不显示样式问题
    新接的项目要用前端实现一些功能,以前只使用flask框架+jinja2模板语言,没专门学过前端,刚接触着实有点措手不及.问题:我在html中引入了elementUI以及vue.js,copy样式到页面了,为什么样式没起作用?因为复制的样式需要放到div标签里才行!......
  • go自动初始化结构体成员指针
    typeStustruct{Id*intId1*int32Id2*int64B*bool}func(this*TestBeanSuite)Test010_IniStru(){varstu=&Stu{}baseutils.InitStruNilPtrField(stu)golog.Info(stu)}2024-10-1116:49:16.190[INFO]{"Id&quo......
  • 浅谈js中的部分方法
    hello!大家好,我是一名正在乱学前端技术的大学生,欢迎大家关注我,一起探讨前端技术,如有讲错的地方麻烦提出指正。letstr1="hello"//注:头尾有一个空格console.log(str1.charAt(1))//h,charAt返回字符串下标字符console.log(str1.replace('el','a'))//halo,rep......
  • manim边做边学--有向图
    有向图和上一篇介绍的无向图基本一样,唯一的区别在于有向图的边有方向性,它表示的是顶点之间的单向或依赖关系。有向图G一般表示为:G=<V,E>。和无向图一样,V是顶点集合,E是边的集合。不同之处在于,无向图是用小括号(V,E),有向图用尖括号<V,E>。在有向图中,边是有方向的,所以,从顶点A到顶......