什么是Nacos?

Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

Nacos可以做什么?

1、动态配置服务:支持以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。

2、服务发现及管理:支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现,同时提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,可以更容易地为服务实现断路器。

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

Nacos的特性一览

1、易于使用

动态配置管理、服务发现和动态的一站式解决方案

20多种开箱即用的以服务为中心的架构特性

基本符合生产要求的轻量级易用控制台

2、更适应云架构

无缝支持Kubernetes和Spring Cloud

在主流公共云上更容易部署和运行(例如阿里云和AWS)

多租户和多环境支持

3、生产等级

脱胎于历经阿里巴巴10年生产验证的内部产品

支持具有数百万服务的大规模场景

具备企业级SLA的开源产品

4、丰富的应用场景

支持限流、大促销预案和异地多活

直接支持或稍作扩展即可支持大量有用的互联网应用场景

流量调度和服务治理

Nacos架构

Nacos概念

  • 地域(Region):物理的数据中心,资源创建成功后不能更换
  • 可用区(Available Zone):同一地域内,电力和网络互相独立的物理区域。同一可用区内,实例的网络延迟较低。
  • 接入点(Endpoint):地域的某个服务的入口域名
  • 命名空间(Namespace):用于进行租户粒度隔离。不同的命名空间下,可以存在相同的Group或Data ID的配置。
  • 配置(Configuration):从代码中分离出来独立管理的变量、需要变更的参数等
  • 配置管理(Configuration Management):系统配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动。
  • 配置项(Configuration Item):一个具体的可配置的参数与其值域,通常以 param-key=param-value 的形式存在。
  • 配置集(Configuration Set):一组相关或者不相关的配置项的集合。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。
  • 配置集ID(Data ID):某个配置集的ID,是组织划分配置的维度之一,通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识,通常采用类 Java包的命名规则保证全局唯一性(此命名规则非强制)。
  • 配置分组(Group):一组配置集,是组织配置的维度之一,通过一个有意义的字符串对配置集进行分组,从而区分 Data ID 相同的配置集。创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP。
  • 配置快照(Configuration Snapshot):Nacos 的客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 Nacos Server 时,可以使用配置快照显示系统的整体容灾能力。
  • 服务(Service):通过预定义接口网络访问的提供给客户端的软件功能。
  • 服务名(Service Name):服务提供的标识,通过该标识可以唯一确定其指代的服务。
  • 服务注册中心(Service Registry):存储服务实例和服务负载均衡策略的数据库。
  • 服务元数据(Service Metadata):服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据
  • 服务提供方(Service Provider):是指提供可复用和可调用服务的应用方
  • 服务消费方(Service Consumer):是指会发起对某个服务调用的应用方
  • 服务发现(Service Discovery):在计算机网络上,对服务下的实例的地址和元数据进行探测,并以预先定义的接口提供给客户端进行查询。
  • 服务分组(Service Group):不同的服务可以归类到同一分组。
  • 名字服务(Naming Service):提供分布式系统中所有对象(Object)、实体(Entity)的“名字”到关联的元数据之间的映射管理服务
  • 配置服务(Configuration Service):在服务或者应用运行过程中,提供动态配置或者元数据以及配置管理的服务提供者。
  • 元数据(Metadata):Nacos数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略、鉴权配置、各种自定义标签 (label),从作用范围来看,分为服务级别的元信息、集群的元信息及实例的元信息。
  • 应用(Application):用于标识服务提供方的服务的属性。
  • 虚拟集群(Virtual Cluster):同一个服务下的所有服务实例组成一个默认集群,集群可以被进一步按需划分,划分的单位可以是虚拟集群。
  • 实例(Instance):提供一个或多个服务的具有可访问网络地址(IP:Port)的进程。
  • 权重(Weight):实例级别的配置,权重为浮点数,权重越大,分配给该实例的流量越大。
  • 健康检查(Health Check):以指定方式检查服务下挂载的实例的健康度,从而确认该实例是否能够提供服务。根据检查结果,实例会被判断是否健康,对服务发起解析请求时,不健康的实例不会返回给客户端。
  • 健康保护阈值(Protect Threshold):为防止因过多实例不健康导致流量全部流向健康的实例,继而造成流量压力把健康的实例压垮并形成雪崩效应,应将健康保护阈值定义未一个0~1之间的浮点数,当域名健康实例占总服务实例的比例小于该值时,无论实例是否健康,都会将这个实例返回给客户端,这样做虽然损失了一部分流量,但是保证了集群的剩余健康实例能够正常工作。

以上内容整理源自:Nacos官网

梳理好Nacos的架构及概念,接下来准备Nacos的环境,Nacos的环境安装非常简单,首先从 GitHub 上 checkout 源码,编译获取安装包,命令如下:

mvn -Prelease-nacos clean install -U

编译完成后

因为我使用的是Windows,所以取target下的nacos-server-0.8.0.zip包(当然也可以从Github上直接下载安装包),将其解压到任意目录下

注意:所解压目录的文件路径不能包含空格,例如:D:/Program Files/Nacos,否则在启动Nacos Server时,会提示错误:找不到或无法加载主类 Files/Nacos/bin/Files/Nacos/plugins/cmdb

解压后,进入bin目录,双击startup.cmd,此时,Nacos Server就开始启动了

在启动界面中,可以看到Nacos的版本、运行模式、端口号、进程号、Console等信息,其中Console:http://192.168.1.102:8848/nacos/index.html的地址就是Nacos的控制台,可以直接在浏览器访问:

Nacos控制台的默认账号密码为:nacos/nacos

登录后可以看到如下界面,在控制台可以进行配置和服务的管理

怎么样,是不是感觉很简单?

好了,Nacos就先介绍到这里,下一期将以一个完整的案例来介绍Nacos的用法和特性。

参考资料

Nacos系列:欢迎来到Nacos的世界!的更多相关文章

  1. Nacos系列:基于Nacos的配置中心

    前言 在看正文之前,我想请你回顾一下自己待过的公司都是怎么管理配置的,我想应该会有以下几种方式: 1.硬编码 没有什么配置不配置的,直接写在代码里面,比如使用常量类 优势:对开发友好,开发清楚地知道代 ...

  2. Nacos系列:基于Nacos的注册中心

    前言 所谓注册中心,其实是分布式架构演进过程中的产物,在系统中充当一个协调者的角色.但是,为什么需要这样一个协调者的角色呢?我们先来看一个例子,以便理解为什么分布式架构中需要有注册中心. 案例 小明和 ...

  3. Nacos系列(一):Nacos环境安装及Hello World示例

    现在微服务架构越来越火,微服务架构中比较重要的一项就是配置中心, Nacos是阿里巴巴的一个开源项目,它的其中一个功能就是可以作为配置中心,实现配置的动态变更.历史版本对比.配置回滚等功能. 更多的描 ...

  4. Nacos系列:Nacos的三种部署模式

    三种部署模式 Nacos支持三种部署模式 1.单机模式:可用于测试和单机使用,生产环境切忌使用单机模式(满足不了高可用) 2.集群模式:可用于生产环境,确保高可用 3.多集群模式:可用于多数据中心场景 ...

  5. Nacos系列:Nacos的Java SDK使用

    Maven依赖 Nacos提供完整的Java SDK,便于配置管理和服务发现及管理,以 Nacos-0.8.0 版本为例 添加Maven依赖: <dependency> <group ...

  6. Spring Cloud 系列之 Alibaba Nacos 注册中心(一)

    前言 从本章节开始,我们学习 Spring Cloud Alibaba 相关微服务组件. Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发 ...

  7. Spring Cloud 系列之 Alibaba Nacos 注册中心(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Alibaba Nacos 注册中心(一) 本篇文章讲解 Nacos 注册中心集群环境搭建. Nacos 集群环境搭建 ...

  8. Spring Cloud 系列之 Alibaba Nacos 配置中心

    Nacos 介绍 Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理.英文全称 Dynamic Naming and Configuration Service ...

  9. 保姆教程系列二、Nacos实现注册中心

    前言: 请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 上篇我们介绍到  保姆教程系列一.Linux搭建Nacos 注册中心原理 一.环境准备 Java版本:1.8+   (Linux ce ...

随机推荐

  1. java开发师笔试面试每日12题(1)

    1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设计 ...

  2. 模板基础model

    一.Django-model基础 1.1ORM 映射关系: 表名<---------->类名 字段<---------->属性 表记录<---------->类实例 ...

  3. 牛客网华为机试题之Python解法

    牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...

  4. BAT:文件中替换字符(保留空格和换行)

    @echo off rem CMD:"color --help" :: setting color:back white,content blue color f9 ::old s ...

  5. 为程序设置多语言界面——C#

    考虑到程序的国际化需求,需要为程序设置多语言界面. 1,新建一个资源文件,名字可以是对应界面+语言代码(MainForm.zh-CN).这样资源文件就会自动添加到对应界面下面. 2,更改界面属性Loc ...

  6. Docker构建JDK环境

    创建目录mkdir oracle-jdk 构建文件touch Dockerfile # Docker for jdk-8u181 FROM centos:7 MAINTAINER ggza " ...

  7. POJ2391 Ombrophobic Bovines

    Ombrophobic Bovines Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19359   Accepted: 4 ...

  8. 转:酷我音乐API

    酷我音乐API 本次分析的是酷我音乐API 歌曲搜索API:http://search.kuwo.cn/r.s?all={0}&ft=music&itemset=web_2013&am ...

  9. 利用Module模块把构建的神经网络跑起来

    训练一个神经网络往往只需要简单的几步: 准备训练数据 初始化模型的参数 模型向往计算与向后计算 更新模型参数 设置相关的checkpoint 如果上述的每个步骤都需要我们写Python的代码去一步步实 ...

  10. 9.视差特效、回弹动画、overScrollBy

    视差特效 * 应用场景: 微信朋友圈, QQ空间, 微博个人展示,向下拉出,松开回弹* 功能实现: > 1. 重写overScrollBy > 2. 松手之后执行动画, 类型估值器 .  ...