开发者学堂课程【企业级分布式应用服务 EDAS 使用攻略:课时名称】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/359/detail/4204
EDAS 限流降级
内容介绍:
一、限流规则
二、降级规则
限流降级是应用管理功能其一,其主要作用在于保证应用的可用性,为达到这一目的,其包括两部分,即限流规则与降级规则。两个规则的界面都包含一个“应用配置说明”,要先对应用进行修改,才能管理使用该规则。两个规则的应用配置相同,
如下:
(1)引入 pom 包,在 pom 文件中引入两个依赖。
代码如下:
cglib
cglib-nodep
2.2
(或者更新)
org.springframework
org.springframework.aop
2.5.6
(或者更新)
(2)添加接入方式
①为 hsf 限流降级在配置文件中加入以下 bean。代码如下:
class=org.springframework.beans.factory.config.CustomEditorConfigurer">
entrance.HSFSpringProviderBeanRegistrars">
p.sentinel.entrypoint.proxy.TraceMethodInterceptor"/>
com.taobao.hsf.app.springConsumerBean
PeHolder">
traceMethodInterceptor
②为 web 限流,在应用的 web.xml 中添加以下代码(过滤器):
CommonFilter
com.taobao.csp.sentinel.entrypoint.entrace.
CommonFilter
CommonFilter
*.jhtml
CommonFilter
*.jhtml
这些对应用的修改本质上起到对服务的拦截作用,以限流,否则添加的限流规则不起作用。
一、限流规则
1.按照“应用配置说明”修改应用
2.添加限流规则
点击“添加限流规则”,“限流类型”分为“ HSF 限流”与“ HDB 限流”,前者是针对HSF服务进行限流,进而选择“需要限流的借口”“需要限流的方法”(可以是某一方法或全部方法)“被限流的应用”,(可以是某一应用或全部应用)“限流粒度”( QPS 限流或 Thread 限流,根据实际情况选用)。如选用“Thread 限流”,设置“限流阈值”为20,(表示任何应用调用该应用的该服务时,线程一旦超过20,即会限制该应用)点击“确定”,即可添加该限流规则。添加完成后,在添加“应用配置”后重启,该限流规则即可生效。
该规则中选用“ Thread 限流设置”,并设置“限流阈值”为20,表示任何应用调用该应用的该服务时,线程一旦超过20,即会限制该应用,可以有效防止该应用被其上游应用产生不利影响。若不进行限流,该应用可能被多个调用应用拖垮。也就是在保证该应用自身正常运行的情况下支持其他应用的调用。
二、降级规则
1.按照“应用配置说明”修改应用
2.添加降级规则
点击“添加限流规则”,可以选择“需要降级的借口”(服务提供者没有,要针对于服务的调用者)“需要降级的方法”(可以是某一方法或全部方法),并设置“RT阈值(毫秒)”,如默认值“2000”,即2000毫秒后降级,还可以设置“时间窗口(秒)”,如默认值“10”。点击“确定”添加该降级规则。
该降级规则的含义说明:
若应用1 调用了应用2(也可以是多个应用)的服务,若应用2出错(网络速度、应用进程消失等原因)无法再提供服务,应用1在调用10秒后仍未返回,也会出错。而为了保持应用1本身的的可用性,调用10秒后未返回,便直接降级放弃调用。
总结:
限流或降级都是为了确保应用本身的可用性,两者的区别在于前者是针对于调用方的规则限制(即谁调用我,我就对谁采取限制),后者是针对于被调用方的规则限制(即我调用谁,我就对谁采取限制)。其中,对于方法的选择以及数据的设置依照应用的实际需求来定,并通过多次调试优化最终确定。