SpringCloud Nacos相关知识点

一 Nacos 的介绍

Nacos 是阿里巴巴2018年 7 月退出的一个开源项目,是一个更容易于构建云原生应用的动态服务注册与发现、配置管理和配置管理平台;(Nacos :纳克斯)

Nacos 致力于快速实现动态服务注册与发现、服务配置、服务元数据及流量管理;

Nacos 属于 Spring Cloud Alibaba 下的一个组件;

Nacos 约等于 Spring Cloud Eureka (注册中心) + Spring Cloud Config (配置中心)

Nacos官网:https://nacos.io/

1.1 Nacos服务端的目录

bin 目录 : 存放启动脚本和关闭脚本

conf 目录 :存放配置文件

target 目录 :里面存放一个jar ,这个jar里面存放这个整体的服务源码已经所需要的依赖,这是一个springboot程序

1.2 Nacos 运行环境部署

1、下载nacos最新的二进制压缩包;

下载地址:Releases · alibaba/nacos · GitHub

2、解压下载下来的nacos最新的二进制压缩包;

tar -zxvf nacos-server-1.3.1.tar.gz
cd nacos/bin

3、启动nacos server

./startup.sh -m standalone

注:单机环境必须带-m standalone参数启动,否则无法启动,不带参数启动的是集群环境;

4、启动日志:/usr/local/nacos/logs/start.out

5、访问:http://xxxxx:8848/nacos默认用户名密码:nacos/nacos

 二、Nacos注册中心

        

        和Dubbo 类似 ,微服务开发时 Controller 调用 Controller ,调用者是服务消费者 ,被调用者是服务提供者 ,服务消费者和服务提供者时相对概念,服务消费者也可以被另一个服务调用,那么此时的服务消费者也是一个服务提供者;在实际开发中,我们会把所有的服务都注册到nacos注册中心上,那么nacos去维护和管理我们的所有服务;

        通过添加一个starter 依赖:spring-cloud-starter-alibaba-nacos-discovery 它通过自动配置、注解以及SpringBoot 编程模式与Nacos 无缝集成,实现服务注册与发现,nacos经过双十一考验,可以在生成环境中作为大规模分布式系统的服务注册中心;

2.1 服务 EndPoint 端点

每一个采用 Spring-cloud-starter-alibaba-nacos-discovery 实现的服务都提供了一个EndPoint,EndPoint 的访问地址为 :

http://ip:port/actuator/nacosdiscovery

http://localhost:8120/actuator/nacosdiscovery

EndPoint 主要提供了两类信息:

1、subscribe:显示了当前有哪些服务订阅这;

2、NacosDiscoveryProperites:显示当前服务实例关于 Nacos 的基础配置 ;

2.2 Nacos 客户端缓存机制

新版本的改了

基本上大多数的 注册中心都是有缓存机制的,就是在服务器宕机后,也是也是可以进行远程调用访问的。

比如 zookeeper 、eureka 、都是有缓存的 Nacos 也是缓存

缓存的就是 也就是将ip+端口缓存到内存了

但是前提是必须要在调用一次之后才会有缓存,就会保存 discovery 项目 的ribbon包下NacosServer 里面的 metadata里面去

有了缓存就不用在访问注册中心了,这样减少注册中心的压力

jps 可以查看当前的 java服务进程

jps 可以查看当前的 java服务进程 已经服务包名

netstat -nlpt 查看端口信息

三、Nacos的配置中心

Nacos 提供用于存储配置和其他元数据功能,为分布式系统中的外部化配置提供服务器端和客户端支持,使用 Spring Cloud Alibaba Nacos Config 就可以在Nacos Server 集中管理 Spring Cloud 应用的外部数据配置 ;

Spring Cloud Alibaba Nacos Config 是在启动的boostrap 阶段,将配置加载到Spring 环境中;

Spring Cloud Alibaba Nacos Config 使用 DataId 和 GROUP 确定一个配置 ;

        在nacos的config启动时会他优先回去nacos中心去读取配置,所有需要在bootstrap文件去写,服务发现的地址和服务管理的地址都需要填写和依赖也都要添加,还有需要添加发现依赖的注解 ,它会将读到的配置存放到springboot的环境对象中,它和在本地写是一样的

读取application.propreites文件是通过的监听器ConfigFileApplicationListener,也是将读到的属性保存到环境对象中

        而BootstrapApplicationListener监听触发的事件是ApplicationEnvironmentPreparedEvent事件,这个事件其实和我们前面介绍监听application.properties的时候的监听器ConfigFileApplicationListener监听的是同一个事件。

        bootstrap是先把数据拿到只会在启动,如果application和bootstrap都有的属性,以application的为准因为会被覆盖,nacos宕机之后,客户端的缓存不会丢失,而apollo的缓存会有一定的过期时间,nacos修改配置之后,不需要重新加载服务,支持自动刷新。

1、在nacos服务端 创建配置文件信息

启动好Nacos 之后,创建配置信息时 Nacos 添加如下的配置 :

Data ID: nacos-config.properties (配置文件的名称,在发现配置时需要使用)

Group : DEFAULT_GROUP (分组 ,可以使用默认的 )

配置格式: Properties

配置内容:

user.name=zhangsan

user.age=18

DataId 是以.properties 为扩展名 (默认的文件扩展名方式就是.properties ) ;在运行时必现使用 boostrap.properties 配置文件配置 nacos server 地址 ,同时,spring.application.name 值必须与Nacos 中配置的 Data Id 匹配(除了.properties 或者 yaml 后缀);

DataId 默认使用 spring.application.name 配置跟文件扩展名结合(配置格式默认使用.properties ),GROUP 不配置默认使用 DEFAULT_GROUP ;

注意当你使用域名的方式访问Nacos时,spring.cloud.nacos.config.server-addr 配置的方式为 域名:port ,例如 Nacos的域名为nacos.power.com,监听的端口为80,则 spring.cloud.nacos.config.server-addr=nacos.power.com:80,注意80 端口不能省略;

boostrap.properties 文件介绍:

boostrap.properties 文件也是有 yaml的 格式

它是高于application.properties文件先加载的 ,但是如果俩个文件都相同的数据时,默认是以application.properties为准。

使用这个文件需要添加对应的依赖,大多是都是在起步依赖里已经集成了

俩个文件的区别 :

BootstrapApplicationListener监听触发的事件是ApplicationEnvironmentPreparedEvent事件,这个事件其实和我们前面介绍监听application.properties的时候的监听器ConfigFileApplicationListener监听的是同一个事件。

都是通过监听实现的,boostrap.properties会把文件内容直接读取到 环境对象中,bootstrap是先把数据拿到只会在启动。

四、Nacos配置中心动态刷新

Nacos Config Starter 默认为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听到服务端配置发生变化时会实时触发

org.springframework.cloud.context.refresh.ContextRefresher的refresh 方法;

可以通过配置 spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新;


注意 如果要刷新 controller 类 获取其他类中需要使用@RefreshScope //进行刷新的注解

Nacos的配置中心,可以进行动态刷新的使用@RefreshScope 注解实现的,但是要注意是无法动态刷新地址内容,比如MySQL的连接地址等等。这种是无法的动态刷新的

其他内容待完善,方便自己阅读。

.....

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值