nacos--基础--1.3--理论--架构

2023-11-07

nacos–基础–1.3–理论–架构


1、基本架构及概念

在这里插入图片描述

1.1、服务 (Service)

  1. 是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。
  2. Nacos 支持主流的服务生态,举例如下
    1. Kubernetes Service
    2. gRPC | Dubbo RPC Service
    3. Spring Cloud RESTful Service。

1.2、服务注册中心 (Service Registry)

  1. 服务注册中心,它是服务实例及元数据的数据库。
  2. 服务实例在启动时注册到服务注册表,并在关闭时注销。
  3. 服务和路由器的客户端查询服务注册表以查找服务的可用实例。
  4. 服务注册中心可能会调用服务实例的健康检查 API 来验证它是否能够处理请求。

1.3、服务元数据 (Service Metadata)

  1. 服务端点(endpoints) 信息
  2. 服务标签 信息
  3. 服务版本号 信息
  4. 服务实例权重 信息
  5. 路由规则 信息
  6. 安全策略等 信息

1.4、服务提供方 (Service Provider)

是指提供可复用和可调用服务的应用方。

1.5、服务消费方 (Service Consumer)

是指会发起对某个服务调用的应用方。

1.6、配置 (Configuration)

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

1.7、配置管理 (Configuration Management)

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

1.8、名字服务 (Naming Service)

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

1.9、配置服务 (Configuration Service)

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

2、逻辑架构及其组件介绍

在这里插入图片描述

2.1、服务管理(功能列表)

  1. 服务CRUD
  2. 域名CRUD
  3. 服务健康状态检查
  4. 服务权重管理

2.2、配置管理(功能列表)

  1. 配置管理CRUD
  2. 版本管理
  3. 灰度管理
  4. 监听管理
  5. 推送轨迹
  6. 聚合数据

2.3、元数据管理

提供元数据CURD 和打标能力

2.4、插件机制

  1. 实现三个模块可分可合能力
  2. 实现扩展点SPI机制

2.5、事件机制

  1. 实现异步化事件通知
  2. 实现sdk数据变化异步通知

2.6、日志模块(功能列表)

  1. 日志分类
  2. 日志级别
  3. 日志可移植性(尤其避免冲突)
  4. 日志格式
  5. 异常码+帮助文档

2.7、回调机制

  1. sdk通知数据,通过统一的模式回调用户处理。
  2. 接口和数据结构需要具备可扩展性

2.8、寻址模式

  1. 解决ip,域名,nameserver、广播等多种寻址模式
  2. 需要可扩展

2.9、推送通道

解决server与存储、server间、server与sdk间推送性能问题

2.10、容量管理

管理每个租户,分组下的容量,防止存储被写爆,影响服务可用性

2.11、流量管理

按照租户,分组等多个维度对请求频率,长链接个数,报文大小,请求流控进行控制

2.12、缓存机制

  1. 容灾目录
    1. 使用需要工具
  2. 本地缓存
  3. server缓存机制

2.13、启动模式

按照单机模式,配置模式,服务模式,dns模式,或者all模式,启动不同的程序+UI

2.14、一致性协议

解决不同数据,不同一致性要求情况下,不同一致性机制

2.15、存储模块

解决数据持久化、非持久化存储,解决数据分片问题

2.16、Nameserver

  1. 解决namespace到clusterid的路由问题
  2. 解决用户环境与nacos物理环境映射问题

2.17、CMDB

  1. 解决元数据存储,与三方cmdb系统对接问题
  2. 解决应用,人,资源关系

2.18、Metrics

暴露标准metrics数据,方便与三方监控系统打通

2.19、Trace

暴露标准trace,方便与SLA系统打通,日志平白化,推送轨迹等能力,并且可以和计量计费系统打通

2.20、接入管理

相当于阿里云开通服务,分配身份、容量、权限过程

2.21、用户管理

解决用户管理,登录,sso等问题

2.22、权限管理

解决身份识别,访问控制,角色管理等问题

2.23、审计系统

扩展接口方便与不同公司审计系统打通

2.24、通知系统

核心数据变更,或者操作,方便通过SMS系统打通,通知到对应人数据变更

2.25、OpenAPI

  1. 暴露标准Rest风格HTTP接口
  2. 简单易用
  3. 方便多语言集成

2.26、Console

  1. 易用控制台
  2. 做服务管理、配置管理等操作

2.27、SDK

多语言sdk

2.28、Agent

dns-f类似模式,或者与mesh等方案集成

2.29、CLI

命令行对产品进行轻量化管理,像git一样好用

3、领域模型

3.1、数据模型

在这里插入图片描述

  1. Nacos 数据模型 Key 由三元组唯一确定
  2. Namespace:
    1. 默认值:public
    2. 这个就是配置环境,比如
      1. 开发环境
      2. 测试环境
  3. Group:
    1. 默认值:DEFAULT_GROUP。
    2. 这个就是配置项目,比如
      1. OA项目
  4. service/detaId:
    1. 具体的配置文件,比如 application.xml

3.2、服务领域模型

在这里插入图片描述

3.3、配置领域模型

围绕配置,主要有两个关联的实体
1. 一个是配置变更历史
2. 一个是服务标签(用于打标分类,方便索引),由 ID 关联。

在这里插入图片描述

4、类视图

4.1、Nacos-SDK 类视图

在这里插入图片描述

5、构建物、部署及启动模式

在这里插入图片描述

5.1、两种交付工件

  1. 支持 标准 Docker 镜像(TODO: 0.2版本开始支持) 的构建物。
  2. 支持 zip(tar.gz)压缩包 的构建物。

5.2、两种启动模式

  1. 支持将注册中心(Service Registry)与配置中心(Config Center) 在一个进程合并部署
  2. 支持将注册中心(Service Registry)与配置中心(Config Center) 分离部署

5.3、免费的公有云服务模式

Nacos 也支持公有云模式,在阿里云公有云的商业产品(如ACM,EDAS) 中会提供 Nacos 的免费的公有云服务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nacos--基础--1.3--理论--架构 的相关文章

随机推荐

  • 集群Linux各个节点的配置------IP地址

    启动主服务器HadoopMasterServer和HadoopSlaveServer1 HadoopSlaveServer2 三个都启动后等待登陆 使用root 账号登陆 密码使用安装系统时设定的那个 想使用Xshell连接操作的话 请参照
  • CTF Crypto简单题学习思路总结(持续更新)

    系列文章目录 本系列开篇文章 就没有链接了 文章目录 系列文章目录 前言 一 编码 解码 1 1 BrainFuck密码 ook 密码 1 2 URL编码 HTML实体编码 1 3 Unicode编码 XXencode编码 AAencode
  • 脚本方式本地仓库jar包批量导入maven私服

    脚本内容 将以下内容保存为mavenimport sh 放置于需要上传的目录下 可以是顶层目录 或者某个分包的目录 若私服已有待上传的包 则执行会被替换 bin bash copy and run this script to the ro
  • Python——for循环中如何设置跳过下一次循环

    是很笨的一个分享 但是确实让我少走了很多看起来很牛逼的弯路 当我心里产生这个好奇的时候搜到了一大堆高大上的回答 还是不配了 题目的背景的一个细节是检索字符串右边那一位 如果大于左边一位 需要将二者做差 然后右边那一位就直接跳过 for i
  • RabbitMQ优秀博文整理

    1 关于主流MQ的介绍 各MQ的优缺点 MQ的使用选举等 MQ消息队列详解 四大MQ的优缺点分析 从百草园杀到三味书屋 的博客 CSDN博客 几种消息队列的优缺点 2 RabbitMQ常见问题的整理 以及解决思路 图文并茂 比较详细 Rab
  • shell脚本执行sql文件及语句

    由于经常操作数据库 遇到频繁建表 加字段 索引 修改数据等问题 大多是操作多个数据库 sql文件或语句不固定 最后选择shell脚本来执行 eg 1 多库建相同的表 bin bash host 127 0 0 1 dbUser root d
  • STM32F7上移植NES游戏

    上面是我的微信和QQ群 欢迎新朋友的加入 说不上是原创 因为核心程序是别人的 我只是移植过来 让它适应我手上这个版本的库函数 一共是四个小游戏 我自己只会玩一个坦克大战和经典的超级玛丽 坦克大战截图 不知道是什么游戏 硬件平台 STM32F
  • 数据库查询内容制成新表group_concat报错“Row XXX was cut by group_concat”的解决

    MySql数据库查询时 使用group concat报错 Row XXX was cut by GROUP CONCAT 单独查询不会报错 当我要将查询的数据制作成新表时 会报这个错 网上查了下是因为group concat有个最大长度的限
  • 2014阿里巴巴9月15哈尔滨校园招聘笔试题及答案

    from http blog csdn net lingfengtengfei article details 12344711
  • 控制台输入python后报错

    解决方法 可以 进入到该目录 Anaconda3 Lib site packages pyreadline lineeditor history py文件的第82行 修改如下 for line in open filename r enco
  • Servlet文件上传实现进度条提示-实测+源码下载

    1 案例概述 本案例技术站 servlet jQuery实现 1 1 案例效果展示 1 2 案例说明 1 实现文件上传 2 实现文件上传时出现进度条提示 上传结束时进度条消失 3 通过监听和session共享的方式获取文件上传的实时信息 4
  • HashBasedTable用法实例

    import com google common collect HashBasedTable import com google common collect Table import java util Map import java
  • 安卓轮播图

    最近项目中改版 之前的轮播图实现不是很好 这次要改掉 之后就发现了一个完美的轮播图框架 框架地址 框架的使用很简单 步骤 1 依赖Banner dependencies compile com youth banner banner 1 4
  • 最长公共子序列以及最长公共子串

    前言 LCS定义 一个数列S 如果分别是另个或多个已知数列的子序列 且是所有匹配此条件中最长的 则称S是已知数列的最长公共子序列 举个例子 s序列 A B C B D A B t序列 B D C A B A 他们的最长公共子序列为 B C
  • 手机敲代码软件_适合编写C语言代码的编程软件有哪些?大学生赶紧行动起来...

    C语言基本上是大学计算机及其相关专业在大一上学期就会开的一门课程 但是很多学生就是在大一上学期期末的时候很着急 因为自己完全没有学好C语言 感觉一学期白学了 其实究其主要原因 还是因为你在上课认真听了 也做了课堂作业 但是却没有在课后好好的
  • 预见2020关键一年

    12月28日 以 预见2020 区块链关键一年 为主题的2019年第二届中国区块链产业经济年会在北京国际金融博物馆隆重举行 本次大会在中国移动通信联合会区块链专委会 中关村大数据产业联盟 中国电子商会区块链专委会的指导下 由全球领先的区块链
  • sc不为内部或外部命令

    tomcat 注册服务 sc config netman start auto sc 不为内部或外部命令 解决方法 用管理员权限打开cmd C Windows cmd exe
  • iframe设置cookie_惊艳面试官的 Cookie 介绍

    关注在看 以后更多干货分享在头条 Cookie 是什么 Cookie 是用户浏览器保存在本地的一小块数据 它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上 Cookie 主要用于以下三个方面 会话状态管理 如用户登录状态 购物
  • linux系统下“rwx“的概念及用法~

    我们知道 一个文件它的权限情况是怎样的 可以使用用 ls l 查看详细信息这样一条指令 但显示出来的 rwxrwxrwx 究竟是什么意思呢 就让我们来了解一下 r read 读 对文件查看该源文件内容 对目录有查看的权限 w white 写
  • nacos--基础--1.3--理论--架构

    nacos 基础 1 3 理论 架构 1 基本架构及概念 1 1 服务 Service 是指一个或一组软件功能 例如特定信息的检索或一组操作的执行 其目的是不同的客户端可以为不同的目的重用 例如通过跨进程的网络调用 Nacos 支持主流的服