Nova

Zan框架在进行服务发现,与其他服务采用Nova协议通信时,会从连接池中取出一条连接进行数据传输。

配置

Nova连接配置在项目 resource/config/$ENV/connection下。

return [
    'engine'=> 'novaClient',
    //连接超时时间
    'connect_timeout' => 15000,
    //发送超时时间
    'send_timeout'    => 3000,
    //心跳时间
    'heartbeat-time' => 15000,
    //负载均衡策略,目前只支持polling
    'load_balancing_strategy' => 'polling',
    'config'    => [
        //swoole包头格式设置
        'open_length_check' => 1,
        'package_length_type' => 'N',
        'package_length_offset' => 0,
        'package_body_offset' => 0,
        //是否开启nova协议,1:开启,0:关闭
        'open_nova_protocol' => 1
    ],
];

不同于其他连接池,Nova连接池的连接数目、连接目的地址无法配置。主要原因是Nova连接池的目标地址为服务提供方的地址,服务提供方的信息来源于注册中心。另外,每一个外部服务在zan框架中对应一个Nova连接池,Nova连接池中的连接数目等于提供外部服务的server数目。

除了全局超时配置之外,ZanPHP还提供了针对每次接口调用的发送超时配置,此配置的优先级高于上述的全局send_timeout配置,超时接口为:

final public function setCurrentInvokeTimeout($ms)  //参数为时间,单位为ms

使用示例为:

$result = (yield $myService->setCurrentInvokeTimeout(10)->myMethod());