1. 什么是Nacos

​ ​  ​      ​  Nacos是SpringCloud Alibaba的一个服务治理的一个重要组件,英文全称Dynamic Naming and Configuration Service,顾名思义就是动态命名和配置服务,它不仅提供服务的注册与发现,还提供统一的配置管理,同时它还对Ribbon负载均衡进行了集成,它取代了Eureka作为服务注册中心,取代了Config作为服务配置管理中心,同时他还提供了良好的Web操作界面,并且可以对微服务进行分组等管理,非常的好用以及轻便。

2. Nacos架构


 ​  ​      ​ Nacos的架构模式和Eureka的一样,都是C/S架构,分为客户端和服务端,其中客户端主要是我们的微服务,与微服务嵌套在一起,主要是可以将服务注册到服务端。而服务端主要是用来管理注册进来的微服务,类似于提供一个地方让客户端注册进来,服务端主要采用Java语言来编写,而客户端则不限制语言。

注意: Nacos还有一个特点就是:在CAP的原则遵循上,它可以做到在CP和AP上相互转换,但这并不代表它同时循了CAP三大原则,而是在CP和AP上作出选择,在默认情况下,Nacos遵循的是AP原则。

//使用以下指令可以作出修改
curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

3. Nacos服务注册中心原理

Nacos服务注册过程主要分为以下3个状态:注册前,注册中,注册后

注册前: 客户端,即我们的微服务启动时,会将服务的ip,端口等信息封装成一个instance实例对象,准备向Nacos服务端注册,在注册前,客户端会根据instance这个包含IP,端口等信息的实例对象封装成一个BeanInfo对象,并创建一个定时的心跳连接机制,每隔一段时间都会向Nacos服务端发送PUT请求,Nacos服务端在接收到心跳请求后,会检查当前服务列表是否有这个服务实例,如果有,则刷新该实例的心跳时间,如果没有的话,Nacos服务端开始创建实例。

注册中: 在Nacos服务端接收到心跳请求后,会使用Post请求将客户端相关的实例对象信息注册进Nacos服务端。在Nacos服务端接收到创建实例请求后,服务端会将客户端发过来的相关信息封装成一个instance对象,然后为这个实例对象创建一个服务,通常用我们的微服务名称来命名,一般来说一个服务下不单止一个实例,然后服务端将这个服务信息存储进服务端中一个叫ConcurrentHashMap的数组中,格式命名方式一般为:Map(namespace,Map(group::serviceName, Service))。服务创建完成后,会创建一个定时任务来检查这个服务下的实例是否健康,如果心跳机制超过15秒,服务状态为不健康,超过30秒,这个实例直接被删除。

​  ​      ​ 服务创建后,开始将服务存储进服务列表,根据服务的实例进行划分,如:这个服务的namespace,group等等。

注册后: 在服务注册成功后,客户端会通过定时心跳任务来从服务端获取信息并存储进本地缓存,然后刷新该服务实例的心跳时间。服务端在接收到心跳后,会定时向客户端推送相关的数据给客户端,一般来说是10秒推送一次。

详细原理可参考: https://blog.csdn.net/qq_34700865/article/details/118760601

4. Nacos服务配置中心原理


Nacos配置中心运行流程主要分为:

1.当配置人员在Nacos里修改配置时,Nacos会将配置信息更新并存储到相应的数据库里(Nacos里有内置的数据库Derby,但在实际的情况下,大多数都采用MySQL来存储配置信息,而且在目前看来,Nacos只支持MySQL作为信息配置中心的配置存储库)。

2.当我们的服务注册到Nacos时,其实是有一个定时心跳任务的,它每10秒会向Nacos发送心跳信息并获取相对应的配置数据。

3.当客户端获取到服务端的配置信息时,会比较配置信息的MD5数据,当获取到的MD5数据与客户端本地缓存的数据不匹配时,客户端则会重新从服务端来获取新的配置信息并将它缓存在客户端的本地缓存中。

Nacos服务注册与发现---Nacos简介以及原理相关推荐

  1. SpringCloud-Alibaba之Nacos服务注册和发现

    SpringCloud-Alibaba之Nacos服务注册和发现 在这之前我们需要在 windows 或者 linux - 搭建Nacos服务 https://nacos.io/zh-cn/docs/ ...

  2. 微服务学习之Nacos(服务注册与发现)

    微服务系列 1.Nacus 服务搭建及使用 2.Nacos 配置中心 3.Nacos 服务注册与发现之OpenFeign服务间调用 4.Spring Security & Oauth2 认证授 ...

  3. 服务注册与发现(Nacos)

    什么是Alibaba Nacos Nacos致力于解决微服务中的统一配置.服务注册与发现等问题.它提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现.服务配置.服务元数据及流量管理       ...

  4. 3.Spring Cloud Alibaba教程:Nacos服务注册与发现

    概要 官网地址:Nacos官网和帮助文档 Nacos安装:Linux安装Nacos1.3.1(还没安装的先看这篇文章安装) Nacos主要作用:服务注册与发现.配置管理 本篇主要介绍的是服务注册与发现 ...

  5. Nacos服务注册与发现源码(一)之gRPC协议的实例注册

    Nacos核心功能点 服务注册:Nacos Client会通过发送请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址.端口等信息.Nacos Server接收到注册请求 ...

  6. Nacos服务注册与发现的2种实现方法!

    作者 | 磊哥 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) Spring Cloud Alibaba 技术体系中的 Nacos,提供了两个重要 ...

  7. 本地服务注册不上nacos_服务注册与发现—Nacos

    Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您更敏捷和容易地构建.交付和管理微 ...

  8. Nacos服务注册与发现——服务发现

    1.概览 1.1.什么是服务发现 在微服务架构中,整个系统会按职责能力划分为多个服务,通过服务之间协作来实现业务目标.这样在我们的代码中免不了要进行服务间的远程调用,服务的消费方要调用服务的生产方,为 ...

  9. Nacos 服务注册与发现原理分析

    Nacos 另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服务是非常重要的,而在 Nacos 中服务更被称为他的一等公民. Nacos 支持几乎 ...

最新文章

  1. .Net Core 项目引用本地类库方式(二)
  2. 网络游戏,原罪和救赎
  3. 二级计算机excel以宏保存,Excel宏保存
  4. 风控的这些工作机会看起来挺没用
  5. JavaScript入门笔记
  6. 最大连续子序列和问题python_面试题42:连续子数组的最大和 python
  7. iphone mac地址是否随机_iPad 的 Mac 地址是否会随机更换,如何关闭呢
  8. hihoCoder-1000-A+B
  9. plc ge c语言编程,GE PLC编程软件快速入门手册.pdf
  10. 游戏中防止加速的一种方法
  11. selenium实现自动登录B站
  12. Kaka集群生产者消费者使用实例(二)
  13. car | 线性回归(三)——残差分析和异常点检验
  14. Android 绘制气泡
  15. 【T+】畅捷通T+自定义报表将所有月份发生数在同一张表上体现
  16. 基于asp.net742自驾游旅游服务网站的设计
  17. [iOS开发]Status Bar Style
  18. OpenCV图像处理学习二十,图像直方图均衡化原理与实现
  19. Android之TextView
  20. linux 运维工程师的前景怎么样?

热门文章

  1. Pygame 游戏开发 实战 1
  2. delete空间释放具体细节
  3. gradle-6.5-bin-zip网盘下载
  4. tiff/tfw, jpg/jpgw坐标文件的格式(6个参数)
  5. 数字游戏:艺术家如何用大数据展现艺术
  6. [附源码]计算机毕业设计springboot餐馆点餐管理系统
  7. 外国人最羡慕中国人什么?
  8. cn2an:中文数字与阿拉伯数字的相互转换
  9. java 输出字母图形_java打印字母菱形,怎么打!!!
  10. [UE][UE5]找资源的网站、好用的插件、找3D模型的网站