并发控制
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" />
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 January 19, 2023: New content (#1887) (98b38ee0df)