前言

一、什么是Nacos?

官方描述:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

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

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

愿景:Nacos通过提供简单易用的动态服务发现、服务配置、服务共享与管理等服务基础设施,帮助用户在云原生时代,在私有云、混合云或者公有云等所有云环境中,更好的构建、交付、管理自己的微服务平台,更快的复用和组合业务服务,更快的交付商业创新的价值,从而为用户赢得市场。

二、功能有哪些?

动态配置服务

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

服务发现及管理

动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。

动态DNS服务

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

三、特性有哪些?

易于使用

动态配置管理、服务发现和动态的一站式解决方案20多种开箱即用的以服务为中心的架构特性基本符合生产要求的轻量级

更适应云架构

无缝支持Kubernetes和Spring Cloud在主流公共云上更容易部署和运行(例如阿里云和AWS)多租户和多环境支持

生产等级

脱胎于历经阿里巴巴10年生产验证的内部产品支持具有数百万服务的大规模场景具备企业级SLA的开源产品

丰富的应用场景

支持限流、大促销预案和异地多活直接支持或稍作扩展即可支持大量有用的互联网应用场景流量调度和服务治理

四、Nacos地图

特性大图:要从功能特性,非功能特性,全面介绍我们要解的问题域的特性诉求

架构大图:通过清晰架构,让您快速进入Nacos世界

业务大图:利用当前特性可以支持的业务场景,及其最佳实践

生态大图:系统梳理Nacos和主流技术生态的关系

优势大图:展示Nacos核心竞争力

战略大图:要从战略到战术层面讲Nacos的宏观优势

五、Nacos生态图


如Nacos全景图所示,Nacos无缝支持一些主流的开源生态,例如

Spring Cloud

Apache Dubbo and Dubbo Mesh

Kubernetes and CNCF。

使用Nacos简化服务发现、配置管理、服务治理及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。

关于如何在这些生态中使用 Nacos,请参考官方文档:什么是Nacos

六、Nacos概念

可以通过如下官方文档的描述,先行了解Nacos的概念:

https://nacos.io/zh-cn/docs/concepts.html

PS: 以上概念非常重要,需要认真看一下,否则会对 Nacos 理解产生很多阻碍

下面我抽出几个单独讲一下:

命名空间:常用于生产环境隔离,比如dev/test/beta/prod等

配置:应用的配置文件,常用 yml/json 格式存储,一个应用服务可以配置多个配置文件,需要设置扩展,配置ID唯一,常用表现形式=应用名/应用名+Profile(举个栗子:mall-test.yml)

配置管理:可以对配置文件进行管理,配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动

配置项:key/value形式的配置内容,应用application.yml/bootstrap.yml等文件的内容项

服务:服务名称=应用名称,服务分组=一组服务的聚合,服务集群=同分组同应用名多个实例服务聚合,服务权重=加权,权重越大,流量越大

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

七、Nacos架构

https://nacos.io/zh-cn/docs/architecture.html

以上为官方对于Nacos架构的解释,同学们可以认真看一下,下面我简单讲一下常用到的一些组件和配置。

数据存储

Nacos的数据存储可以分为两种,一种是内存,一种是DB,常用的都是存储在MySQL中,将数据持久化,避免数据丢失;官方也提供了默认的初始化SQL,需要在 Github 上面去下载,地址:初始化SQL。

控制台

Nacos也提供了一个便于用户使用的后台页面,通过链接 http://localhost:8848/naocs 就能访问,密码也是 nacos/nacos,控制台提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。控制台样例

服务管理

服务管理包括了对服务的CRUD、负载转发策略、健康检查等,包含了一整套服务注册、发现的管理。

服务配置

服务配置包括了对配置的CRUD、版本控制、监听管理、推送轨迹、数据聚合等功能。

用户、角色、权限

和普通的系统一样,Nacos 提供了一套用户-角色-权限的基础系统,解决了注册-登陆-权限控制的问题。

两种启动模式

Nacos支持将注册中心(Service Registry)与配置中心(Config Center) 在一个进程合并部署或者将2者分离部署的两种模式。

八、Nacos部署

https://nacos.io/zh-cn/docs/quick-start.html

本地模式

基础的配置,可以根据以上链接中官方文档描述来实现,这里将详细解释几个注意事项。

版本:当前最新稳定版v1.4.2,尽量用最新版本,官方会不断修复问题,新版的支持会更好,尽量暂时不用v2.0.1版本,这个版本还有待验证,尽量避免踩坑,稳定以后再尝试

环境:同学一定要注意官方对于环境的要求,64位jdk1.8+、64位linux/windows、maven3.2+

安装包:如果没有特殊情况,尽量使用官方编译后的压缩包,避免下载官方Git后自己打包出现的问题,需要二次开发或者自定义配置的除外

配置:启动配置,官方默认启动使用了内嵌数据库的形式,这里作者推荐使用MySQL外部数据库方式,如果使用MySQL方式,那么需要修改 conf/application.properties 配置文件,如下:

###If use MySQL as datasource:
spring.datasource.platform=mysql###Count of DB:
db.num=1`### Connect URL of DB:
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
db.user.0=xxx
db.password.0=xxx`

这时候,如果不知道 Nacos MySQL 初始化脚本的同学,可以通过 初始化SQL 下载脚本,或者通过 conf/nacos-mysql.sql 配置脚本。

如果机器的内存不够充足的,启动前一定要修改 bin/startup.sh 的启动配置,如下:

#===========================================================================================
#JVM Configuration
#===========================================================================================
if [[ "${MODE}" == "standalone" ]]; thenJAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
elseif [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; thenJAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"fiJAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
fi`

PS:启动命令(-m standalone 代表着单机模式运行,如果不加这个参数则代表使用集群模式运行)

Docker模式

Docker和普通模式差不多,也是需要设置配置文件和启动参数,具体的配置和启动方式,我放在了Github的实例项目中,有需求的同学可以看一下,如下:

https://github.com/YClimb/docker-compose/tree/main/nacos
默认使用 standalone-mysql-5.7.yaml 配置来启动Nacos,详细描述见以上链接项目。

管理后台

服务启动以后,如果是本地或者外网服务器,就可以通过http://IP:8848/nacos访问控制台,账号密码:nacos/nacos 。

九、权限及运维

通过以上实例,一个基础的Nacos配置就完成了,如果我们还需要Nacos的权限配置和运维相关操作,那么可以继续往下看;

权限配置

首先,需要查看Nacos的系统参数介绍:Nacos系统参数介绍,看完以后,了解conf/application.properties参数含义;

然后,可以开始配置权限:鉴权,通过官方文档的描述,可以修改配置完成鉴权的开启,需要注意的是,对于不同版本来说,开启服务身份识别功能不太一样,这里需要同学认真查看,尽量用最新稳定版本,否则版本问题的坑可能在不经意间就会遇到。

运维问题

上面所有讲到的部署都是单机版本,如果有同学需要集群版本,可以查看以下官方文档:

https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
对于集群版本来说,默认是通过 [ip/域名 -> nginx -> 实例] 的方式实现的,这里有几个问题需要注意:

环境:64位Linux、64位JDK1.8+、Maven3.2+、3个节点及以上(重要,否则无法选举成功)

安装包:推荐使用安装包模式,tar.gz,这里需要注意,集群版本和单机版本不一样,官方推荐的集群版本是1.3.0,一定要看好,否则会报错

集群配置:配置文件conf/cluster.conf,配置3+节点

数据源:使用MySQL数据库

启动:sh startup.sh启动即可,默认使用外置数据源

域名:通过域名来使用时,不可设置压缩gzip模式,否则应用服务获取配置时会有乱码问题;

总结

我这边整理了一份Spring相关资料文档、Spring系列全家桶、Java的系统化资料:(包括Java核心知识点、面试专题和21年最新的互联网真题、电子书等)有需要的朋友可以关注公众号【程序媛小琬】即可获取。

三分钟带你了解Nacos:架构及部署相关推荐

  1. power designer数据流图_鲲云公开课 | 三分钟带你了解数据流架构

    目前,市场上的芯片主要包括指令集架构和数据流架构两种实现方式.指令集架构主要包括X86架构.ARM架构.精简指令集运算RISC-V开源架构,以及SIMD架构.总体来说,四者都属于传统的通用指令集架构. ...

  2. 三分钟带你读懂 BERT

    本文为 AI 研习社编译的技术博客,原标题 : BERT Technology introduced in 3-minutes 作者 | Suleiman Khan, Ph.D. 翻译 | 胡瑛皓.s ...

  3. mysql和oracle冲突吗_三分钟带你分清MySQL 和Oracle之间的误区

    原标题:三分钟带你分清MySQL 和Oracle之间的误区 来自:华为云开发者社区 摘要:MySQL和Oracle,别再傻傻分不清. MySQL 和Oracle 在开发中的使用是随处可见的,那就简单去 ...

  4. 三分钟带你看懂prototype原型——ES6进阶

    三分钟带你看懂prototype原型--ES6进阶 1. prototype 定义 2. new 构造函数 3. 存储 4. prototype 作用 1. prototype 定义 在JS中的类的实 ...

  5. 三分钟带你弄懂slot插槽——vue进阶

    文章目录 三分钟带你弄懂slot插槽--vue进阶 一.概述 程序员之死 什么是 slot插槽? 2.6.0 版本中的 slot 二.具名插槽 例子 效果图 代码 三.小惊喜 三分钟带你弄懂slot插 ...

  6. 三分钟带你看懂HDMI接口的PCB设计

    三分钟带你看懂HDMI接口的PCB设计 本文主要讲解的是HDMI的设计,包括作用和运用的总结,希望大家看了以后能轻松的应对各种HDMI方案的PCB设计. 一.什么是HDMI? 高清晰度多媒体接口(英文 ...

  7. 建网站的最简单方法(三分钟带后台)

    建网站的最简单方法(三分钟带后台) 准备材料 服务器或者本地环境 安装过程 准备材料 织梦二次开发模板或者Ecshop二次开发模板等(我以织梦为例讲解) 如果是本地需要下载ComsenzEXP或者Wa ...

  8. 三分钟带你弄懂GFS(Google File System)

    提示:预计阅读时间三分钟,该文章仅对GFS做了一的简略介绍,细节方面建议阅读原文. 文章目录 前言 一.GFS是什么? 1.1 简单介绍 1.2 我们为什么需要阅读GFS的论文? 1.3 GFS论文对 ...

  9. 三分钟带你了解不一样的场效应管

    目前市场上的场效应管主要分为两种,但不论是哪种,场效应管都具有功耗低噪声小,而且不会出现二次击穿的特点,这让其成为替代晶体管的最佳产品.随着场效应管应用面积的扩大,对场效应管的选择和检查也成为了设计者 ...

最新文章

  1. 为什么有的人还不到三十岁,就对工作失去了兴趣呢?
  2. 错误./hello: error while loading shared libraries: libQtGui.so.4: cannot open shared object file:
  3. Tomcat 申请证书配置https
  4. php load dynamic library,PHP startup: Unable to load dynamic library错误的错误
  5. VC与Matlab混合编程的快速实现(3-1)
  6. 易优CMS精美简洁作文范文网站模板源码
  7. Linux(CentOS 5.4 Linux)服务器配置之DHCP服务器配置应用
  8. [导入]C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式.zip(9.73 MB)...
  9. 编译OpenJDK12:链接freelib时提示 LNK4044,无法识别的选项
  10. 前置指纹会逐步替代后置指纹
  11. Linux文件打包压缩详解
  12. PreparedStatement类详解以及案例
  13. 单片机---HLK-W801并口驱动ST7789
  14. 使用video.js遇到的坑。VIDEOJS: WARN: Player “player3“ is already initialised. Options will not be applied.
  15. 阿里云设置登录掩码错误无法登录
  16. 命令行 修复系统_让我们修复旧的命令行
  17. 模式识别的一些基本概念
  18. 社区电脑计算机培训即将结束,电脑培训感言(2页)-原创力文档
  19. 云呐|智能化运维平台,信息化系统智能运维平台
  20. DHCP的防御机制——DHCP Snooping(DHCP监听)

热门文章

  1. python课堂笔记之django-day01(2)
  2. 如何看待学者用鸟屎做实验发论文,讽刺石墨烯领域论文灌水?
  3. 戴尔外星人系列原厂预装系统重建恢复分区重新构建F12|SupportAssist OS Recovery恢复功能恢复出厂设置
  4. 外星人Alienware Aurora R7 win10原厂系统 带F12 SupportAssist OS Recovery恢复功能
  5. 后渗透——内网转发之借助WinRAR软件用命令行打包压缩网站源码
  6. 2021-12-1 set 、multiset 深度探索
  7. 微型计算机不是ecu,ecu的map是什么意思
  8. E203 蜂鸟 RISC-V处理器代码阅读笔记 之指令预取模块2(指令分支预测) e203_ifu_litebpu.v.v
  9. java下freemarker2.3.28+aspose实现生成word文档生成、word转pdf转换
  10. SAP 标准附件下载