Nacos最全详解(图文全面总结)

云计算 云原生
在Kubernetes环境中,Nacos可以与Kubernetes的服务发现机制集成,支持自动注册和发现Kubernetes中的服务。

Nacos

Nacos(Dynamic Naming and Configuration Service),是阿里开发的服务注册与发现、配置管理、和服务管理平台。

图片图片

Nacos主要解决以下问题:

1.服务注册与发现

服务注册:允许服务实例向Nacos注册中心注册自身的信息,包括:服务名称、IP地址、端口、健康检查..........等。

服务发现:服务消费者可以通过Nacos获取服务实例的信息,从而调用相应的服务。

2.动态配置管理

支持配置的动态管理,可以在应用运行时动态更新配置,而不需要重启应用。

3.多环境管理

支持不同环境,比如:开发、测试、生产.......的配置管理。

4.服务元数据管理

Nacos的服务及其元数据管理功能,能帮助简化微服务架构中的服务注册、发现、配置管理、和健康检查。

Nacos架构

Nacos架构,如下图所示:

图片图片

Nacos架构,主要会包含:服务注册中心、服务提供方、服务消费方...等等实现。

1.服务注册中心

服务注册中心,存储所有已注册服务的实例、及其元数据。

工作流程,大致如下:

1)服务注册

首先,服务提供方,将其实例注册到服务注册中心;

2)服务发现

其次,是服务发现,服务消费方通过查询服务注册中心,找到可用的服务实例。

3)健康检查

服务注册中心,可能会调用服务实例的健康检查API,确保实例能够处理请求。

2.服务

服务是指一组功能或操作,这些功能可以被不同的客户端重用。

服务的主要目的是:通过跨进程的网络调用来提供功能、或执行操作。

比如:

1)K8S服务(Kubernetes Service)

在Kubernetes环境中,Nacos可以与Kubernetes的服务发现机制集成,支持自动注册和发现Kubernetes中的服务。

2)RPC服务

比如:支持基于gRPC、或Dubbo的RPC服务调用,这些是常见的高效分布式服务框架。

3)SpringCloud服务(Spring Cloud RESTful Service)

与Spring Cloud集成,支持基于RESTful的服务调用、和管理。

3.服务提供

服务提供方:主要就是服务提供方去实现具体的服务逻辑,并将其暴露给其他、应用或服务调用。

4.服务消费方

服务消费方是指发起对服务调用的应用方,服务消费者通过服务发现机制找到服务提供方,并调用其提供的功能。

5.服务元数据

服务元数据:是指描述服务的附加信息,包括:服务端点、标签、版本号、权重、路由规则、安全策略.......等。

6.配置管理

配置管理:是指对系统中所有配置的编辑、存储、分发、变更管理。

比如:

  • 配置编辑:修改、和更新配置文件;
  • 配置存储:持久化存储配置数据,确保数据的可靠性;
  • 配置分发:将配置分发到相关的应用、或服务;
  • 版本管理:管理配置的版本历史,支持版本回滚;
  • 配置变更:记录配置变更历史、和操作。

Nacos原理

Nacos工作原理,如下图所示:

图片图片

1.服务注册与发现

首先,第一步:服务注册。

服务实例在启动时,通过Nacos Client,向Nacos Server发送注册请求,包括:服务名称、IP地址、端口、元数据........等。

Nacos Server,将服务实例信息存储在服务注册中心,并启动健康检查。

2.服务发现

服务消费者,通过Nacos Client向Nacos Server发送查询请求,获取指定服务的实例列表。

Nacos Server返回符合条件的服务实例列表,支持动态更新。

3.健康检查

Nacos Server,定期调用服务实例的健康检查API,检查服务实例的健康状态。

不健康的服务实例,会被从注册表中剔除,以确保服务的可用性。

4.配置管理

配置文件,通过Nacos Console、或API创建。

并存储在Nacos Server中,配置数据包括:数据ID、分组、标签、配置内容.......等。

5.配置发布与动态刷新

更新配置后,用户通过Nacos Console、或API发布配置,发布后的配置数据会更新在Nacos Server中。

应用程序通过Nacos Client订阅配置变更,当配置发生变化时。

Nacos Server推送更新通知给客户端,客户端自动刷新配置。

责任编辑:武晓燕 来源: mikechen的互联网架构
相关推荐

2024-09-04 09:43:36

2024-08-29 10:23:42

2024-05-31 13:34:57

2024-08-08 13:01:53

2024-08-12 16:09:31

2024-08-13 15:07:20

2024-11-06 09:54:58

SpringJava开发

2024-09-26 13:33:12

2024-08-07 14:56:00

Nginx反向代理配置

2024-07-12 08:42:58

Redis高性能架构

2024-11-06 12:29:02

2024-09-14 11:36:02

2016-01-28 14:41:06

CC++编码

2016-01-15 09:38:49

2024-10-31 11:52:05

缓存预热系统

2024-08-30 10:29:21

2017-03-29 09:08:25

Spring笔记

2024-04-26 00:02:00

云技术公有云私有云

2024-05-27 00:04:00

2024-06-13 10:16:29

点赞
收藏

51CTO技术栈公众号