- [x] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.
- [x] I have checked the [FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 2.7.1
* Operating System version: windows10
* Java version: java8

### Steps to reproduce this issue

I run the [code](https://github.com/dubbo-x/example/tree/master/java-dubbo-consul2) by follow steps:

- docker run -p 8400:8400 -p 8500:8500 -p 8600:8600 -d consul
- run provider
- run consumer

### Actual Result

- provider runs ok
- consumer fail with `no provider available`

So I trace the register and subscribe process:

- provider register result show below

![register](https://user-images.githubusercontent.com/16648345/59485088-f48b5c80-8ea6-11e9-9be1-63a02472150d.png)

and we can see it use `url.getServiceInterface()` as service name (this example is `dubbo.DubboService`)

https://github.com/apache/dubbo/blob/6f3a05ca820dc6e3dab127cd9a5daa375709347a/dubbo-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulRegistry.java#L255-L265

- however if we add group and version info, consumer will use `url.getServiceKey()` to find service (this example is `dubbo-x/dubbo.DubboService:0.0.1`), which doesn't equal the service name

https://github.com/apache/dubbo/blob/6f3a05ca820dc6e3dab127cd9a5daa375709347a/dubbo-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulRegistry.java#L141-L144

So consumer will not find the service if we add group and version info. Is my configuration wrong?

return client.getCatalogServices(request);
    }
    private List<HealthService> getHealthServices(Map<String, List<String>> services) {
        return services.keySet().stream()
                .filter(s -> services.get(s).contains(SERVICE_TAG))
                .map(s -> getHealthServices(s, -1, -1).getValue())
                .flatMap(Collection::stream)
                .collect(Collectors.toList());
    }
    private boolean isConsumerSide(URL url) {
        return url.getProtocol().equals(CONSUMER_PROTOCOL);
    }
    private boolean isProviderSide(URL url) {
        return url.getProtocol().equals(PROVIDER_PROTOCOL);
    }
    private List<URL> convert(List<HealthService> services, URL consumerURL) {
        if (CollectionUtils.isEmpty(services)) {
            return emptyURL(consumerURL);
        }
        return services.stream()
                .map(HealthService::getService)
                .filter(Objects::nonNull)
                .map(HealthService.Service::getMeta)
                .filter(m -> m != null && m.containsKey(URL_META_KEY))
                .map(m -> m.get(URL_META_KEY))
                .map(URL::valueOf)
                .collect(Collectors.toList());
    }
    private List<URL> emptyURL(URL consumerURL) {