概述
本文主要学习和使用 nacos 配置中心,从 nacos 配置中心原理出发,深入到实际项目中的nacos配置中心使用。应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。应用程序根据配置改变自身的行为,但一般程序不会去修改配置。
对于配置,大家在日常开发中应该很熟悉。配置的加载有多种方式,其中硬写代码在应用中的方式最不可取的,而配置文件、环境变量、启动参数、甚至数据库的方式。
在微服务架构中多机器、多应用、多实例的情况下也有很大不足,会使得配置分散,不易于管理。想象一下,如果你启动了一个服务的多个实例,一旦配置需要更改,在没有配置中心的情况,你得将每个实例的配置信息改一遍,这将是非常繁琐且低效的工作。
配置中心就是一种统一管理各种应用配置的基础服务组件,它将将配置从各应用中剥离出来,对配置进行统一管理,应用自身不需要自己去管理配置。
Nacos 致力于帮助您发现、配置和管理微服务;是微服务/SOA架构体系中服务治理环节的重要成员服务;简单的可以把Nacos理解为一个配置中心和一个服务注册中心。
public
,标识不同执行环境,如:dev
,test
,prod
…DEFAULT_GROUP
,标识不同项目,如:ORDER_GROUP
,USER_GROUP
…如:
dev_ORDER_GROUP_application.yaml
表示dev环境_订单项目_ application.yaml
配置文件。
这里使用Docker 快速开始,详细可以参考官方文档:https://nacos.io/zh-cn/docs/quickstart/quick-start-docker/
部署登录成功界面如下所示:
客户端使用兔子大佬的webman的nacos插件:https://www.workerman.net/plugin/50
安装
composer require workbunny/webman-nacos
配置配置文件plugin/workbunny/webman-nacos/app.php
...
'host' => '192.168.3.29',
'port' => 8848,
'username' => 'nacos',
'password' => 'nacos',
...
以上配置文件主要修改一下nacos的主机端口以及账号和密码。配置完确认无误后,就可以启动webman了。
启动界面如下所示:
新建webman
命名空间
在webman
命名空间下新增config.yaml
配置文件
config.yaml
配置文件内容
# Redis配置
redis:
master:
host: '192.168.3.29'
port: 6379
password: '123456'
# MySQL数据库
mysql:
master:
host: '127.0.0.8'
port: 3306
username: 'root'
password: '123456'
运行项目查看配置结果是否一致。定义测试控制器IndexController
,读取redis默认配置项代码
<?php
/**
* @desc 微服务系列 | Nacos云原生配置中心介绍与使用
* @author Tinywan(ShaoBo Wan)
* @date 2024/6/16 20:14
*/
declare(strict_types=1);
namespace app\controller;
use support\Request;
use support\Response;
class IndexController
{
/**
* @desc nacos
* @param Request $request
* @return Response
* @author Tinywan(ShaoBo Wan)
*/
public function nacos(Request $request): Response
{
$config = \config('redis.default');
return json(['code' => 0, 'msg' => 'ok', 'data' => $config]);
}
}
访问地址:http://127.0.0.1:8787/index/nacos
请求结果如下:
{
"code": 0,
"msg": "ok",
"data": {
"host": "192.168.3.29",
"port": 6379,
"password": "123456",
"database": 0
}
}
尝试修改nacos配置中心redis配置的密码配置,由123456
修改为nacos-resty-123456
修改前后内容比较
webman终端监控日志打印输出
POST /nacos/v1/cs/configs/listener?Listening-Configs=config.yaml%02DEFAULT_GROUP%0294dcc283232b714a5ea3fe4d411b308e%0225cb4090-bb73-4134-aa49-7292b6755b22%01&accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcxODQ4NTkzMH0.A4W57FBg02RR-UQ8omz7Z4RhWVxlMZ7svykin-bNQcs HTTP/1.1
Host: 192.168.3.29:8848
User-Agent: workerman/http-client
Connection: keep-alive, keep-alive
Long-Pulling-Timeout: 30000
/var/www/plugin.admin.webman/config.yaml update and reload.
Workerman[start.php] reloading
POST /nacos/v1/cs/configs/listener?Listening-Configs=config.yaml%02DEFAULT_GROUP%029baa48521801e997b2fb2e0a2d47cafb%0225cb4090-bb73-4134-aa49-7292b6755b22%01&accessToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTcxODQ4NTkzNX0.M8CXTy7f_xuTM4cpNqcpaMMIyeENw3eghtcNSoA2Oik HTTP/1.1
Host: 192.168.3.29:8848
User-Agent: workerman/http-client
Connection: keep-alive, keep-alive
Long-Pulling-Timeout: 30000
通过项目重新读取配置信息
{
"code": 0,
"msg": "ok",
"data": {
"host": "192.168.3.29",
"port": 6379,
"password": "nacos-resty-123456",
"database": 0
}
}
查看历史修改记录的详情
可以通过历史记录进行回滚
监听查询
本文主要介绍了webman如何集成Nacos作为配置中心。本次主要通过webman nacos插件来使用Nacos作为配置中心和发现中心,代码示例仅展示配置中心的使用,发现中心的使用建议参考官方文档说明。