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());