Nacos详解(作用功能及原理架构)

Nacos详解(作用功能及原理架构)-mikechen

Nacos介绍

Nacos是Dynamic Naming and Configuration Service的首字母简称,是一个更易于构建云原生应用的动态服务注册与发现、配置管理和服务管理平台。

Nacos详解(作用功能及原理架构)-mikechen

Nacos是SpringCloudAlibaba架构中最重要的组件。

 

Nacos作用功能

Nacos 主要解决服务发现、配置和管理微服务,Nacos的核心功能,主要包含如下4大功能:

1.服务发现和服务健康监测

Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求,Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。

 

2.动态配置服务

动态配置消除了配置变更时重新部署应用和服务的需要,配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

Nacos 还提供了一个控制台管理所有的服务和应用的配置,以及包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性。

 

3.动态 DNS 服务

动态 DNS 服务支持权重路由,更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。

 

4.服务及其元数据管理

Nacos 能让从微服务平台建设的视角管理数据中心的所有服务及元数据,包括:管理服务的描述、生命周期、服务的健康状态、服务的流量管理、路由及安全策略、以及最首要的 metrics 统计数据。

 

Nacos基本架构

Nacos整体架构如下图所示:

Nacos详解(作用功能及原理架构)-mikechen

1.服务注册中心 (Service Registry)

服务注册是在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息,并在注册中心形成一张服务的清单。

服务注册中心需要以心跳的方式去监测清单中的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。

 

2.服务元数据 (Service Metadata)

服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据。

 

3.服务提供方 (Service Provider):是指提供可复用和可调用服务的应用方。

 

4.服务消费方 (Service Consumer):是指会发起对某个服务调用的应用方。

 

5.配置 (Configuration)

在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。

 

6.配置管理 (Configuration Management)

在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。

 

7.名字服务 (Naming Service)

提供分布式系统中所有对象(Object)、实体(Entity)的“名字”到关联的元数据之间的映射管理服务,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock Owner/Status Info, DNS Domain Name -> IP List, 服务发现和 DNS 就是名字服务的2大场景。

 

8.配置服务 (Configuration Service)

在服务或者应用运行过程中,提供动态配置或者元数据以及配置管理的服务提供者。

 

Nacos逻辑架构

Nacos详解(作用功能及原理架构)-mikechen

 

Nacos注册中心原理

Nacos详解(作用功能及原理架构)-mikechen

服务注册是在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息,并在注册中心形成一张服务的清单。

服务注册中心需要以心跳的方式去监测清单中的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。

服务注册的策略的是每5秒向nacos server发送一次心跳,心跳带上了服务名,服务ip,服务端口等信息,同时 nacos server也会向client 主动发起健康检查,支持tcp/http检查。

如果15秒内无心跳且健康检查失败则认为实例不健康,如果30秒内健康检查失败则剔除实例。

 

Nacos配置中心原理

Nacos详解(作用功能及原理架构)-mikechen

Nacos 客户端会循环请求服务端变更的数据,并且超时时间设置为30s,当配置发生变化时,请求的响应会立即返回,否则会一直等到 29.5s+ 之后再返回响应。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法