连接池

每个服务都会有一个连接池,根据连接池名称区别是哪个连接池。连接池定义由两部分组成,连接池和连接池配置。

连接池配置

连接池配置和之前一样,继承PoolProperties类,通过properties和env方法配置数据,env会覆盖properties。

  1. class UserPoolConfig extends PoolProperties
  2. {
  3. /**
  4. * the name of pool
  5. *
  6. * @Value(name="${config.service.user.name}", env="${USER_POOL_NAME}")
  7. * @var string
  8. */
  9. protected $name = "";
  10. /**
  11. * Minimum active number of connections
  12. *
  13. * @Value(name="${config.service.user.minActive}", env="${USER_POOL_MIN_ACTIVE}")
  14. * @var int
  15. */
  16. protected $minActive = 5;
  17. /**
  18. * the maximum number of active connections
  19. *
  20. * @Value(name="${config.service.user.maxActive}", env="${USER_POOL_MAX_ACTIVE}")
  21. * @var int
  22. */
  23. protected $maxActive = 50;
  24. /**
  25. * the maximum number of wait connections
  26. *
  27. * @Value(name="${config.service.user.maxWait}", env="${USER_POOL_MAX_WAIT}")
  28. * @var int
  29. */
  30. protected $maxWait = 100;
  31. /**
  32. * Maximum waiting time
  33. *
  34. * @Value(name="${config.service.user.maxWaitTime}", env="${USER_POOL_MAX_WAIT_TIME}")
  35. * @var int
  36. */
  37. protected $maxWaitTime = 3;
  38. /**
  39. * Maximum idle time
  40. *
  41. * @Value(name="${config.service.user.maxIdleTime}", env="${USER_POOL_MAX_IDLE_TIME}")
  42. * @var int
  43. */
  44. protected $maxIdleTime = 60;
  45. /**
  46. * the time of connect timeout
  47. *
  48. * @Value(name="${config.service.user.timeout}", env="${USER_POOL_TIMEOUT}")
  49. * @var int
  50. */
  51. protected $timeout = 200;
  52. /**
  53. * the addresses of connection
  54. *
  55. * <pre>
  56. * [
  57. * '127.0.0.1:88',
  58. * '127.0.0.1:88'
  59. * ]
  60. * </pre>
  61. *
  62. * @Value(name="${config.service.user.uri}", env="${USER_POOL_URI}")
  63. * @var array
  64. */
  65. protected $uri = [];
  66. /**
  67. * whether to user provider(consul/etcd/zookeeper)
  68. *
  69. * @Value(name="${config.service.user.useProvider}", env="${USER_POOL_USE_PROVIDER}")
  70. * @var bool
  71. */
  72. protected $useProvider = false;
  73. /**
  74. * the default balancer is random balancer
  75. *
  76. * @Value(name="${config.service.user.balancer}", env="${USER_POOL_BALANCER}")
  77. * @var string
  78. */
  79. protected $balancer = BalancerSelector::TYPE_RANDOM;
  80. /**
  81. * the default provider is consul provider
  82. *
  83. * @Value(name="${config.service.user.provider}", env="${USER_POOL_PROVIDER}")
  84. * @var string
  85. */
  86. protected $provider = ProviderSelector::TYPE_CONSUL;
  87. }

连接池配置

每个服务连接池,需要定义一个名称,且和熔断器一样,缺省使用类名。

  1. /**
  2. * the pool of user service
  3. *
  4. * @Pool(name="user")
  5. */
  6. class UserServicePool extends ServicePool
  7. {
  8. /**
  9. * @Inject()
  10. *
  11. * @var UserPoolConfig
  12. */
  13. protected $poolConfig;
  14. }