spring cloud alibaba之Nacos架构安装及配置

Nacos 架构

基本架构及概念

nacos_arch.jpg

服务 (Service)

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

服务注册中心 (Service Registry)

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

服务元数据 (Service Metadata)

服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规则、安全策略等描述服务的数据

服务提供方 (Service Provider)

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

服务消费方 (Service Consumer)

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

配置 (Configuration)

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

配置管理 (Configuration Management)

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

名字服务 (Naming Service)

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

配置服务 (Configuration Service)

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

更多概念…

逻辑架构及其组件介绍

nacos-logic.jpg

  • 服务管理:实现服务CRUD,域名CRUD,服务健康状态检查,服务权重管理等功能
  • 配置管理:实现配置管CRUD,版本管理,灰度管理,监听管理,推送轨迹,聚合数据等功能
  • 元数据管理:提供元数据CURD 和打标能力
  • 插件机制:实现三个模块可分可合能力,实现扩展点SPI机制
  • 事件机制:实现异步化事件通知,sdk数据变化异步通知等逻辑
  • 日志模块:管理日志分类,日志级别,日志可移植性(尤其避免冲突),日志格式,异常码+帮助文档
  • 回调机制:sdk通知数据,通过统一的模式回调用户处理。接口和数据结构需要具备可扩展性
  • 寻址模式:解决ip,域名,nameserver、广播等多种寻址模式,需要可扩展
  • 推送通道:解决server与存储、server间、server与sdk间推送性能问题
  • 容量管理:管理每个租户,分组下的容量,防止存储被写爆,影响服务可用性
  • 流量管理:按照租户,分组等多个维度对请求频率,长链接个数,报文大小,请求流控进行控制
  • 缓存机制:容灾目录,本地缓存,server缓存机制。容灾目录使用需要工具
  • 启动模式:按照单机模式,配置模式,服务模式,dns模式,或者all模式,启动不同的程序+UI
  • 一致性协议:解决不同数据,不同一致性要求情况下,不同一致性机制
  • 存储模块:解决数据持久化、非持久化存储,解决数据分片问题
  • Nameserver:解决namespace到clusterid的路由问题,解决用户环境与nacos物理环境映射问题
  • CMDB:解决元数据存储,与三方cmdb系统对接问题,解决应用,人,资源关系
  • Metrics:暴露标准metrics数据,方便与三方监控系统打通
  • Trace:暴露标准trace,方便与SLA系统打通,日志白平化,推送轨迹等能力,并且可以和计量计费系统打通
  • 接入管理:相当于阿里云开通服务,分配身份、容量、权限过程
  • 用户管理:解决用户管理,登录,sso等问题
  • 权限管理:解决身份识别,访问控制,角色管理等问题
  • 审计系统:扩展接口方便与不同公司审计系统打通
  • 通知系统:核心数据变更,或者操作,方便通过SMS系统打通,通知到对应人数据变更
  • OpenAPI:暴露标准Rest风格HTTP接口,简单易用,方便多语言集成
  • Console:易用控制台,做服务管理、配置管理等操作
  • SDK:多语言sdk
  • Agent:dns-f类似模式,或者与mesh等方案集成
  • CLI:命令行对产品进行轻量化管理,像git一样好用

领域模型

数据模型

Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP。

nacos_data_model

服务领域模型

nacos_naming_data_model

配置领域模型

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

nacos_config_er

类视图

Nacos-SDK 类视图

服务部分待续

nacos_sdk_class_relation

构建物、部署及启动模式

undefined

两种交付工件

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

两种启动模式

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

免费的公有云服务模式

除了您自己部署和启动 Nacos 服务之外,在云计算时代,Nacos 也支持公有云模式,在阿里云公有云的商业产品(如ACM, EDAS) 中会提供 Nacos 的免费的公有云服务。我们也欢迎和支持其他的公有云提供商提供 Nacos 的公有云服务。



Nacos 快速开始

这个快速开始手册是帮忙您快速在您的电脑上,下载、安装并使用 Nacos。

0.版本选择

您可以在Nacos的release notes博客中找到每个版本支持的功能的介绍,当前推荐的稳定版本为1.3.1。

1.预备环境准备

Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+;下载 & 配置
  3. Maven 3.2.x+;下载 & 配置

2.下载源码或者安装包

你可以通过源码和发行包两种方式来获取 Nacos。

从 Github 上下载源码方式

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  
ls -al distribution/target/

// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin

下载编译后压缩包方式

您可以从 最新稳定版本 下载 nacos-server-$version.zip 包。

  unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
  cd nacos/bin

3.启动服务器

Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone

Windows

启动命令:

cmd startup.cmd

或者双击startup.cmd运行文件。

4.服务注册&发现和配置管理

服务注册

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'

服务发现

curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'

发布配置

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"

获取配置

curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

5.关闭服务器

Linux/Unix/Mac

sh shutdown.sh

Windows

cmd shutdown.cmd

或者双击shutdown.cmd运行文件。



Nacos 系统参数介绍

Nacos Server

对于Server端来说,一般是设置在{nacos.home}/conf/application.properties里,如果参数名后标注了(-D)的,则表示是 JVM 的参数,需要在{nacos.home}/bin/startup.sh里进行相应的设置。例如像设置 nacos.home 的值,可以在{nacos.home}/bin/startup.sh进行如下设置:

JAVA_OPT="${JAVA_OPT} -Dnacos.home=${BASE_DIR}"

全局参数

参数名含义可选值默认值支持版本
nacos.home(-D)Nacos的根目录目录路径Nacos安装的目录>= 0.1.0
nacos.standalone(-D)是否在单机模式true/falsefalse>= 0.1.0
nacos.functionMode(-D)启动模式,支持只启动某一个模块,不设置时所有模块都会启动config/naming/空>= 0.9.0
nacos.inetutils.prefer-hostname-over-ipcluster.conf里是否应该填hostnametrue/falsefalse>= 0.3.0
nacos.inetutils.ip-address本机IP,该参数设置后,将会使用这个IP去cluster.conf里进行匹配,请确保这个IP的值在cluster.conf里是存在的本机IPnull>= 0.3.0
nacos.security.ignore.urls控制台鉴权跳过的接口需要跳过控制台鉴权的接口列表>= 0.9.0

Naming模块

参数名含义可选值默认值支持版本
nacos.naming.data.warmup是否在Server启动时进行数据预热true/falsefalse>= 1.0.2
nacos.naming.expireInstance是否自动摘除临时实例true/falsetrue>= 1.0.2
nacos.naming.distro.taskDispatchPeriod同步任务生成的周期,单位为毫秒正整数200>= 1.0.2
nacos.naming.distro.batchSyncKeyCount同步任务每批的key的数目正整数1000>= 1.0.2
nacos.naming.distro.syncRetryDelay同步任务失败的重试间隔,单位为毫秒正整数5000>= 1.0.2

除了上面列到的在application.properties里配置的属性,还有一些可以在运行时调用接口来进行调节,这些参数都在Open API里的查看系统当前数据指标这个API里有声明。

Config模块

参数名含义可选值默认值支持版本
db.num数据库数目正整数0>= 0.1.0
db.url.0第一个数据库的URL字符串>= 0.1.0
db.url.1第二个数据库的URL字符串>= 0.1.0
db.user数据库连接的用户名字符串>= 0.1.0
db.password数据库连接的密码字符串>= 0.1.0

CMDB模块

参数名含义可选值默认值支持版本
nacos.cmdb.loadDataAtStart是否打开CMDBtrue/falsefalse>= 0.7.0
nacos.cmdb.dumpTaskInterval全量dump的间隔,单位为秒正整数3600>= 0.7.0
nacos.cmdb.eventTaskInterval变更事件的拉取间隔,单位为秒正整数10>= 0.7.0
nacos.cmdb.labelTaskInterval标签集合的拉取间隔,单位为秒正整数300>= 0.7.0

Nacos Java Client

客户端的参数分为两种,一种是通过-D参数进行指定的配置,一种是构造客户端时,通过Properties对象指定的配置,以下没有带-D标注的都是通过Properties注入的配置。

通用参数

参数名含义可选值默认值支持版本
endpoint连接Nacos Server指定的连接点,可以参考文档域名>= 0.1.0
endpointPort连接Nacos Server指定的连接点端口,可以参考文档合法端口号>= 0.1.0
namespace命名空间的ID命名空间的IDconfig模块为空,naming模块为public>= 0.8.0
serverAddrNacos Server的地址列表,这个值的优先级比endpoint高ip:port,ip:port,…>= 0.1.0
nacos.logging.path(-D)客户端日志的目录目录路径用户根目录>= 0.1.0

Naming客户端

参数名含义可选值默认值支持版本
namingLoadCacheAtStart启动时是否优先读取本地缓存true/falsefalse>= 1.0.0
namingClientBeatThreadCount客户端心跳的线程池大小正整数机器的CPU数的一半>= 1.0.0
namingPollingThreadCount客户端定时轮询数据更新的线程池大小正整数机器的CPU数的一半>= 1.0.0
com.alibaba.nacos.naming.cache.dir(-D)客户端缓存目录目录路径{user.home}/nacos/naming>= 1.0.0
com.alibaba.nacos.naming.log.level(-D)Naming客户端的日志级别info,error,warn等info>= 1.0.0
com.alibaba.nacos.client.naming.tls.enable(-D)是否打开HTTPStrue/falsefalse>= 1.0.0

Config客户端

参数名含义可选值默认值支持版本
configLongPollTimeout(config.long-poll.timeout 1.0.1版本)长轮询的超时时间,单位为毫秒正整数30000>= 1.0.2
configRetryTime(config.retry.time 1.0.1版本)长轮询任务重试时间,单位为毫秒正整数2000>= 1.0.2
maxRetry长轮询的重试次数正整数3>= 1.0.2
enableRemoteSyncConfig监听器首次添加时拉取远端配置布尔值false>= 1.0.2
com.alibaba.nacos.config.log.level(-D)Config客户端的日志级别info,error,warn等info>= 1.0.0
JM.SNAPSHOT.PATH(-D)客户端缓存目录目录路径{user.home}/nacos/config>= 1.0.0
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring CloudSpring Cloud Alibaba都是基于Spring Framework的开源框架,用于构建分布式系统和微服务架构。它们都提供了一系列的组件和工具来简化微服务开发和管理。 Spring Cloud是一个由Pivotal团队维护的项目,它集成了Netflix开源的一些组件,如Eureka作为注册中心、Ribbon作为负载均衡器、Feign作为服务调用工具等。同时,Spring Cloud还提供了其他功能,如Config Server用于动态管理配置、Gateway用于构建API网关等。 而Spring Cloud Alibaba则是阿里巴巴开源的项目,它在Spring Cloud的基础上进行了扩展和定制,增加了一些阿里巴巴自己的组件和工具。比如,它使用Nacos作为注册中心和配置中心,使用Sentinel作为熔断降级工具。 总的来说,Spring CloudSpring Cloud Alibaba都是用于构建微服务架构的框架,它们的区别在于Spring Cloud集成了Netflix组件,而Spring Cloud Alibaba集成了阿里巴巴的一些组件。根据具体的需求和技术栈选择使用哪个框架可以更好地满足开发和管理微服务的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Spring Cloud AlibabaSpring Cloud的区别](https://blog.csdn.net/weixin_43888891/article/details/126653270)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

keep-go-on

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值