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

This package is auto-updated.

Last update: 2025-02-22 13:41:15 UTC


README

GitHub Tag Total Downloads Packagist Version Packagist PHP Version Support Packagist License

安装

推荐使用 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)

/nacos/v1/ns/instance /nacos/v2/ns/instance

开发计划

  • 配置管理
  • 服务发现
  • 命名空间
  • 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 中,NamespaceData IDGroup 是用于管理和组织配置的三个重要概念。它们共同决定了配置项的唯一性,可以帮助你更好地管理配置数据。

Namespace(命名空间)

  • 用途: 命名空间用于多租户隔离,通常用来隔离不同的环境(如开发、测试、生产)或不同的业务线。
  • 唯一性: 同一命名空间内的 Data IDGroup 是唯一的,但不同命名空间之间可以存在相同的 Data IDGroup 组合。

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: dev
    • Group: payment-service
    • Data ID: db-config
  • 生产环境下的订单服务 Redis 配置:
    • Namespace: prod
    • Group: order-service
    • Data 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.