nacosvel / nacos-client
The PHP Nacos client for request and response data is strongly typed and IDE-friendly.
dev-main / 1.x-dev
2024-09-22 12:40 UTC
Requires
- php: >=8.0
- nacosvel/nacos-sdk-php: ^1.0
This package is auto-updated.
Last update: 2025-02-22 13:41:15 UTC
README
安装
推荐使用 PHP 包管理工具 Composer 安装:
composer require nacosvel/nacos-client
概述
1、PHP Nacos 客户端用于响应数据统一
<?php use Nacosvel\NacosClient\NacosService; use Nacosvel\NacosClient\Naming\RegisterInstanceRequest; $service = new NacosService( serverAddr: 'http://127.0.0.1:8848', namespace: 'public', username: 'nacos', password: 'nacos' ); $request = new RegisterInstanceRequest(); $v1 = $request->v1(serviceName: 'payment_service', ip: '127.0.0.1', port: 8081); $v2 = $request->v2(serviceName: 'payment_service', ip: '127.0.0.1', port: 8081); $response1 = $service->execute($v1)->response(); $response2 = $service->execute($v2)->response();
原始响应:/nacos/v1/ns/instance
ok
原始响应:/nacos/v2/ns/instance
{ "code": 0, "message": "success", "data": "ok" }
PHP Nacos 客户端响应:/nacos/v1/ns/instance
、/nacos/v2/ns/instance
[ 'code' => 0, 'message' => 'success', 'data' => 'ok', ]
2、PHP Nacos 客户端友好于集成开发环境(IDE)
开发计划
- 配置管理
- 服务发现
- 命名空间
- Open-API鉴权
- 运维API
文档
- ✅ Done
- ⬜ To Do
- 🔄 In Progress
- ❌ Unsupported
配置管理
interface | implements | v1 | v2 |
---|---|---|---|
2.1. 获取配置 | Nacosvel\NacosClient\Config\RequestConfigRequest |
✅ | ✅ |
监听配置 | Nacosvel\NacosClient\Config\ListenerConfigRequest |
✅ | ❌ |
2.2. 发布配置 | Nacosvel\NacosClient\Config\PublishConfigRequest |
✅ | ✅ |
2.3. 删除配置 | Nacosvel\NacosClient\Config\DeleteConfigRequest |
✅ | ✅ |
2.3. 查询配置历史列表 | Nacosvel\NacosClient\Config\HistoryListConfigRequest |
✅ | ✅ |
2.3. 查询具体版本的历史配置 | Nacosvel\NacosClient\Config\HistoryConfigRequest |
✅ | ✅ |
2.6. 查询配置上一版本信息 | Nacosvel\NacosClient\Config\HistoryPreviousConfigRequest |
✅ | ✅ |
服务发现
interface | implements | v1 | v2 |
---|---|---|---|
3.1. 注册实例 | Nacosvel\NacosClient\Naming\RegisterInstanceRequest |
✅ | ✅ |
3.2. 注销实例 | Nacosvel\NacosClient\Naming\DeregisterInstanceRequest |
✅ | ✅ |
3.3. 更新实例 | Nacosvel\NacosClient\Naming\UpdateInstanceRequest |
✅ | ✅ |
3.4. 查询实例详情 | Nacosvel\NacosClient\Naming\InstanceRequest |
✅ | ✅ |
3.5. 查询指定服务的实例列表 | Nacosvel\NacosClient\Naming\InstanceListRequest |
✅ | ✅ |
发送实例心跳 | Nacosvel\NacosClient\Naming\InstanceBeatRequest |
✅ | ❌ |
3.6. 批量更新实例元数据 | Nacosvel\NacosClient\Naming\UpdateInstanceMetadataBatchRequest |
✅ | ✅ |
3.7. 批量删除实例元数据 | Nacosvel\NacosClient\Naming\DeleteInstanceMetadataBatchRequest |
✅ | ✅ |
3.8. 创建服务 | Nacosvel\NacosClient\Naming\CreateServiceRequest |
✅ | ✅ |
3.9. 删除服务 | Nacosvel\NacosClient\Naming\DeleteServiceRequest |
✅ | ✅ |
3.10. 修改服务 | Nacosvel\NacosClient\Naming\UpdateServiceRequest |
✅ | ✅ |
3.11. 查询服务详情 | Nacosvel\NacosClient\Naming\ServiceRequest |
✅ | ✅ |
3.12. 查询服务列表 | Nacosvel\NacosClient\Naming\ServiceListRequest |
✅ | ✅ |
3.13. 更新实例健康状态 | Nacosvel\NacosClient\Naming\UpdateHealthInstanceRequest |
✅ | ✅ |
查询系统开关 | Nacosvel\NacosClient\Naming\OperatorSwitchesRequest |
✅ | ❌ |
修改系统开关 | Nacosvel\NacosClient\Naming\UpdateOperatorSwitchesRequest |
✅ | ❌ |
查看系统当前数据指标 | Nacosvel\NacosClient\Naming\OperatorMetricsRequest |
✅ | ❌ |
查看当前集群Server列表 | Nacosvel\NacosClient\Naming\OperatorServersRequest |
✅ | ❌ |
查看当前集群leader | Nacosvel\NacosClient\Naming\RaftLeaderRequest |
✅ | ❌ |
3.14. 查询客户端列表(新) | Nacosvel\NacosClient\Naming\ClientListRequest |
❌ | ✅ |
3.15. 查询客户端信息(新) | Nacosvel\NacosClient\Naming\ClientRequest |
❌ | ✅ |
3.16. 查询客户端的注册信息(新) | Nacosvel\NacosClient\Naming\ClientPublishListRequest |
❌ | ✅ |
3.17. 查询客户端的订阅信息(新) | Nacosvel\NacosClient\Naming\ClientSubscribeListRequest |
❌ | ✅ |
3.18. 查询注册指定服务的客户端信息(新) | Nacosvel\NacosClient\Naming\ClientServersPublishListRequest |
❌ | ✅ |
3.19. 查询订阅指定服务的客户端信息(新) | Nacosvel\NacosClient\Naming\ClientServersSubscribeListRequest |
❌ | ✅ |
命名空间
interface | implements | v1 | v2 |
---|---|---|---|
4.1. 查询命名空间列表 | Nacosvel\NacosClient\Console\NamespaceListRequest |
✅ | ✅ |
4.2. 查询具体命名空间 | Nacosvel\NacosClient\Console\NamespaceRequest |
❌ | ✅ |
4.3. 创建命名空间 | Nacosvel\NacosClient\Console\CreateNamespaceRequest |
✅ | ✅ |
4.4. 编辑命名空间 | Nacosvel\NacosClient\Console\UpdateNamespaceRequest |
✅ | ✅ |
4.5. 删除命名空间 | Nacosvel\NacosClient\Console\DeleteNamespaceRequest |
✅ | ✅ |
Open-API鉴权
interface | implements | v1 | v2 |
---|---|---|---|
Open-API鉴权 | Nacosvel\NacosClient\Auth\LoginRequest |
✅ | ❌ |
重要概念
在 Nacos
中,Namespace
、Data ID
和 Group
是用于管理和组织配置的三个重要概念。它们共同决定了配置项的唯一性,可以帮助你更好地管理配置数据。
Namespace
(命名空间)
- 用途: 命名空间用于多租户隔离,通常用来隔离不同的环境(如开发、测试、生产)或不同的业务线。
- 唯一性: 同一命名空间内的
Data ID
和Group
是唯一的,但不同命名空间之间可以存在相同的Data ID
和Group
组合。
Data ID
- 用途:
Data ID
是配置项的标识符,用于区分不同的配置项。 - 唯一性: 在同一命名空间和同一组(
Group
)内,Data ID
是唯一的。
Group
(组)
- 用途: 组用于对配置进行进一步分类,通常用于区分不同的模块或应用程序。
- 唯一性: 在同一命名空间内,同一组(
Group
)内的Data ID
是唯一的。
三者关系举例
假设你有一个微服务架构的系统,包含三个环境(开发、测试、生产),并且每个环境下都有多个应用。
Namespace
: 可以用来区分不同的环境。Namespace
: dev(开发环境)Namespace
: test(测试环境)Namespace
: prod(生产环境)
Group
: 用来区分不同的应用或模块。Group
: payment-service(支付服务)Group
: order-service(订单服务)
Data ID
: 用来标识具体的配置项。Data ID
: db-config(数据库配置)Data ID
: redis-config(Redis 配置)
具体示例
- 开发环境下的支付服务数据库配置:
Namespace
: devGroup
: payment-serviceData ID
: db-config
- 生产环境下的订单服务 Redis 配置:
Namespace
: prodGroup
: order-serviceData ID
: redis-config
总结
在 Nacos
中,一个配置项的唯一性是由 Namespace
+ Group
+ Data ID
三者组合决定的。这种设计允许你在不同的环境、不同的应用中灵活地管理和隔离配置。
License
Nacosvel NacosClient is made available under the MIT License (MIT). Please see License File for more information.