分享

Nacos概述

 印度阿三17 2020-11-27

1.1      Nacos是什么

Nacos是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施,致力于微服务的发现、管理和信息配置,能帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理,从而更敏捷、更容易的构建、交付和管理微服务平台。Nacos支持几乎所有主流类型(诸如:Kubernetes Service、gRPC & Dubbo RPC Service、SpringCloud RESTful Service)的服务的发现、配置和管理。其关键特性有:

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

Nacos支持基于DNS和基于RPC的服务发现。服务提供者使用原生SDK、OpenAPI、或一个独立的Agent TODO注册Service后,服务消费者可以使用DNS TODO或HTTP&API查找和发现服务。

Nacos提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos支持传输层(PING或TCP)和应用层(如:HTTP、MySQL、用户自定义)的健康检查。对于复杂的云环境和网络拓扑环境中(如:VPC、边缘网络等)服务的健康检查,Nacos提供了agent上报模式和服务端主动检测2种健康检查模式。Nacos还提供了统一的健康检查仪表盘,帮忙用户根据健康状态管理服务的可用性及流量。

2)动态配置服务

动态配置服务可以让你以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置,消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。

配置中心化管理让实现无状态服务变得更加简单,让服务按需弹性扩展变得更容易。

Nacos提供了一个简洁易用的UI(控制台样例 Demo)帮助你管理所有的服务和应用的配置。Nacos还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。

3)动态DNS服务

动态DNS服务支持权重路由,让你更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让你更容易地实现以 DNS 协议为基础的服务发现,以帮助你消除耦合到厂商私有服务发现API上的风险。

Nacos 提供了一些简单的DNS APIs TODO 帮助你管理服务的关联域名和可用的 IP:PORT 列表。

4)服务及其元数据管理

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

1.2      Nacos全景图

 

1.3      Nacos基础概念

1)地域(Region)

物理的数据中心,资源创建成功后不能更换;

2)可用区(Available Zone)

同一地域内,电力和网络互相独立的物理区域,同一可用区内,实例的网络延迟较低;

3)接入点(Endpoint)

地域的某个服务的入口域名;

 

4)命名空间(Namespace)

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的Group或 Data ID的配置。Namespace的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如:配置、服务)隔离等;

 

5)配置(Configuration)

在系统开发过程中,开发者通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如:WAR、JAR等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成。配置变更是调整系统运行时的行为的有效手段。

Ø  配置管理(Configuration Management)

系统配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动。

Ø  配置项(Configuration Item)

一个具体的可配置的参数与其值域,通常以 param-key=param-value形式存在,例如:我们常配置的系统日志输出基本(logLevel=INFO|WARN|ERROR)就是一个配置项。

Ø  配置集(Configuration Set)

一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含老系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。

Ø  配置集ID(Data ID)

Nacos中的某个配置集的ID。配置集ID是组织划分配置的维度之一。Data ID通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID通常采用类Java 包(如:com.taobao.tc.refund.log.level)的命名规则保证全局唯一性,此命名规则非强制。

 

Ø  配置分组(Group)

Nacos中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如:Buy或Trace)对配置集进行分组,从而区分Data ID相同的配置集。当您在Nacos上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如:database_url配置和MQ_topic配置。

 

Ø  配置快照(Configuration Snapshot)

Nacos的客户端SDK会在本地生成配置的快照。当客户端无法连接到Nacos Server时,可以使用配置快照显示系统的整体容灾能力。配置快照类似于 Git 的本地 Commit,也类似于缓存,会在适当的时机更新,但是并没有缓存过期(expiration)的概念。

 

6)服务(Service)

通过预定义接口网络访问的提供给客户端的软件功能。

7)服务名(Service Name)

服务提供的标识,通过该标识可以唯一确定其指代的服务。

8)服务注册中(Service Registry)

存储服务实例和服务负载均衡策略的数据库。

9)服务发现(Service Discovery)

在计算机网络上,(通常使用服务名)对服务下的实例的地址和元数据进行探测,并以预定义的接口提供给客户端进行查询。

10)元信息(Metadata)

Nacos数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略、鉴权配置、各种自定义标签(label),从作用范围来看,分为服务级别的元信息、集群的元信息及实例的元信息。

11)应用(Application)

英语标识服务提供方的服务的属性。

12)服务分组(Service Group)

不同的服务可以归档到同一分组。

13)虚拟集群(Virtual Cluster)

同一服务下的所有服务实例组成一个默认集群,集群可以被进一步按需求划分,划分的单位可以是虚拟集群。

14)实例(Instance)

提供一个或多个服务的具有可访问网络地址(IP:Port)的进程。

15)权重(weight)

实例级别的配置。权重为浮点数。权重越大,分配给该实例的流量越大。

16)健康检查(Health Check)

以制定方式检查服务下挂载的实例(Instance)的健康度,从而确认该实例(Instance)是否能提供服务。根据检查结果,实例(Instance)会被判断为健康或不健康。对服务发起解析请求时,不健康的实例(Instance)不会返回给客户端。

17)健康保护阈值(Protect Threshold)

为了防止因过多实例(Instance)不健康导致流量全部流向健康实例(Instance),继而造成流量压力把健康实例压垮并形成雪崩效应,应将健康保护阈值定义为一个0到1之间的浮点数。当域名健康实例(Instance)占总服务实例的比例小于改值,无论实例是否健康,都会讲这个实例返回给客户端。这样做虽然损失了一部分流量,但保证了集群的剩余健康实例能正常工作。


来源:https://www./content-4-765451.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多