前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Nacos 3.0 AI云架构在PHP高性能WebMan框架动态配置最佳实践

Nacos 3.0 AI云架构在PHP高性能WebMan框架动态配置最佳实践

作者头像
Tinywan
发布2025-06-08 18:48:20
发布2025-06-08 18:48:20
10900
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

Nacos 3.0 架构图

Nacos 致力于帮助您发现、配置和管理微服务;是微服务/SOA架构体系中服务治理环节的重要成员服务;简单的可以把Nacos理解为一个配置中心和一个服务注册中心。

图片
图片

Nacos 3.0 将重点构建面向AI原生架构的服务治理平台,为 模型 / MCP Server / Agent 等新型业务智能场景架构提供更高效的运行支撑;Nacos 3.0 提升安全性,整体架构安全拆分,默认开启鉴权,并且支持动态数据源密钥等零信任方案;多语言生态,覆盖主流开发语言。

生态组件

图片
图片

Docker快速部署

通过Nacos的Docker镜像,在Docker容器中部署并使用 Nacos。首次执行命令时,会自动下载所需的相关Docker镜像,需要等待的时长取决于网络速度。您也可以提前下载好相关镜像,以缩短执行部署命令的等待时间。

代码语言:javascript
代码运行次数:0
运行
复制
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的密钥生成方式

代码语言:javascript
代码运行次数:0
运行
复制
base64_encode( 'MrGdh9p3EoIv2dNx2ZFmCkzdK1JBbsJo');

验证Nacos服务是否启动成功

通过docker logs -f $container_id命令,查看Nacos服务启动日志,如果看到如下日志,说明服务启动成功。

图片
图片

服务注册

代码语言:javascript
代码运行次数:0
运行
复制
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"}
图片
图片

服务发现

代码语言:javascript
代码运行次数:0
运行
复制
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

代码语言:javascript
代码运行次数:0
运行
复制
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,创建配置

代码语言:javascript
代码运行次数:0
运行
复制
$ 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接口获得

图片
图片

获取配置

代码语言:javascript
代码运行次数:0
运行
复制
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
    }
}

webman 使用

安装webman

代码语言:javascript
代码运行次数:0
运行
复制
composer create-project workerman/webman:~2.0 webman2.x

官方安装文档:https://www.workerman.net/doc/webman/install.html

安装webman-nacos插件

代码语言:javascript
代码运行次数:0
运行
复制
composer require workbunny/webman-nacos

服务注册

webman-nacos组件默认会启动一个名为instance-registrar的进程,用于注册在配置文件plugin/workbunny/webman-nacos/app.phpinstance-registrar下的配置内容。

注册一个服务名为webman.test.service的服务

代码语言:javascript
代码运行次数:0
运行
复制
$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);
图片
图片

服务发现

代码语言:javascript
代码运行次数:0
运行
复制
$client = \Workbunny\WebmanNacos\Client::channel();
$response = $client->instance->list('webman.test.service', []);
if (false === $response) {
    var_dump($client->instance->getMessage());
}
var_dump($response);

响应输出

代码语言:javascript
代码运行次数:0
运行
复制
{
    "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
}

发布配置

代码语言:javascript
代码运行次数:0
运行
复制
$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.phpconfig_listeners下的配置内容。

修改配置文件监听器config_listeners,新增webman.config.app.php数组

修改配置config/plugin/workbunny/webman-nacos/process.php

代码语言:javascript
代码运行次数:0
运行
复制
/**
 * 配置文件监听器
 * @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

图片
图片

其他参考

微服务系列 | Nacos云原生配置中心应用

阿里巴巴开源云原生应用Nacos在我司的应用及SOA初尝试

解锁高性能!Webman框架驱动下的Nacos微服务注册与发

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nacos 3.0 架构图
  • 生态组件
  • Docker快速部署
    • 验证Nacos服务是否启动成功
    • 服务注册
    • 服务发现
    • 发布配置
    • 获取配置
  • webman 使用
    • 安装webman
    • 安装webman-nacos插件
    • 服务注册
    • 服务发现
    • 发布配置
    • 监听配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档