zxyfaxcn / nacos
nacos php sdk with hyperf framework
Installs: 77
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 2
Open Issues: 0
pkg:composer/zxyfaxcn/nacos
Requires
- ext-json: *
- ext-simplexml: *
- ext-yaml: *
- hyperf/config: ^1.1
- hyperf/event: ^1.1
- hyperf/framework: ^1.1
- hyperf/guzzle: ^1.1
- hyperf/http-server: ^1.1
- hyperf/logger: ^1.1
- hyperf/process: ^1.1
- hyperf/utils: ^1.1
Requires (Dev)
- symfony/var-dumper: ^5.0
This package is auto-updated.
Last update: 2025-10-15 18:49:06 UTC
README
nacos
Hyperf 框架下关于 Nacos 微服务的 php SDK
安装
composer require zxyfaxcn/nacos
发布配置文件
php bin/hyperf.php vendor:publish zxyfaxcn/nacos
目录结构
./src
├── Config 配置的自动更新
│ ├── FetchConfigProcess.php
│ ├── OnPipeMessageListener.php
│ └── PipeMessage.php
├── ConfigProvider.php Hyperf扩展配置
├── Helper 辅助函数
│ └── func.php
├── Lib Nacos Api 封装
│ ├── AbstractNacos.php
│ ├── NacosConfig.php
│ ├── NacosInstance.php
│ ├── NacosOperator.php
│ └── NacosService.php
├── Listener
│ ├── BootAppConfListener.php 启动时自动注册
│ └── OnShutdownListener.php 关闭服务时自动注销
├── Model 领域模型
│ ├── AbstractModel.php
│ ├── ConfigModel.php
│ ├── InstanceModel.php
│ └── ServiceModel.php
├── Process 心跳
│ └── InstanceBeatProcess.php
├── ThisInstance.php 当前节点
├── ThisService.php 当前服务
└── Util
├── Guzzle.php
└── RemoteConfig.php
服务与实例
BootAppConfListener.php 将在系统启动完成时自动完成实例注册, 服务注册
如果需要在服务下线时自动注销服务, 请增加如下配置, 以监听 Shutdown 事件
// config/autoload/server.php return [ // ...other 'callbacks' => [ // ...other SwooleEvent::ON_SHUTDOWN => [Hyperf\Framework\Bootstrap\ShutdownCallback::class, 'onShutdown'] ] ];
获取当前实例
$instance = new ThisInstance();
获取当前服务
$service = new ThisService();
获取一个服务的最优节点
$instance = make(NacosInstance::class); $service = new ServiceModel([ 'serviceName' => 'hyperf', 'groupName' => 'api', 'namespaceId' => '5ce9d1c1-6732-4ccc-ae1f-5139af86a845' ]); $optimal = $instance->getOptimal($service);
配置中心
BootAppConfListener.php 系统启动时将拉取远程配置, 并合入hyperf 的 Config
FetchConfigProcess.php 自定义进程将监听配置, 若有更新将发送PipeMessage 到各服务worker进程, 并合入当前进程的 Config
如果服务如下配置
// config/autoload/nacos.php return [ 'enable' => true, // 是否开启自动注册 默认false 'deleteServiceWhenShutdown' => true, // 是否开启自动注销 默认false 'host' => '127.0.0.1', 'port' => '8848', // 服务配置 serviceName, groupName, namespaceId // protectThreshold, metadata, selector 'service' => [ 'serviceName' => 'hyperf', 'groupName' => 'api', 'namespaceId' => 'namespace_id', 'protectThreshold' => 0.5, ], // 节点配置 serviceName, groupName, weight, enabled, // healthy, metadata, clusterName, namespaceId, ephemeral 'client' => [ 'namespaceId' => 'namespace_id', // 注意此处必须和service保持一致 'serviceName' => 'hyperf', 'groupName' => 'DEFAULT', 'weight' => 80, 'enabled' => true, 'healthy' => true, 'cluster' => 'DEFAULT', 'ephemeral' => true, 'beatEnable' => true,// 心跳 'beatInterval' => 5,// s ], // 配置刷新 'configReloadEnable' => false, 'configReloadInterval' => 3,// 间隔 s // 远程配置合并节点, 默认 config 根节点 'configAppendNode' => 'nacos_conf', 'listenerConfig' => [ // 配置项 dataId, group, tenant, type, content [ 'dataId' => 'hyperf-service-config', 'group' => 'DEFAULT_GROUP', ], [ 'dataId' => 'hyperf-service-config-yml', 'group' => 'DEFAULT_GROUP', 'type' => 'yml', ], ], ];
系统将自动监听listenerConfig 中的配置, 并将其合并入hyperf Config 对象的指定(configAppendNode) 节点, 可以用config('nacos_conf.***') 获取, 若没有配置 configAppendNode 项, 将会并入 Config 对象根节点.
依赖扩展
ext-json, ext-yaml, ext-simplexml, ext-libxml