前言

本系列是从头开始进行学习Nacos的相关知识,从相关概念到业务开发等等。本篇是第二篇,主要了解下Nacos的核心组成

1 Nacos基础架构

本篇是结合官方文档,进行自我总结的一篇文章,如果想了解全部的Nacos概念和架构:https://nacos.io/zh-cn/docs/concepts.html

1.1 Nacos基本架构和概念

nacos 开启mysql存储 nacos存储结构_nacos


Nacos服务发现分为客户端(消费者)和服务端

客户端(消费者):

启动时,从服务端读取指定服务名称的实例列表,缓存到本地。每隔10秒向服务端短轮询一次服务的实例列表。

服务端:

通过心跳检测,发现服务提供者出现心跳超时,push消息到消费者,(消费者会基于udp协议建立一个监听,一旦接收到服务端传来的数据,就会更新本地缓存)。

1.2 数据模型

了解一个系统的核心组成,能帮助更好的入门和使用该系统

Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP。

nacos 开启mysql存储 nacos存储结构_分布式_02

Namespace:(环境隔离)

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。默认为public,没有指定命名空间时都会默认拉取到该命名下

Group:(区域隔离)

据业务需求,对不同的服务以及配置进行分组,通过不同的字符串名(分组名)来表示不同的分组,Nacos中 如果未显示的指明分组名,那么就会默认的划分在DEFAULT_GROUP分组之中!

Service/DataId:(个体隔离)

Data ID在Nacos中,我们可以理解为就是一个Spring Cloud应用的配置文件名,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性

1.Group+DataId组合在当前命名空间下是唯一的,即统一分组下,不会出现多个相同DataId的配置

2.不同的Namespace和Group间服务是隔离的,即服务注册到不同的分组时,无法使用OpenFeign指定服务名负载调用

3.Namespace+Group+DataId组合是唯一的,即不同命名空间下可有相同分组以及相同DataId,但同一个命名空间下Group与DataId则是唯一的

1.3 服务领域模型

nacos 开启mysql存储 nacos存储结构_nacos_03

Nacos服务领域模型主要分为实例、集群、服务。

服务级别

  • 健康检查开关
  • 健康检查开关
  • 元数据
  • 路由机制
  • 保护阈值等设置

集群级别

  • 健康检查模式
  • 元数据
  • 步机制

实例级别

  • ip
  • 端口
  • 权重
  • 健康检查状态
  • 下线状态
  • 元数据
  • 响应时间