4.30. 并发控制

本文介绍 Dubbo 中的并发控制

配置样例

样例 1

  • 限制 com.foo.BarService 的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个:
    <dubbo:service interface="com.foo.BarService" executes="10" />
    

样例 2

  • 限制 com.foo.BarServicesayHello 方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个:
    <dubbo:service interface="com.foo.BarService">
        <dubbo:method name="sayHello" executes="10" />
    </dubbo:service>
    

样例 3

  • 限制 com.foo.BarService 的每个方法,每客户端并发执行(或占用连接的请求数)不能超过 10 个:
    <dubbo:service interface="com.foo.BarService" actives="10" />
    
  • <dubbo:reference interface="com.foo.BarService" actives="10" />
    

样例 4

  • 限制 com.foo.BarServicesayHello 方法,每客户端并发执行(或占用连接的请求数)不能超过 10 个:
    <dubbo:service interface="com.foo.BarService">
        <dubbo:method name="sayHello" actives="10" />
    </dubbo:service>
    
  • <dubbo:reference interface="com.foo.BarService">
        <dubbo:method name="sayHello" actives="10" />
    </dubbo:service>
    

如果 都配了actives,`` 优先,参见: 11.3. XML 配置

Load Balance 均衡

  • 配置服务的客户端的 loadbalance 属性为 leastactive,此 Loadbalance 会调用并发数最小的 Provider(Consumer端并发数)。
    <dubbo:reference interface="com.foo.BarService" loadbalance="leastactive" />
    
  • <dubbo:service interface="com.foo.BarService" loadbalance="leastactive" />
    
下一节:Dubbo 中服务端和客户端的连接控制