Nacos 致力于帮助您发现、配置和管理微服务;是微服务/SOA架构体系中服务治理环节的重要成员服务;简单的可以把Nacos理解为一个配置中心和一个服务注册中心。
Nacos 3.0 将重点构建面向AI原生架构的服务治理平台,为 模型 / MCP Server / Agent 等新型业务智能场景架构提供更高效的运行支撑;Nacos 3.0 提升安全性,整体架构安全拆分,默认开启鉴权,并且支持动态数据源密钥等零信任方案;多语言生态,覆盖主流开发语言。
通过Nacos的Docker镜像,在Docker容器中部署并使用 Nacos。首次执行命令时,会自动下载所需的相关Docker镜像,需要等待的时长取决于网络速度。您也可以提前下载好相关镜像,以缩短执行部署命令的等待时间。
docker run --name nacos-standalone-derby \
-e MODE=standalone \
-e NACOS_AUTH_TOKEN=TXJHZGg5cDNFb0l2MmROeDJaRm1Da3pkSzFKQmJzSm8= \
-e NACOS_AUTH_IDENTITY_KEY=tinywan \
-e NACOS_AUTH_IDENTITY_VALUE= \
-p : \
-p : \
-p : \
-d nacos/nacos-server:latest
“注:
NACOS_AUTH_TOKEN
: Nacos 用于生成JWT Token的密钥,使用长度大于32字符的字符串,再经过Base64编码。
正确的JWT Token的密钥生成方式
base64_encode( 'MrGdh9p3EoIv2dNx2ZFmCkzdK1JBbsJo');
通过docker logs -f $container_id
命令,查看Nacos服务启动日志,如果看到如下日志,说明服务启动成功。
curl -X POST 'http://127.0.0.1:8848/nacos/v3/client/ns/instance?serviceName=quickstart.test.service&ip=127.0.0.1&port=8080'
{"code":,"message":"success","data":"ok"}
curl -X GET 'http://127.0.0.1:8848/nacos/v3/client/ns/instance/list?serviceName=quickstart.test.service'
{"code":,"message":"success","data":"ok"}
登陆获取access token
curl -X POST 'http://127.0.0.1:8848/nacos/v3/auth/user/login' -d 'username=nacos' -d 'password=nacos'
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTc0ODcxOTk3Nn0.XGncjQ2MnAxlPOvzuV_H72p-IwLJ-obtZ_RPMU1ig0s",
"tokenTtl": ,
"globalAdmin": true,
"username": "nacos"
}
使用access token,创建配置
$ curl -X POST 'http://127.0.0.1:8848/nacos/v3/admin/cs/config?dataId=quickstart.test.config&groupName=test&content=HelloTinywan' -H "accessToken:eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTc0ODcxODk3OX0.r9lG-kD0pklu7XlU3PrQBIVXc6VL99FCqDseVINid_I"
{"code":0,"message":"success","data":true}
“注:访问Admin API,默认需要使用access token, access token可通过
POST /nacos/v3/auth/user/login
接口获得
curl -X GET 'http://127.0.0.1:8848/nacos/v3/client/cs/config?dataId=quickstart.test.config&groupName=test'
{
"code": ,
"message": "success",
"data": {
"resultCode": ,
"errorCode": ,
"message": null,
"requestId": null,
"content": "HelloTinywan",
"encryptedDataKey": "",
"contentType": "text",
"md5": "e438268c7cb973274502efcb33322b77",
"lastModified": ,
"tag": null,
"beta": false,
"success": true
}
}
composer create-project workerman/webman:~2.0 webman2.x
官方安装文档:https://www.workerman.net/doc/webman/install.html
composer require workbunny/webman-nacos
“webman-nacos组件默认会启动一个名为instance-registrar的进程,用于注册在配置文件plugin/workbunny/webman-nacos/app.php中instance-registrar下的配置内容。
注册一个服务名为webman.test.service
的服务
$client = \Workbunny\WebmanNacos\Client::channel();
$response = $client->instance->register('127.0.0.1', , 'webman.test.service', [
'groupName' => 'DEFAULT_GROUP',
]);
if (false === $response) {
var_dump($client->instance->getMessage());
}
var_dump($response);
$client = \Workbunny\WebmanNacos\Client::channel();
$response = $client->instance->list('webman.test.service', []);
if (false === $response) {
var_dump($client->instance->getMessage());
}
var_dump($response);
响应输出
{
"name": "DEFAULT_GROUP@@webman.test.service",
"groupName": "DEFAULT_GROUP",
"clusters": "",
"cacheMillis": ,
"hosts": [
{
"instanceId": "127.0.0.1#8848#DEFAULT#DEFAULT_GROUP@@webman.test.service",
"ip": "127.0.0.1",
"port": ,
"weight": ,
"healthy": true,
"enabled": true,
"ephemeral": true,
"clusterName": "DEFAULT",
"serviceName": "DEFAULT_GROUP@@webman.test.service",
"metadata": {},
"instanceHeartBeatInterval": ,
"ipDeleteTimeout": ,
"instanceHeartBeatTimeOut": ,
"instanceIdGenerator": "simple"
}
],
"lastRefTime": ,
"checksum": "",
"allIps": false,
"reachProtectionThreshold": false,
"valid": true
}
$client = \Workbunny\WebmanNacos\Client::channel();
$response = $client->config->publish('webman.config.app.php', 'DEFAULT_GROUP', file_get_contents(config_path().'/app.php'));
if (false === $response) {
var_dump($client->instance->getMessage());
}
print_r($response);
配置详情
“webman-nacos组件默认会启动一个名为config-listener的进程,用于监听在配置文件plugin/workbunny/webman-nacos/app.php中config_listeners下的配置内容。
修改配置文件监听器config_listeners
,新增webman.config.app.php
数组
修改配置config/plugin/workbunny/webman-nacos/process.php
/**
* 配置文件监听器
* @desc 可在config/plugin/workbunny/webman-nacos/process.php中进行修改以下两种监听器
* @see \Workbunny\WebmanNacos\Process\ConfigListenerProcess 单Timer同步监听器
* @see \Workbunny\WebmanNacos\Process\AsyncConfigListenerProcess 多Timer异步监听器
*/
'config_listeners' => [
[
/** dataId @desc 该值最好与配置文件名相同 */
'webman.config.app.php',
/** groupName */
'DEFAULT_GROUP',
/** namespaceId */
'',
/** filePath @desc 配置文件本地保存的地址 */
config_path() . '/app.php',
],
# 以下可以新增多个数组
],
启动webman,编辑nacos后台webman.config.app.php
配置对应的项目config/app.php
会自动更新
历史版本
webman自动更新并且reload
其他参考