Nova¶

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

配置¶

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

  1. return [
  2. 'engine'=> 'novaClient',
  3. //连接超时时间
  4. 'connect_timeout' => 15000,
  5. //发送超时时间
  6. 'send_timeout' => 3000,
  7. //心跳时间
  8. 'heartbeat-time' => 15000,
  9. //负载均衡策略,目前只支持polling
  10. 'load_balancing_strategy' => 'polling',
  11. 'config' => [
  12. //swoole包头格式设置
  13. 'open_length_check' => 1,
  14. 'package_length_type' => 'N',
  15. 'package_length_offset' => 0,
  16. 'package_body_offset' => 0,
  17. //是否开启nova协议,1:开启,0:关闭
  18. 'open_nova_protocol' => 1
  19. ],
  20. ];

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

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

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

使用示例为:

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

原文: http://zanphpdoc.zanphp.io/libs/pool/nova.html