imiphp / imi-nacos
imi 框架 Nacos 组件。imi Nacos component.
Installs: 19
Dependents: 0
Suggesters: 1
Security: 0
Stars: 5
Watchers: 1
Forks: 1
Open Issues: 0
pkg:composer/imiphp/imi-nacos
Requires
- yurunsoft/nacos-php: ~1.0.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ~3.4.0
- imiphp/imi: 2.1.x-dev
- imiphp/imi-config-center: 2.1.x-dev
- imiphp/imi-fpm: 2.1.x-dev
- imiphp/imi-service: 2.1.x-dev
- imiphp/imi-swoole: 2.1.x-dev
- imiphp/imi-workerman: 2.1.x-dev
- phpstan/phpstan: ~1.8.0
- phpunit/phpunit: >=9
- rector/rector: ^0.12.10
- swoole/ide-helper: ^4.8
Suggests
- imiphp/imi-config-center: Config center
- imiphp/imi-service: service
This package is auto-updated.
Last update: 2025-10-27 13:38:06 UTC
README
介绍
此项目是 imi 框架的 Nacos 组件。
正在开发中,随时可能修改,请勿用于生产环境!
支持的功能:
- 
配置中心 
- 
服务注册 
安装
composer require imiphp/imi-nacos:~2.1.0
使用说明
配置中心
配置
@app.beans:
[
    'ConfigCenter' => [
        // 'mode'    => \Imi\ConfigCenter\Enum\Mode::WORKER, // 工作进程模式
        'mode'    => \Imi\ConfigCenter\Enum\Mode::PROCESS, // 进程模式
        'configs' => [
            'nacos' => [
                'driver'  => \Imi\Nacos\Config\NacosConfigDriver::class,
                // Nacos 客户端连接配置
                'client'  => [
                    'host'                => '127.0.0.1', // 主机名
                    'port'                => 8848, // 端口号
                    'prefix'              => '/', // 前缀
                    'username'            => 'nacos', // 用户名
                    'password'            => 'nacos', // 密码
                    'timeout'             => 60000, // 网络请求超时时间,单位:毫秒
                    'ssl'                 => false, // 是否使用 ssl(https) 请求
                    'authorizationBearer' => false, // 是否使用请求头 Authorization: Bearer {accessToken} 方式传递 Token,旧版本 Nacos 需要设为 true
                ],
                // 监听器配置
                'listener' => [
                    'timeout'         => 30000, // 配置监听器长轮询超时时间,单位:毫秒
                    'failedWaitTime'  => 3000, // 失败后等待重试时间,单位:毫秒
                    'savePath'        => Imi::getRuntimePath('config-cache'), // 配置保存路径,默认为空不保存到文件。php-fpm 模式请一定要设置!
                    'fileCacheTime'   => 30, // 文件缓存时间,默认为0时不受缓存影响,此配置只影响 pull 操作。php-fpm 模式请一定要设置为大于0的值!
                    'pollingInterval' => 10000, // 客户端轮询间隔时间,单位:毫秒
                ],
                // 配置项
                'configs' => [
                    'nacos' => [
                        'key'   => 'imi-nacos-key1',
                        'group' => 'imi',
                        'type'  => 'json', // 配置内容类型,Nacos >= 1.3 可以不配,由配置项类型智能指定
                    ],
                ],
            ],
        ],
    ],
]
获取配置
\Imi\Config::get('nacos'); // 对应 imi-nacos-key1
写入配置
/** @var \Imi\ConfigCenter\ConfigCenter $configCenter */ $configCenter = App::getBean('ConfigCenter'); $name = 'imi-nacos-key1'; $group = 'imi'; $type = 'json'; $value = json_encode(['imi' => 'niubi']); $configCenter->getDriver('nacos')->push($name, $value, [ 'group' => $group, 'type' => $type, ]);
注册中心
引入依赖
composer require imiphp/imi-service
配置
@app.beans:
[
    'ServiceRegistry' => [
        'drivers' => [
            [
                'driver' => \Imi\Nacos\Service\NacosServiceRegistry::class, // 驱动类名
                // 注册的服务列表
                'services' => [
                    'main', // 格式1:主服务器是 main,子服务器就是子服务器名
                    // 格式2:数组配置
                    [
                        // 所有参数按需设置
                        'server'     => 'main', // 主服务器是 main,子服务器就是子服务器名
                        // 'instanceId' => '实例ID',
                        'serviceId'  => 'main_test',
                        'weight'     => 1, // 权重
                        'uri'        => 'http://127.0.0.1:8080', // uri
                        // 'host'       => '127.0.0.1',
                        // 'port'       => 8080,
                        'metadata'   => [
                            // 'group' => 'DEFAULT_GROUP', // 分组
                            // 'namespaceId' => '', // 命名空间
                            // 'metadata' => [], // metadata
                            // 'ephemeral' => true, // 是否为临时实例
                        ],
                        // 'interface'  => 'eth0', // 网卡 interface 名,自动获取当前网卡IP时有效
                    ],
                ],
                'client' => [
                    // Nacos 客户端连接配置
                    'host'                => '127.0.0.1', // 主机名
                    'port'                => 8848, // 端口号
                    'prefix'              => '/', // 前缀
                    'username'            => 'nacos', // 用户名
                    'password'            => 'nacos', // 密码
                    'timeout'             => 60000, // 网络请求超时时间,单位:毫秒
                    'ssl'                 => false, // 是否使用 ssl(https) 请求
                    'authorizationBearer' => false, // 是否使用请求头 Authorization: Bearer {accessToken} 方式传递 Token,旧版本 Nacos 需要设为 true
                ],
                'heartbeat' => 3, // 心跳时间,单位:秒
            ],
        ],
    ],
]
服务发现(负载均衡)
引入依赖
composer require imiphp/imi-service
配置
@app.beans:
[
    'ServiceDiscovery' => [
        'drivers' => [
            [
                'driver'       => \Imi\Nacos\Service\NacosServiceDiscoveryDriver::class, // 服务发现驱动
                // 'client' => \Imi\Service\Discovery\DiscoveryClient::class, // 服务发现客户端,如无必要不需要修改
                // 负载均衡配置
                'loadBalancer' => \Imi\Service\LoadBalancer\RandomLoadBalancer::class, // 负载均衡-随机
                // 'loadBalancer' => \Imi\Service\LoadBalancer\RoundRobinLoadBalancer::class, // 负载均衡-轮询
                // 'loadBalancer' => \Imi\Service\LoadBalancer\WeightLoadBalancer::class, // 负载均衡-权重
                // 发现服务列表
                'services' => [
                    'serviceName', // 改为你的服务名称
                ],
                'clientConfig' => [
                    // Nacos 客户端连接配置
                    'host'                => '127.0.0.1', // 主机名
                    'port'                => 8848, // 端口号
                    'prefix'              => '/', // 前缀
                    'username'            => 'nacos', // 用户名
                    'password'            => 'nacos', // 密码
                    'timeout'             => 60000, // 网络请求超时时间,单位:毫秒
                    'ssl'                 => false, // 是否使用 ssl(https) 请求
                    'authorizationBearer' => false, // 是否使用请求头 Authorization: Bearer {accessToken} 方式传递 Token,旧版本 Nacos 需要设为 true
                ],
                'cacheTTL' => 60, // 缓存时间,单位:秒。默认为60秒,设为0不启用缓存
            ],
        ],
    ],
]
获取服务可用节点
/** @var \Imi\Service\Discovery\ServiceDiscovery $serviceDiscovery */ $serviceDiscovery = \Imi\App::getBean('ServiceDiscovery'); $service = $serviceDiscovery->getInstance('服务名称'); $service->getInstanceId(); // 实例ID,string $service->getServiceId(); // 服务ID,string $service->getWeight(); // 权重,float $service->getUri(); // \Imi\Util\Uri $service->getMetadata(); // 元数据,数组 // 获取服务实例的ip及端口的常用写法 $uri = $service->getUri(); $host = $uri->getHost(); $port = $uri->getPort();
免费技术支持
运行环境
版权信息
imi-nacos 遵循 MulanPSL-2.0 开源协议发布,并提供免费使用。
捐赠
开源不求盈利,多少都是心意,生活不易,随缘随缘……