- [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: 3.0.3

### Steps to reproduce this issue

1. 启动 provider `-Ddubbo.application.register-mode=instance`
2. 启动 consumer `dubbo.application.service-discovery.migration=FORCE_APPLICATION`
3. 使用 `dubbo admin` 创建 mesh 路由
4. `org.apache.dubbo.registry.client.InstanceAddressURL#getParameters` 不能获取真正的 url 参数，导致路由规则匹配失败
![image](https://user-images.githubusercontent.com/43994656/134940925-96081a6c-500c-4b71-89cc-bbd22d0be296.png)
5. 原因在于 `getProtocolServiceKey()` 方法是从`RpcContext`中获取，此时获取的`protocolServiceKey` 为 null，导致获取的为 instance 参数，实际需要获取对应服务的参数。
```
    public Map<String, String> getParameters() {
        String protocolServiceKey = getProtocolServiceKey();
        if (StringUtils.isEmpty(protocolServiceKey)) {
            return getInstance().getAllParams();
        }
        return getServiceParameters(protocolServiceKey);
    }
```
```
    public String getProtocolServiceKey() {
        return RpcContext.getServiceContext().getProtocolServiceKey();
    }
```

import org.apache.dubbo.rpc.cluster.router.mesh.rule.destination.DestinationRuleSpec;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.destination.Subset;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.DubboMatchRequest;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.DubboRoute;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.DubboRouteDetail;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.VirtualServiceRule;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.VirtualServiceSpec;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.destination.DubboDestination;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.destination.DubboRouteDestination;
import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.match.StringMatch;
import org.apache.dubbo.rpc.cluster.router.mesh.util.VsDestinationGroupRuleListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;
public class MeshRuleRouter implements Router, VsDestinationGroupRuleListener {
    private int priority = -500;
    private boolean force = false;
    private URL url;
    private volatile VsDestinationGroup vsDestinationGroup;
    private Map<String, String> sourcesLabels = new HashMap<>();
    private volatile List<Invoker<?>> invokerList = new ArrayList<>();
    private volatile Map<String, List<Invoker<?>>> subsetMap;
    private volatile String remoteAppName;
    private static final String INVALID_APP_NAME = "unknown";
    public MeshRuleRouter(URL url) {
        this.url = url;
        sourcesLabels.putAll(url.getParameters());