什么是配置?
应用程序在启动和运行的时候往往需要读取一些配置信息。比如:数据库连接参数、启动参数、JVM参数等等。
特点:配置是独立与程序的只读变量、伴随着应用的声明周期,有多种加载方式(.yml、–spring.profile.active=dev、从数据库读取)
什么是配置中心?
从各个应用中,剥离出来,统一管理,应用程序可获取配置信息。
优点:配置中心文件被修改,会自动去向应用程序发送配置更新的信息,各个应用程序会重新获取最新的配置。
主流的配置中心
Spring Cloud Config、Nacos、Apollo
Nacos性能最好!Apollo其次Spring Cloud Config最差!
Nacos官网:https://nacos.io/zh-cn/
Nacos特性
- 服务发现和服务健康检查:Nacos 使服务通过 DNS 或 HTTP 接口注册自己和发现其他服务变得简单。Nacos 还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。
- 动态配置管理:动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。Nacos 无需在更新配置时重新部署应用程序和服务,这使得配置更改更加高效和敏捷。
- 动态 DNS 服务:Nacos 支持加权路由,让您更容易在数据中心内的生产环境中实现中层负载均衡、灵活的路由策略、流量控制和简单的 DNS 解析服务。它可以帮助您轻松实现基于 DNS 的服务发现,并防止应用程序耦合到特定于供应商的服务发现 API。
- 服务和元数据管理:Nacos 提供了一个易于使用的服务仪表板,帮助您管理您的服务元数据、配置、kubernetes DNS、服务健康和指标统计。
预备环境准备
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8 ;下载 & 配置。
- Maven 3.2.x ;下载 & 配置。
Nacos:下载去Github下载 大小100M https://github.com/alibaba/nacos/releases
1、启动服务器
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
代码语言:javascript复制sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
代码语言:javascript复制bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
代码语言:javascript复制startup.cmd -m standalone
等一会!我测试启动大约56秒!
代码语言:javascript复制Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
基准速度: 2.80 GHz
插槽: 2
内核: 20
逻辑处理器: 40
虚拟化: 已启用
L1 缓存: 1.2 MB
L2 缓存: 5.0 MB
L3 缓存: 50.0 MB
利用率 8%
速度 3.12 GHz
正常运行时间 6:15:00:39
进程 241
线程 5462
句柄 128179
启动成功了,我们就去第一张图的地址去访问吧!
Nacos 启动成功!默认账号密码:nacos
进入控制台!通过Nacos OPEN API服务来测试 发布、获取配置了!
Windows如果没有curl 命令,自行去下载:https://curl.haxx.se/download.html 切记往下找到Windwos的版本!
如果CURL不能使用请参考:https://www.cnblogs.com/ooo888ooo/p/12620933.html
2、测试
服务注册
代码语言:javascript复制curl -X POST "http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080"
服务发现
代码语言:javascript复制curl -X GET "http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName"
发布配置
代码语言:javascript复制curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
获取配置
代码语言:javascript复制curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
3、关闭服务器
Linux/Unix/Mac
代码语言:javascript复制sh shutdown.sh
Windows
代码语言:javascript复制shutdown.cmd
或者双击shutdown.cmd运行文件。
配置Nacos数据库
注意!我们发布的Nacos上的所有内容都是使用的自身嵌入式数据库存储,我们需要更替为我们自己的Mysql数据库存储
- 创建名为 nacos_config 的数据库
- 导入 confnacos-mysql.sql 文件进入 nacos_config 数据库
- 修改 confapplication.properties 文件 在最下面追加如下内容。建议去看application.properties.example 查看一下关于数据库的说明。这样更加专业!不用再查看网上的傻逼文章!
### If use MySQL as datasource: 下面这句网上很多傻逼文章作者都不说,以后我们还是查看application.properties.example的示例吧吧!
spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
完成后,重启一下服务。就可以了!发现我们之前发布的服务都不见了,即已经使用我们自己指定的数据库了!最好再去重新发布一个简单的,再去数据库确定一下。
除了刚才的CURL 发布服务,我们也可以在客户端上,进行服务的发布。登录自己的Nacos 创建即可!
完结!
特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!