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推送更新通知给客户端,客户端自动刷新配置。