swoft-cloud / swoft

🚀 PHP Microservice Full Coroutine Framework
https://swoft.org
Apache License 2.0
5.58k stars 786 forks source link

服务发现:发现指定版本的服务 Provider #358

Closed zhwei closed 5 years ago

zhwei commented 6 years ago
Q A
Bug report? no
Feature request? yes
Swoft version v1.0.21
Swoole version 4.0.3 (by php --ri swoole)
PHP version 7.0.31 (by php -v)
Runtime environment Mac

Details

服务发现部分,从注册中心拉取可用 Provider 时,是否可以根据 service name + version 来获取,现在应该是只能根据 service name 获取,即假定一个服务的 Provider 会部署该服务的所有版本。

我正在尝试将 swoft 和 dubbo 打通,上面这个问题是否有推荐的实现思路。

huangzhhui commented 6 years ago

子类重写ConsulProvider::$registerName即可,或直接通过config.provider.consul.register.name配置进行值设置

zhwei commented 6 years ago

@huangzhhui 注册不同版本的服务容易实现,在 \Swoft\Sg\Provider\ProviderInterface::registerService 里能拿到服务和版本。但在服务发现时,创建 Pool 时只传入了 service name,没有 version

https://github.com/swoft-cloud/swoft-component/blob/a19538c86f537e0e6bd8b19aa9c3031bec6fc5d3/src/rpc-client/src/Service.php#L223-L230

huangzhhui commented 6 years ago

@zhwei 代码上可以看到,可以通过重写 $poolName 属性达到设置 PoolName 的目的