【转】 SpringCloudAlibaba--04——nacos

【转】 SpringCloudAlibaba--04——nacos

参考地址:蚂蚁课堂

* 分布式配置中心产生的背景

我们的注册中心,说白了就是把我们服务的ip+端口+接口名称,就我们请求的服务接口,给放在了注册中心。我们的Nacos 是注册和 配置 中心

我们服务的访问接口的ip+端口号可能会经常变的,那我们去访问的代码也要变,非常麻烦,所以要使用服务名来绑定 代替上ip+端口号

 定义配置规范:前面一定要加上团队名称,不可以瞎写。

分布式配置中心的概念:使用专门的服务器统一存放管理我们整个项目的配置文件,能够完全动态的去实现对我们配置文件的修改或新增,是不需要重启服务器的。

常见的配置中心有:携程的阿波罗SpringCloud的 Config(没有界面)、Nacos轻量级的配置中心等。

* 分布式配置中心架构原理

1、本地应用读取我们云端分布式配置中心文件(第一次请求时候会建立长连接)

2、本地应用读取到配置文件后,本地JVM 和硬盘中都会缓存一份

3、当我们配置文件发生变化时(MD5|版本号实现区分),将变化结果通知给我们本地应用,及时刷新我们的配置文件。

这样就实现动态化修改我们的配置文件。

 Nacos 分布式配置中心和注册中心都是部署在同一个应用里,是一个单体架构。它的默认端口号时8848,所以它里面自己的服务肯定都是8848端口。

* 配置文件发布Nacos配置中心

 配置服务名称:

 Nacos 上配置

 选中properties 文件,写的就是properties文件的格式,点击发布即可

* 本地应用读取Nacos配置中心

依赖:

     <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>0.2.2.RELEASE</version>
        </dependency>

 注意:如果本地也配置了Nacos,在启动时候可能会有异常,因为它可能不知道该去读取哪里的配置了。

所以要把这个删了:

 切记要把连接Nacos 的配置文件,放在bootStrap.yml 文件里面,所以这时候我们新建一个bootStrap.yml 文件,把连接Nacos 的配置给剪切过来:

 因为bootStrap 命名的优先级最高,在整个应用程序中最先被加载。

* Nacos动态更新本地配置文件

这启动类添加这个注解,可以保持长连接,动态刷新

直接在这里改,然后发布

 如果想要把properties文件换成yml格式的配置文件:

 然后本地默认连接的时properties文件,设置成yaml 就好了。。

 重启就OK了

* Nacos实现多环境不同配置

比如我们项目一般都是有开发环境dev 和正式环境prod

测试:新建两个文件,一个dev,一个prd

  

然后再bootStrap.yml 配置里添加:

 这样读的就是dev的配置文件

* Nacos实现配置中心集群部署

 

 我们的多个Nacos配置中心都是持久化到的同一个MySql服务,这样子的一个集群

* Nacos配置中心持久化到数据库

我们从Nacos的conf 目录下的配置文件可以找到:

 然后去新建一个数据库表,去把conf 目录下的那个nacos-mysql.sql 的sql 语句拿来执行一下:

 它里面有这些表:

 然后我们可以更改Nacos 的配置文件,把application.properties.example 文件的拿下配置复制过来,放在application.properties 文件里,进行修改连接自己的数据库ip

  

然后重启Nacos 就生效了,切记: 如果这样更改了,之前的Nacos 的所有配置文件都是清空了的!!

 * Nginx是实现Nacos集群部署

实现原理:

 而我们操作的话很简单:

 模拟三个Nacos,把它的application.properties 文件里的端口给改了。

 去配置Nginx:

 这时候别高兴太早,项目里只加了8848,我们要用逗号,分开,加上所有ip+端口

 这样就可以三个节点都放在了分布式配置中心

原文地址:https://www.cnblogs.com/Javastudy-note/p/13818356.html