<!-- If you need to report a security issue please visit https://github.com/apache/dubbo/security/policy -->

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

## Ask your question here
操作步骤如下：
1. k8s环境下，consumer端开启mesh模式
2. consumer端需要调用多个provider
3. provider有应用级注册和接口级注册，并且需要的provider不再同一个namespace下
4. 原有项目存在dubbo2.6与3.1多版本间的相互调用，在开启消费端mesh（dubbo3.1）后，无法调用到2.6的服务提供者

**问题：**

1. 如何实现在一个consumer下，调用多个namespace下的provider，并且provider有应用级注册和接口级注册
2. dubbo3.1消费端在开启mesh后，如何调用版本是2.6的服务提供者
resolveFile();
        ConfigValidationUtils.validateReferenceConfig(this);
        postProcessConfig();
    }
    @Override
    protected void postProcessRefresh() {
        super.postProcessRefresh();
        checkAndUpdateSubConfigs();
    }
    protected void completeCompoundConfigs() {
        super.completeCompoundConfigs(consumer);
        if (consumer != null) {
            if (StringUtils.isEmpty(registryIds)) {
                setRegistryIds(consumer.getRegistryIds());
            }
        }
    }
    /**
     * Figure out should refer the service in the same JVM from configurations. The default behavior is true
     * 1. if injvm is specified, then use it
     * 2. then if a url is specified, then assume it's a remote call
     * 3. otherwise, check scope parameter
     * 4. if scope is not specified but the target service is provided in the same JVM, then prefer to make the local
     * call, which is the default behavior
     */
    protected boolean shouldJvmRefer(Map<String, String> map) {
        boolean isJvmRefer;
        if (isInjvm() == null) {
            // 
            if (StringUtils.isNotEmpty(url)) {