隔离规则通过控制接口或依赖的并发线程数,来保证系统的稳定性。通常适用于应用内部或下游依赖出现不稳定的场景,例如慢SQL、下游应用响应时间变长等。本文介绍如何配置和管理隔离规则。
前提条件
将应用接入AHAS应用防护,具体操作,请参见接入应用方式。
背景信息
当强依赖的方法或接口出现不稳定的时候,可以通过配置并发线程数来限制不稳定的强依赖并发数,起到隔离异常的效果。若运行该请求的响应时间变长,会导致线程的并发数变大。当并发数超过阈值以后,AHAS将拒绝多余的请求,直到堆积的任务完成,并发线程数变少。达到将异常隔离,减小不稳定性的效果。
如何设定并发线程数阈值,可参见以下内容:
- 并发线程数 = 期望QPS*响应时间+冗余量。
- 例如预期的SQL执行时间为20毫秒,预期该请求每秒有20个,并发最大时候是6个,建议并发线程数按照以下逻辑设置:Max(20/1000*20,6)= 6 ,再加上冗余量2 ,则建议并发数阈值设置为8。
- 设置好后,当这个SQL发生死锁或者有性能问题,SQL运行特别慢成为慢SQL时,即使请求不断的进来,也仅仅会占用8个线程,不会因为持续进来的请求(请求也无法在短时间内退出),从而耗光进程的活跃线程。
- 当这个SQL恢复正常后,并发数会迅速减少。当并发数减少至低于预设的阈值时,系统就不会拒绝请求,应用的处理能力也快速的恢复。通过这样的方式,起到了根据响应时间自动调节的效果,隔离了不稳定的应用。
隔离规则配置通常用于强依赖隔离场景,详情请参见强依赖隔离。
功能入口
- 登录AHAS控制台。
- 在AHAS控制台左上角,选择应用接入的地域。
- 在控制台左侧导航栏中选择 。
- 在应用防护页面的应用卡片页签单击目标应用卡片。
- 选择以下任意一种方法新建隔离规则:
- 在左侧导航栏单击应用概览,然后单击页面下方目标接口操作列中的隔离。
- 在左侧导航栏单击接口详情,在接口详情页面单击资源卡片右上角图标,在新建规则对话框中,选择新增隔离规则页签。说明 如果接口中已存在规则,单击图标,在隔离规则页签中创建隔离规则。
- 在左侧导航栏单击规则管理,单击隔离规则页签,在隔离规则页签,单击新增隔离规则。
- 在新增隔离防护规则对话框中配置规则信息 :
- 在选择防护场景页面,修改接口名称,然后单击下一步。
- 在配置防护规则页面,配置防护规则,然后单击下一步。说明 若需对隔离防护规则进行编辑,则直接进入配置防护规则。
- 在配置限流行为页面,新增和选择关联规则,然后单击 。
- 在管理规则页面,状态栏下单击开启。
- 在温馨提示页面,单击确定,开启已配置的防护规则。
常用场景1 保障自身资源充足
当运行该请求的响应时间变长,会导致线程的并发数变大。当并发数超过阈值以后,AHAS将拒绝多余的请求,直到堆积的任务完成,并发线程数变少。达到将异常隔离,减小不稳定性的效果。例如某个SQL执行时间为20毫秒,预期该请求每秒有20个。
在新增隔离防护规则对话框中配置以下规则信息:
- 填写接口名称和来源应用。
- 统计维度选择当前接口。
- 并发数阈值为10。
设置完成后,当这个SQL发生死锁或者存在性能问题时,该SQL运行变慢,成为慢SQL,此时即使请求不断进来,也仅仅会占用10个线程,不会因为持续进来的请求(请求也无法在短时间内退出),从而耗光进程的活跃线程。当这个SQL恢复正常后,并发数会迅速减少。当并发数减少至低于预设的阈值时,系统就不会拒绝请求,应用的处理能力也快速的恢复。通过这样的方式,起到了根据响应时间自动调节的效果,隔离了不稳定的应用。
常用场景2 有一定相关联性的接口
当关联接口被来源应用调用QPS超过阈值时,会对当前接口来源应用的请求进行限流,有一定的相关性的方法来配置规则。例如read_db
和 write_db
这两个资源分别代表数据库读写,write_db
接口优先级更高。
为保证读写资源争抢时,write_db
的接口可以留足资源,可在新增隔离防护规则对话框中配置以下规则信息:
- 接口名称为
read_db
。 - 统计维度选择关联接口。
- 关联接口名为
write_db
。 - 关联接口阈值为10。
这样在write_db
接口被调用QPS超过10次后,会对read_db
接口来自于来源应用的请求进行隔离限流,保证write_db
的足够资源。
常用场景3 针对入口链路来配置隔离规则
从入口处将资源进行分别隔离,以保障更高优先级入口。当callstack入口被来源应用调用QPS数超过阈值时,会对当前接口来自于来源应用的请求进行隔离流控。
在新增隔离防护规则对话框中配置以下规则信息:
- 填写接口名称和来源应用。
- 统计维度选择链路入口。
- 并发数阈值设置为10。
当callstack入口的接口被调用超过10次,当前接口user_test
会对来自于来源应用的请求进行隔离流控。
更多信息
新增隔离防护规则页面参数解释如下:
参数 | 描述 |
接口名称 | 待隔离的资源名称。 |
来源应用 | 该规则针对的来源应用,默认来源应用设为default ,表示不区分来源应用。
重要 来源数目不宜过多,200个以内内存使用量可控,过多则会影响性能。 |
统计维度 | 选择资源调用关系进行隔离流控。
|
并发数阈值 | 资源的并发线程数(即该资源正在执行的线程数)阈值。 |