Nacos

Nacos

Nacos主要有两个功能,第一个是作为注册中心,第二个是作为配置中心。

1、注册中心
对于注册中心而言,又可以分为两个部分:

  • 服务的注册:对于服务提供者而言,需要将服务的基本信息提交到Nacos
  • 服务的发现:对于服务调用者而言,需要向Nacos获取服务器实例列表

最后需要留意一下客户端到服务器端的心跳续约过程:对于临时实例,客户端每隔5s会给服务端发送一个http请求,上报健康状态,也就是续约,一旦这个请求间隔超过15s,nacos服务端会认为这个实例不健康,超过30s会移除这个服务。

2、配置中心
(1)首先是怎么读取配置,需要了解程序的启动过程,也就是程序各配置文件之间的加载先后顺序:bootstrap.yml文件最先加载,程序拿到Nacos的服务器地址,读取到Nacos配置中心的配置文件,然后与本地的application.yml文件整合。
(2)配置热更新,对于springcloud而言就三步:

  • 引入Nacos配置中心的依赖
 <groupId>com.alibaba.cloud</groupId>
 <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  • 使用@Value注解,${id}
 	@Value("${spring.dataId.versionId}")
    private String versionId;
  • 成员变量所在的类上,加上@RefreshScope注解
    此时当程序启动后,去更新Nacos文件的配置文件的相关Id的值,然后发布,不用重启服务就可以在程序中获取到最新的值了。
    (3)Nacos配置持久化到MySQL数据库
    这个我使用的是docker安装的Nacos,简单来说也是三部曲:

  • 拉取Nacos镜像到本地,然后启动服务 docker run,在宿主机中建立自己的本地目录存放Nacos的配置文件,使用cp命令将Nacos的配置文件复制到你创建的目录。

  • 使用docker rm -f 命令删除启动的Nacos服务,重新执行服务,启动时需要将前面创建的本地目录和Nccos的配置文件目录做挂载。

  • 最后是修改本地目录中conf下的application.properties文件,最后docker restart 重启服务
    具体的教程百度一万一个告诉你怎么做。
    (4)客户端感知服务端配置变化

  • 1.x版本使用长轮询,客户端主动发起一个请求到服务端,如果服务端没有配置变化,则会挂起该请求,直到服务端有变化或请求超时才会将请求返回,并且再次发起请求。

  • 2.x版本使用gRPC协议,服务端主动维护长连接,保持服务器端和客户端之间的心跳机制,以确保连接的时效性,避免客户端和服务端频繁建立和关闭连接所带来的性能开销。

你可能感兴趣的:(SpringClould,spring,cloud,java)