dubbo统一数据模型URL

  URL相信大家都非常熟悉,一般在HTTP协议中,使用URL请求服务器资源,形如:http://192.168.0.112:8080/user/login.do?name=xxx&id=xxx,这个URL可以简化成:protocol://host:port/path?param1=value1&param1=value1&,dubbo也使用类似的URL,用于在扩展点之间传递数据,组成此URL对象的具体参数如下:
 protocol:一般是dubbo中的各种协议 如:dubbo thrift http zk 等等
 username password:用户名 密码
 host port:主机 端口
 path:接口名称
 parameters:参数 key value键值对
最终形成的URL对象如下:
dubbo://192.168.1.7:9090/com.alibaba.service1?param1=value1&param2=value2
下面是此URL对象的构造参数:
com.alibaba.dubbo.common.URL

public URL(String protocol, String username, String password, String host, int port, String path, Map<String, String> parameters) {
        if ((username == null || username.length() == 0) 
                && password != null && password.length() > 0) {
            throw new IllegalArgumentException("Invalid url, password without username!");
        }
        this.protocol = protocol;
        this.username = username;
        this.password = password;
        this.host = host;
        this.port = (port < 0 ? 0 : port);
        // trim the beginning "/"
        while(path != null && path.startsWith("/")) {
            path = path.substring(1);
        }
        this.path = path;
        if (parameters == null) {
            parameters = new HashMap<String, String>();
        } else {
            parameters = new HashMap<String, String>(parameters);
        }
        this.parameters = Collections.unmodifiableMap(parameters);
    }

  dubbo扩展点的实现方法都包含URL对象,这样扩展点可以从URL拿到配置信息,所有的扩展点自己定好配置的Key后,配置信息从URL上从最外层传入。URL在配置传递上即是一条总线。URL中定义各种方法用于获取配置信息,如获取参数的getParameter(String key, long defaultValue)、将字符串转成URL对象的valueOf(String url)、设置参数的setxxx()方法,在扩展点适配类中需要根据接口对象方法上的@Adpative注解中的value值,将其作为key从URL对象中获取具体的值,从文件中加载具体的扩展点实现。


屏幕快照 2018-03-24 下午7.52.14.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1:RPC协议扩展,封装远程调用细节 扩展接口: com.alibaba.dubbo.rpc.Protocol c...
    漫步_2310阅读 6,614评论 0 11
  • 人一旦没有目标,就会时常受环境影响,就像今年4月7月考词汇,考日语的时候就特别带劲,每天都觉得时间不够用,路上,食...
    Spring柴柴阅读 3,101评论 0 0
  • 趁着年轻,趁着有梦,出发吧! 2017.8.7 星期一 晴 一直想用文字把这次的支教记录下来,零零碎碎...
    one尘阅读 4,671评论 6 23
  • 清风拂去烦与愁, 情愫穿透心底忧。 心安是家无风雨, 隐居悠闲少欲求。 (清风明月于十一月二十一号)
    清风明月冯耀杰阅读 3,437评论 1 6