参考地址:蚂蚁课堂
* 分布式配置中心产生的背景
我们的注册中心,说白了就是把我们服务的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/abiu/p/13599196.html