美文网首页
分布式服务框架Dubbo总结-0x02 dubbo常用配置

分布式服务框架Dubbo总结-0x02 dubbo常用配置

作者: 量产型炮灰工程师 | 来源:发表于2017-06-06 12:56 被阅读0次

    常用功能配置


    线程池

    <dubbo:protocol name="dubbo" dispatcher="all" threadpool="fixed" threads="100" /><!--指定了线程池和最大线程数,拦截对象是所有-->
    

    详细点这里

    并发控制


    服务提供端
        <!-- 声明需要暴露的服务接口 -->
        <!--executes=10 服务器端并发执行(或占用线程池线程数)不能超过10个-->
        <!--actives="10" 每客户端并发执行(或占用连接的请求数)不能超过10个-->
        <dubbo:service interface="com.m1.dubboFunction.api.IProviderAPI" ref="providerImpl" executes="10" actives="10">
           <!-- <dubbo:method name="dosomething" actives="10"/>--> <!--dosomething方法每客户端并发执行(或占用连接的请求数)不能超过10个-->
        </dubbo:service>
    
    服务消费端
        <!--actives="10" 每客户端并发执行(或占用连接的请求数)不能超过10个-->
        <dubbo:reference id="providerImpl" check="false" timeout="25000" retries="0" actives="10"
                         interface="com.m1.dubboFunction.api.IProviderAPI">
           <!-- <dubbo:method name="dosomething" actives="10"/> --><!--dosomething方法每客户端并发执行(或占用连接的请求数)不能超过10个-->
        </dubbo:reference>
    

    如果<dubbo:service>和<dubbo:reference>都配了actives,<dubbo:reference>优先

    负载均衡策略

    配置loadbalance属性为leastactive,[更多配置](http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1)
    
        <!--actives="10" 每客户端并发执行(或占用连接的请求数)不能超过10个-->
        <!--loadbalance="leastactive" 此Loadbalance会调用并发数最小的Provider(Consumer端并发数)-->
        <dubbo:reference id="providerImpl" check="false" timeout="25000" retries="0" actives="10" loadbalance="leastactive"
                         interface="com.m1.dubboFunction.api.IProviderAPI">
           <!-- <dubbo:method name="dosomething" actives="10"/> --><!--dosomething方法每客户端并发执行(或占用连接的请求数)不能超过10个-->
        </dubbo:reference>
    

    令牌验证

    暂未用到


    然而并没有什么卵用,上面的有些东西,都是可以用注解一行搞掂

    注解


    主要注解有两个:

    • com.alibaba.dubbo.config.annotation.Service
    • com.alibaba.dubbo.config.annotation.Reference

    消费端

    consumer.xml配置
      dubbo:annotation 是自动扫描包,与spring的雷同
    
      <dubbo:application name="dubbo-test-consumer"/>
        <dubbo:registry address="zookeeper://x.x.x.x:2181" />
        <dubbo:protocol name="dubbo" port="21101" />
        <dubbo:annotation package="com.m1.dubboFunction.consumer" />
    
    consumer.java
    @Service
    public class Consumer {
        private Long count = 0L;
        //  @Autowired
        @Reference(version = "1.0.0", actives = 10, loadbalance = "leastactive")//直接采用注解
        private IProviderAPI providerAPI;
    
        //  @Scheduled(cron = "0-59 * * * * ?")//定时
        @Scheduled(fixedDelay = 1000 * 5, initialDelay = 1000)//心跳更新,5000毫秒执行一次,延迟1秒后才执行
        public void doSomething() {
            System.out.println(providerAPI.dosomething("now is " + count, count++));
        }
    }
    
    

    提供端

    provider.xml配置 除扫描包路径和协议端口不同外,其余一致
    ProviderImpl .java
    @Service("providerImpl")
    @com.alibaba.dubbo.config.annotation.Service(executes=10,version = "1.0.0",actives = 10,loadbalance="leastactive")
    public class ProviderImpl implements IProviderAPI {
        public String dosomething(String json, long logId) {
            System.out.println(json);
            return "i finish doing "+json +" where logid=="+logId;
        }
    }
    

    Tip1:虽然注解里面也有registry,application,protocol,但完全不会用...官方文档里面也没有提及
    Tip2:如果启用了version 属性,版本号必须一致,才能调用

    完整Demo点我

    相关文章

      网友评论

          本文标题:分布式服务框架Dubbo总结-0x02 dubbo常用配置

          本文链接:https://www.haomeiwen.com/subject/ugcgfxtx.html