流量控制

应用场景

当DSF节点发布服务后,如果不限制访问流量,在实际生产中可能出现对某个服务或方法有过多的连接,消耗过多系统资源,影响服务正常功能。通过流量控制,可以保障服务的访问数,从而保证服务的正常运行。
说明:
超过了流控阈值的访问请求会被拒绝,并返回异常。

  • 流控类型
    DSF提供以下流控方式:
    并发流控:用于控制接入服务的线程数,其中的阈值代表线程数量。
    TPS流控:控制的是单位时间内被调用的次数。

简介

并发流控

一个服务中可以有多个方法,DSF服务端可根据实际需要选择对服务设置并发流控,或对服务中的方法设置并发流控。
服务级流控:服务端流控数通过服务端Spring配置中指定exporter属性“executes”设置,代表并发处理总量。若不设置,则默认为“0”,表示不流控。

  • 服务端流控配置样例如下:
<!-- 表示名为“demoService1”的服务并发访问线程数为100 -->
<!-- -->
<bean id="demoServiceImplBean1" class="com.huawei.openas.dsf.demo.provider.DemoServiceImpl" />
<dsf:exporter name="demoService1" interface="com.huawei.openas.dsf.demo.api.DemoService"
                                      ref="demoServiceImplBean1" executes="100" actives="5" />
  • 方法级流控
    除了可以给服务设置并发访问量,还可以为服务中具体的方法设置并发访问量。

配置方法如下:
通过exporter下的子标签<service:method />指定方法级参数配置(可选操作)。<dsf:method name="sayHello" executes="1" />其中name为方法名(必填);executes为服务端流控,流控值只能在服务端指定有效。

服务端配置代码样例如下:

<bean id="demoServiceImplBean1" class="com.huawei.openas.dsf.demo.provider.DemoServiceImpl" /> 
<dsf:exporter name="demoService2" 
interface="com.huawei.openas.dsf.demo. DemoService" ref="demoServiceImplBean1"> 
<dsf:method name="sayHello" executes="1"/> 
</dsf:exporter>

说明: 如果服务级和方法级同时配置流控值,以方法级流控值为准。

  • 流控参数化
    流控配置的“executes”参数支持参数化。
    说明: 参数的结构为 [服务名].execute , 例如:“demo.service.execute”。

流控可以配置成以下方式:

<dsf:exporter name="manage" interface="com.huawei.usf.manage.Management" ref="managementBean" executes="${demo.service.execute}"> </dsf:exporter> 然后在“dsf.dynamic.properties”中配置“demo.service.execute”的值。

==============================================================

TPS流控

背景信息
一个服务中可以有多个方法,DSF服务端可根据实际需要选择对服务设置并发流控,或对服务中的方法设置并发流控。

全局设置
在“dsf.properties”文件中,配置

服务级流控
服务端流控数通过服务端Spring配置中指定exporter属性“executes”设置,代表并发处理总量。若不设置,则默认为“0”,表示不流控。

服务端流控配置样例如下:

<!-- 表示名为“demoService1”的服务并发访问线程数为100 -->
<!-- -->
<bean id="demoServiceImplBean1" class="com.huawei.openas.dsf.demo.provider.DemoServiceImpl" />
<dsf:exporter name="demoService1" interface="com.huawei.openas.dsf.demo.api.DemoService"
                                      ref="demoServiceImplBean1" executes="100" actives="5" />

方法级流控
除了可以给服务设置并发访问量,还可以为服务中具体的方法设置并发访问量。

配置方法如下:

通过exporter下的子标签<service:method />指定方法级参数配置(可选操作)。

<dsf:method name=“sayHello” executes=“1” />其中name为方法名(必填);executes为服务端流控,流控值只能在服务端指定有效。

服务端配置代码样例如下:

<bean id="demoServiceImplBean1" class="com.huawei.openas.dsf.demo.provider.DemoServiceImpl" /> 
<dsf:exporter name="demoService2" 
interface="com.huawei.openas.dsf.demo. DemoService" ref="demoServiceImplBean1"> 
<dsf:method name="sayHello" executes="1"/> 
</dsf:exporter> 

说明:
如果服务级和方法级同时配置流控值,以方法级流控值为准。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值