并发控制
Dubbo 中的并发控制
功能说明
多种并发控制功能,帮助用户管理其应用程序和服务。
使用场景
限制从同一客户端到同一服务的并发请求数,防止恶意请求使服务器过载,确保服务的稳定性,并防止使用过多资源。
控制某些服务的最大并发请求数,确保其他服务的资源可用性。系统过载和确保系统稳定性。
允许在需求增加时更平滑地扩展服务。
确保服务在高峰使用时间保持可靠和稳定。
使用方式
样例一
限制
com.foo.BarService
的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个
<dubbo:service interface="com.foo.BarService" executes="10" />
样例二
限制
com.foo.BarService
的sayHello
方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个
<dubbo:service interface="com.foo.BarService">
<dubbo:method name="sayHello" executes="10" />
</dubbo:service>
样例三
限制
com.foo.BarService
的每个方法,每客户端并发执行(或占用连接的请求数)不能超过 10 个
<dubbo:service interface="com.foo.BarService" actives="10" />
或
<dubbo:reference interface="com.foo.BarService" actives="10" />
样例四
限制
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" />
最后修改 March 2, 2023: Fix alias forward in docs3-v2 (#2342) (f16c153559)