并发控制
Dubbo 中的并发控制
配置样例
样例 1
限制 com.foo.BarService
的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个:
<dubbo:service interface="com.foo.BarService" executes="10" />
样例 2
限制 com.foo.BarService
的 sayHello
方法,服务器端并发执行(或占用线程池线程数)不能超过 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.BarService
的 sayHello
方法,每客户端并发执行(或占用连接的请求数)不能超过 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>
如果 <dubbo:service>
和 <dubbo:reference>
都配了actives,<dubbo:reference>
优先,参见:配置的覆盖策略。
Load Balance 均衡
配置服务的客户端的 loadbalance
属性为 leastactive
,此 Loadbalance 会调用并发数最小的 Provider(Consumer端并发数)。
<dubbo:reference interface="com.foo.BarService" loadbalance="leastactive" />
或
<dubbo:service interface="com.foo.BarService" loadbalance="leastactive" />
最后修改 December 16, 2022: Fix check (#1736) (97972c1)