当前位置: 首页 > 图灵资讯 > 技术篇> Nacos 基础篇:Nacos简介、基本概念、基本架构、Standalone单机搭建部署

Nacos 基础篇:Nacos简介、基本概念、基本架构、Standalone单机搭建部署

来源:图灵教育
时间:2024-01-03 13:21:00

Nacos是什么?

Nacos:(Dynamic) Naming and Configuration Service,动态服务发现和配置服务是一个动态服务发现、配置管理和服务管理平台,更容易构建云本地应用。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 为您快速实现动态服务发现、服务配置、服务元数据和流量管理提供了一组简单易用的特性集。

Nacos 帮助您更快捷、更容易地构建、交付和管理微服务平台。 Nacos 构建以“服务”为中心的现代应用架构 (如微服务范式、云原生范式) 服务基础设施。

服务(Service)是 Nacos 世界一流公民。Nacos 支持几乎所有主流类型“服务”的发现、配置和管理:Kubernetes Service、gRPC & Dubbo RPC Service、Spring Cloud RESTful Service。

Nacos 将配置从应用中分离出来,统一管理,优雅地解决了动态变化、持久性、运维成本等问题。

应用本身既不需要添加管理配置界面,也不需要实现配置的持久性,更不用说引入“定期任务”来降低运维成本了。Nacos 提供的配置管理功能收集了所有与配置相关的逻辑,并提供了简单易用的 SDK,使应用程序的配置非常方便 Nacos 管理起来。

核心:配置管理、服务发现,即配置中心、服务注册中心。Nacos Nacosos的关键特征包括:服务发现和服务健康监测 支持基于 DNS 和基于 RPC 服务发现。

Nacos 对服务提供实时健康检查,防止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、健康检查用户自定义)。

动态配置服务动态配置服务可以让您以集中、外部、动态的方式管理所有环境的应用配置和服务配置。

在配置变更过程中,动态配置消除了重新部署应用和服务的需要,使配置管理更加高效和敏捷。

集中配置管理使无状态服务更容易实现,使服务更容易按需灵活扩展。

动态 DNS 服务动态 DNS 服务支持重量路由,使您更容易实现数据中心内网中间层负载平衡、更灵活的路由策略、流量控制和简单的DNS分析服务。动态DNS服务也可以让您更容易地实现它 DNS 基于协议的服务发现可以帮助您消除耦合到制造商的私人服务发现 API 上的风险。

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

总结:使用 Nacos 简化服务发现、配置管理、服务治理和管理解决方案,使微服务更容易发现、管理、共享和组合。

基本概念配置服务 (Configuration Service)在服务或应用运行过程中,提供动态配置或元数据和配置管理的服务提供商。

Namespace命名空间,隔离租户粒度配置。同样的命名空间可以存在于不同的命名空间中 Group 或 Data ID 的配置。Namespace 常见的场景之一是区分和隔离不同的环境配置,如开发和测试环境和生产环境的资源(如配置和服务)隔离。默认public。

Configuration Item配置项。具体的可配置参数及其值域通常是 param-key=param-value 形式存在。例如,我们经常配置系统的日志输出水平(logLevel=WARN|INFO|ERROR) 是配置项。

Configuration Set配置集。一组相关或不相关的配置项的集合称为配置集。在系统中,配置文件通常是配置集。

Data ID配置集ID,Data ID 通常用于组织划分系统的配置集。一个系统或应用程序可以包含多个配置集,每个配置集都可以被有意义的名称识别。

Group配置分组,区分 Data ID 相同的配置集。默认值 DEFAULT_GROUP 。配置分组的常见场景:不同的应用程序或组件使用相同的配置类型,如 database_url 配置和 MQ_topic 配置。

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

Service服务通过预定义接口为客户端提供网络访问软件功能。

Servicename服务名称,服务提供的标识,只能通过标识来确定其指定的服务。

Service Registry服务注册中心,存储服务实例、服务元数据和服务负荷平衡策略数据库。服务实例在启动时注册到服务注册表,并在关闭时注销。服务和路由器的客户端查询服务注册表,以查找服务的可用实例。服务注册中心可以调用服务实例进行健康检查 API 验证它是否能处理请求。

Service Discovery服务发现,在计算机网络上,(通常使用服务名)检测服务下实例的地址和元数据,并向客户端提供预定义接口查询。

Metadata元信息、Nacos数据(如配置和服务)描述信息,如服务版本、权重、灾难容忍策略、负载平衡策略、识别配置、各种自定义标签 (label),从作用范围来看,分为服务级元信息、集群元信息和实例元信息。服务元数据是指包括服务端点数据(endpoints)、描述服务的数据,如服务标签、服务版本号、服务实例权重、路由规则、安全策略等。

Application应用程序,服务属性,用于识别服务提供商。

Service Group服务分组,不同的服务可以分为相同的分组。

Virtual Claster虚拟集群,在同一服务下的所有服务实例组成默认集群, 集群可以根据需要进一步划分,划分的单位可以是虚拟集群。

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

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

Health Check健康检查,以指定方式检查服务下挂载的实例 (Instance) 从而确认实例的健康状况 (Instance) 是否可以提供服务。根据检查结果,实例 (Instance) 它将被判定为健康或不健康。在分析服务请求时,不健康的例子 (Instance) 不会返回给客户端。

Protect Threshold健康保护阈值,以防止太多的例子 (Instance) 不健康导致流量全部流向健康实例 (Instance) ,然后导致流量压力和健康实例 (Instance) 应将健康保护阈值定义为压垮并形成雪崩效应 0 到 1 浮点数之间。域名健康实例数 (Instance) 占总服务实例数 (Instance) 当比例小于该值时,无论实例如何 (Instance) 这个例子是否健康将是一个例子 (Instance) 返回给客户端。虽然这样做失去了部分流量,但它确保了集群中剩余的健康实例 (Instance) 能正常工作。

基本架构

在这里插入图片描述

介绍逻辑架构及其组件

在这里插入图片描述

  • OpenAPI:HTTP接口暴露标准Rest风格,使用方便,多语言集成方便
  • Console:易用控制台,做服务管理、配置管理等操作
  • SDK:多语言sdk
  • Agent:dns-f类似模式,或与mesh等方案集成
  • CLI:命令行轻量化产品管理,和git一样好用
领域模型数据模型

Nacos 数据模型 Key 由三元组唯一确定, Namespace默认为空串,公共命名空间(public),Group默认是 DEFAULT_GROUP。在这里插入图片描述

服务模型

在这里插入图片描述

配置领域模型

围绕配置,主要有两个相关实体,一个是配置变更历史,另一个是服务标签(用于标记分类,方便索引) ID 关联。在这里插入图片描述

下载

在tags中找到下载链接的版本插入图片描述“>”

目录结构

在这里插入图片描述

配置

在standalone单机模式下,需要更改bin目录下的startup配置文件windows修改.bat文件,linux修改.sh文件在这里插入图片描述找到MODE,将MODE修改为standalone,set MODE="standalone"在这里插入图片描述Nacos支持多个数据库,默认为Mysql,在conf目录下有相应的Mysql脚本,mysql-schema.sql执行这个就可以了。在这里插入图片描述导入mysql后,编辑aplication配置文件,配置mysql的信息

db.url.0=jdbc:mysql://192.168.0.110:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user.0=rootdb.password.0=root!@#123

在这里插入图片描述

启动

windows 环境下 双击startup进入bin目录.cmd文件在这里插入图片描述在这里插入图片描述Linux 通过命令在环境中启动

./startup.sh