1、什么是配置中心
1.1、什么是配置
应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如︰数据库连接参数、启动参数等。
配置主要有以下几个特点∶
- 配置是独立于程序的只读变量
- 配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置
- 配置伴随应用的整个生命周期
- 配置贯穿于应用的整个生命周期,应用在启动时通过读取配置来初始化,在运行时根据配置调整行为。比如︰启动时需要读取服务的端口号、系统在运行过程中需要读取定时策略执行定时任务等。
- 配置可以有多种加载方式
- 常见的有程序内部hard code,配置文件,环境变量,启动参数,基于数据库等
- 配置需要治理
- 同一份程序在不同的环境(开发,测试,生产)、不同的集群(如不同的数据中心)经常需要有不同的配置,所以需要有完善的环境、集群配置管理
1.2、什么是配置中心
在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就分散了,不仅如此,分散中还包含着冗余,如下图:
下图显示了配置中心的功能,配置中心将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。
2、Nacos简介
2.1、主流配置中心对比
目前市面上用的比较多的配置中心有:Spring Cloud Config、Apollo、Nacos和Disconf等。
由于Disconf不再维护,下面主要对比一下Spring Cloud Config、Apollo和Nacos。
2.2、Nacos简介
Nacos是阿里的一个开源产品,它是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。官方介绍是这样的∶
Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
Nacos帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos是构建以"服务"为中心的现代应用架构的服务基础设施。
2.3、Nacos特性
Nacos主要提供一下四大功能:
1、服务发现与服务健康检查
Nacos使服务更容易注册,并通过DNS或HTTP接口发现其他服务,Nacosi还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。
2、动态配置管理
动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。Nacos消除了在更新配置时重新部署应用程序,这使配置的更改更加高效和灵活。
3、动态DNS服务
Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以域名的方式暴露端点,让三方应用方便的查阅及发现。
4、服务和元数据管理
Nacos能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。
这里动态配置管理的特性说明了Naocs的配置管理能力。
3、Nacos快速入门
3.1、安装Nacos Server
3.1.1、预备环境准备
Nacos 依赖Java环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置Maven环境,请确保是在以下版本环境中安装使用:
1、64 bit Os,支持Linux/Unix/Mac/Windows r推荐选用Linux/Unix/Mac。
2、64 bit JDK 1.8+;下载&配置。
3、Maven 3.2.x+;下载&配置。
3.1.2、下载源码或者安装包
从Github上下载源码方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos clean install -U
ls -al diustribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
下载编译后压缩包方式
下载地址: https://github.com/alibaba/nacos/releases
下载后解压∶
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
3.1.3、启动服务器
nacos的默认端口是8848,需要保证8848默认端口没有被其他进程占用。
进入安装程序的bin目录:
Linux/Unix/Mac启动方式:
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows启动方式:
启动命令∶
cmd startup.cmd
或者双击startup.cmd运行文件。
启动遇到问题可看:
关于nacos在Windows 10上启动失败的解决方案参考_sorry_my_life的博客-CSDN博客
启动成功,可通过 http://localhost:8848/nacos 访问,默认用户名和密码都是nacos。
3.1.4、OPEN API 配置管理测试
启动nacos成功后,可通过nacos提供的http api验证nacos服务运行是否正常。
下边我们通过curl工具来测试nacos的open api :
curl是开发中常用的命令行工具,可以用作HTTP协议测试。
本教程下载curl的windows版本 :curl-7.66.0_2-win64-mingw,下载地址: https://curl.haxx.se/windows/
下载完成进入curl-7.66.0_2-win64-mingw的bin目录cmd,进行下边的测试,通过测试可判断nacos是否正常工作。
发布配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=Helloworld"
上边的命令表示向nacos发布一个配置
获取配置
向nacos发布配置成功,就可以通过客户端从nacos获取配置信息,执行下边的命令∶
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
通过测试发现,可以从nacos获取前边发布的配置:HelloWorld
3.1.5、关闭服务器
关闭nacos服务的方式如下∶
Linux/Unix/Mac方式:
sh shutdown .sh
Windows方式:
cmd shutdown .cmd
或者双击shutdown.tmd运行文件。
3.1.6、外部MySQL数据库支持
单机模式时nacos默认使用嵌入式数据库实现数据的存储,若想使用外部mysql存储nacos数据,需要进行以下步骤︰
1、安装数据库,版本要求:5.6.5+ ,mysal8以下
2、初始化myscl数据库,新建数据库nacos_config,数据库初始化文件(在conf目录下):${nacoshome}/conf/nacos-mysql.sql
3、修改${nacoshome}/conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql ),添加mysql数据源的url、用户名和密码。
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_