抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

问题

Hyperf官方文档推荐的服务注册组件hyperf/service-governance默认使用类注解方式配置需要注册的服务,即一个类可以注册为一个服务,提供了json-rpc, grpc等集成封装,使用较为方便。但是不支持RESTful风格的RPC服务注册,这里提供一种解决方案。

实现方式

引入组件

composer require hyperf/service-governance-nacos:2.2

此组件依赖hyperf/nacos组件,composer会自动引入

配置文件

执行命令发布配置文件

php bin/hyperf.php vendor:publish hyperf/nacos

编辑配置文件

config/autoload/nacos.php

<?php

declare(strict_types=1);
/**
 * This file is part of Hyperf.
 *
 * @link     https://www.hyperf.io
 * @document https://hyperf.wiki
 * @contact  group@hyperf.io
 * @license  https://github.com/hyperf/hyperf/blob/master/LICENSE
 */
return [
    // nacos server url like https://nacos.hyperf.io, Priority is higher than host:port
    // 'url' => '',
    // The nacos host info
    'host' => env('NACOS_ENDPOINT', '127.0.0.1'),
    'port' => env('NACOS_PORT', 8848),
    // The nacos account info
    'username' => null,
    'password' => null,
    'guzzle' => [
        'config' => null,
    ],
    'service' => [
        'enable' => true,
        'service_name' => env('APP_NAME', 'DemoService'),
        'group_name' => env('NACOS_GROUP', ''),
        'namespace_id' => env('NACOS_NAMESPACE', ''),
        'protect_threshold' => 0,
        'instance' => [
            'heartbeat' => 5,
            'weight' => 10,
            'auto_removed' => true, // 配置允许worker shutdown时自动删除实例
        ]
    ],
];

配置心跳

config/autoload/processes.php

<?php

return [
    // 省略其他内容 ....

    // 直接发送实例心跳,创建服务,注册临时实例
    Hyperf\ServiceGovernanceNacos\Process\InstanceBeatProcess::class,
];

配置优雅下线

config/autoload/server.php

<?php

// 省略其他内容......

return [
    // 省略其他配置内容 ....
    'callbacks' => [
        // ...
        // 监听实例shutdown,发送shutdown事件,由
        Event::ON_SHUTDOWN => [Hyperf\Framework\Bootstrap\ShutdownCallback::class, 'onShutdown'],
    ],
];

config/autoload/listener.php

<?php

return [
    // 省略其他内容......

    // 监听shutdown事件,删除服务实例
    Hyperf\ServiceGovernanceNacos\Listener\OnShutdownListener::class,
];

评论