zoukankan      html  css  js  c++  java
  • dubbo 框架小结

    1. dubbo:protocol

    Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。

    <dubbo:protocol name=“dubbo” port=“9090” server=“netty” client=“netty” codec=“dubbo” 
      serialization=“hessian2” charset=“UTF-8” threadpool=“fixed” threads=“100” queues=“0” iothreads=“9” buffer=“8192” accepts=“1000” payload=“8388608” />

    1.1 payload:默认,provider 和 consumer 传递消息的大小不超过 8M,检查 payload 的调用栈如下:

    1.2 线程池相关

    threadpool:可选(fixed/cached)

    threads:实质是 corePoolSize 和 maximumPoolSize

    queues:线程池队列大小

    1.3

    2. dubbo:reference

    2.1 与人联调时,采用直连方式连接对方主机,会很方便。

    url:dubbo provider 地址

    <dubbo:reference id="hello" interface="com.zhang.HelloService" proxy="jdk" 
        group="a" merger="true" check="true" retries="0"
        url="dubbo://127.0.0.1:20880"/>

     比较下直连和 zk 作为注册中心的区别,

    直连:

    连接 zk 注册中心:

    2.2 负载均衡

    loadbanlance:random(默认),roundrobin,consistenthash,leastactive

    2.3 失败方案

    cluster:常用的有 failover,failfast。failover 失败重试,failfast 只发起一次调用,失败就报错。

    mock 是 cluster 的 wrapper:

    2.4 check 属性

    正常情况下,一个进程既是 consumer,又是 provider,也许它启动时,对应的 provider 还没有,通过设置 check="false",该进程可以正常启动,但是不能调用远程服务。

    只有在调用 appCtx.getBean 时,才会触发 consumer 的 reference,如果在<dubbo:reference>标签中设置 check="false",即使没有 provider,consumer 也能 ref 成功,appCtx.getBean 正常返回。而如果设置 check="true",则会抛出异常。

    那么,check 所起的作用到底是啥?判断网络是否连接,以及是否可写。

    // boolean com.alibaba.dubbo.rpc.protocol.dubbo.DubboInvoker.isAvailable()
    public boolean isAvailable() {
        if (!super.isAvailable())
            return false;
        for (ExchangeClient client : clients){
            if (client.isConnected() && !client.hasAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY)){
                //cannot write == not Available ?
                return true ;
            }
        }
        return false;
    }
  • 相关阅读:
    安装 oracle
    svn 编辑
    软件构架
    liunx操作
    css的样式分类
    简单自己做了一个个人简历
    网页制作之表格,列表
    MYSQL表创建
    linux操作指令 第二部分
    linux操作指令 第一部分
  • 原文地址:https://www.cnblogs.com/allenwas3/p/9041420.html
Copyright © 2011-2022 走看看