浅谈Nacos

目录

总览

一、Nacos基本应用

1.Nacos安装

1.1从 Github 上下载源码方式

1.2下载编译后压缩包方式

2.Nacos基本使用

3.Nacos中核心概念

二、Nacos注册中心原理分析

服务注册中心需要具备的能力

1.服务注册原理

2.选举算法

三、Nacos配置中心原理分析


官网地址:https://nacos.io/

总览

一、Nacos基本应用

Nacos提供了统一配置管理、服务发现与注册。

1.Nacos安装

1.1从 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

1.2下载编译后压缩包方式

地址:Releases · alibaba/nacos · GitHub

启动服务(Linux/Unix/Mac)

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

sh startup.sh -m standalone

数据存储

1.使用嵌入式Derby数据库进行数据存储

2.外部数据库(目前仅支持MySQL)

集群模式:

Nacos支持三种部署模式

2.Nacos基本使用

Github:GitHub - alibaba/spring-cloud-alibaba: Spring Cloud Alibaba provides a one-stop solution for application development for the distributed solutions of Alibaba middleware.

注册中心

配置中心:

多配置情况

# 基础配置
spring.application.name=nacos-multi-config
spring.cloud.nacos.config.file-extension=yaml
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=ouYangGroup
spring.cloud.nacos.config.namespace=28dacdf7-263f-40af-9d31-592529746f6e
# Data ID 自动生成规则 ${prefix}-${spring.profiles.active}.${file-extension}
 
# 多配置加载 Data ID
# 使用默认的 DEFAULT_GROUP,不支持自动刷新
spring.cloud.nacos.config.ext-config[0].data-id=nacos-multi-config-discovery.yaml
 
# 不再默认的组,不支持自动刷新
spring.cloud.nacos.config.ext-config[1].data-id=nacos-multi-config-log.yaml
spring.cloud.nacos.config.ext-config[1].group=ouYangGroup
 
# 不再默认的组,手动启动自动刷新
spring.cloud.nacos.config.ext-config[2].data-id=nacos-multi-config-db.yaml
spring.cloud.nacos.config.ext-config[2].group=ouYangGroup
spring.cloud.nacos.config.ext-config[2].refresh=true
 
#为了更加清晰的在多个应用间配置共享Data ID
#配置支持共享的DataId
spring.cloud.nacos.config.shared-configs[0].dataid=common.yaml
#配置支持共享的Group,缺省默认DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].group=COMMON_GROUP
#配置dataid在变化是是否自动更新,缺省默认false
spring.cloud.nacos.config.shared-configs[0].refresh=true

配置优先级

Spring Cloud Alibaba Nacos Config

目前提供了三种配置能力从Nacos 拉取相关的配置。

A: 通过spring.cloud.nacos.config.shared-configs[0].dataid的方式支持多个共享Data Id 的配置

B: 通过spring.cloud.nacos.config.ext-config[0].data-id的方式支持多个扩展Data Id 的配置

C: 通过内部相关规则${prefix}-${spring.profiles.active}.${file-extension}自动生成相关的Data Id配置

当三种方式共同使用时,他们的一个优先级关系是:A < B < C,先读取C,再读取B,最后读取A,后加载的文件会覆盖先加载的文件

3.Nacos中核心概念

Nacos 概念

二、Nacos注册中心原理分析

服务注册中心需要具备的能力

1.服务提供者把自己的协议地址注册到Nacos server
2.服务消费者需要从Nacos Server上去查询服务提供者的地址(根据服务名称)
3.Nacos Server需要感知到服务提供者的上下线的变化
4.服务消费者需要动态感知到Nacos Server端服务地址的变化

1.服务注册原理

2.实例类型

临时节点(默认)→ AP模型→ Distro协议 → 健康检查模式:客户端心跳上报Nacos实例健康状态,默认间隔5秒,Nacos在15秒内未收到该实例的心跳,则会设置为不健康状态,超过30秒则将实例删除。

持久化节点→  CP模型 → Raft选举:Raft → 健康检查方式:服务端检测,Nacos只会将其健康状态设置为不健康,但并不会对将其从服务端删除。

CAP模型

CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
        一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
       可用性(A):保证每个请求不管成功或者失败都有响应。
       分区容忍性(P):系统中任意信息的丢失或失败不会影响系统的继续运作。

BASE理论

BASE理论是对CAP理论的延伸,思想是即使无法做到强一致性(CAP的一致性就是强一致性),但可以采用适当的采取弱一致性,即最终一致性。

BASE是指基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventual Consistency)。

深入了解参考:CAP和BASE理论-阿里云开发者社区

三、Nacos配置中心原理分析

Nacos采用的是Pull模式,并且采用了一种长轮询机制。客户端采用长轮询的方式定时的发起Pull请求,去检查服务端配置信息是否发生了变更,如果发生了变更,那么客户端会根据变更的数据获得最新的配置。

长轮询:客户端发起轮询请求后,服务端如果有配置发生变更,就直接返回。

  1. 如果客户端发起Pull请求后,发现服务端的配置和客户端的配置是保持一致的,那么服务端会“Hold”住这个请求。(服务端拿到这个连接后在指定的时间段内不会返回结果,直到这段时间内的配置发生变化)
  2. 一旦配置发生了变化,服务端会把原来“Hold”住的请求进行返回。

Nacos服务端收到请求后,会检查配置是否发生了变更,如果没有,那么设置一个定时任务,延期29.5秒执行。同时并且把当前的客户端长轮询连接加入到allSubs队列。 这时候有两种方式触发该连接结果的返回:

第一种:等待29.5秒(长连接保持的时间)后触发自动检查机制,这时候不管配置有无发生变化,都会把结果返回给客户端。
第二种:在29.5秒内的任意一个时刻,通过Nacos控制台或者API的方式对配置进行了修改,那么触发一个事件机制,监听到该事件的任务会遍历allSubs队列,找到发生变更的配置项对应的ClientLongPolling任务,将变更的数据通过该任务中的连接进行返回,即完成了一次推送操作。

声明:文章部分图片为引用,如有侵权,请联系作者及时删除

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值