Dubbo可以绕过注册中心直接向指定服务(直接指定目标IP和端口)发起RPC调用,使用直连模式可以方便在某些场景下使用,比如压测指定机器等,Dubbo框架也支持同时指定直连多台机器进行服务调用
//直连服务消费
private T createProxy(Map<String,String> map){
...
if(url != null && url.length() > 0){
String[] us = Constants.SEMICOLON_SPLIT_PATTERN.split(url);
if(us != null && us.length > 0){
for(String u : us){
URL url = URL.valueOf(u);
if(url.getPath() == null || url.getPath().length == 0){
url = url.setPath(interfaceName);
}
if(Constants.REGISTRY_PROTOCOL.equals(url.getProtocol())){
urls.add(url.addParameterAndEncoded(Constants.REFER_KEY,StringUtils.toQueryString(map)));
}else{
url.add(ClusterUtils.mergeUrl(url,map));
}
}
}
}
if(urls.size == 1){
invoker = refprotocol.refer(interfaceClass,urls.get(0));
}
//create service proxy
return (T)proxyFactory.getProxy(invoker);
}