隔离规则用于监控强依赖的应用或服务的线程数,当应用或服务的并发数超过阈值时,EDAS将拒绝多余的请求,直到堆积的线程处理完成,达到信号量隔离的效果。本文介绍如何配置和管理隔离规则。

背景信息

当强依赖的应用或服务出现不稳定的时候,可以通过配置并发线程数隔离原则来限制不稳定的强依赖并发数,隔离强依赖。配置并发线程数隔离原则后,无需再进行线程池隔离,EDAS会控制资源的线程数。当请求数超过阈值时,EDAS将拒绝多余的请求,直到堆积的线程处理完成,以此来达到信号量隔离的效果。

线程数目超出时,设置 快速失败 能够有效地防止受到慢调用的影响。

隔离规则配置通常用于强依赖隔离场景。

新增隔离规则

  1. 登录EDAS控制台
  2. 执行以下操作之一以进入应用详情页面:
    • 在左侧导航栏选择资源管理 > 集群,在集群页面的容器服务K8s集群页签上单击集群ID或名称,然后在集群详情页面的应用列表区域单击具体应用名称。
    • 在左侧导航栏选择应用管理 > 应用列表,在应用列表页面单击具体容器服务K8s集群应用的应用名称。
  3. 在左侧导航栏中选择限流降级 > 规则管理
  4. 单击隔离规则页签,然后在页面右上角单击新增隔离规则
  5. 新增隔离规则对话框中输入以下规则信息并单击新建
    新增隔离规则
    • 接口名称:待隔离的资源名称。
    • 来源应用:该规则针对的来源应用,默认来源应用设为default,代表不区分来源应用。
    • 统计维度:统计QPS的维度。
      • 当前接口:用于接口调用流控。该接口被来源应用调用次数超过阈值时,会对当前接口来自于来源应用的请求进行流控。
      • 关联接口:用于资源争抢情况。当关联接口被来源应用调用QPS超过阈值时,会对当前接口来自于来源应用的请求进行流控。

        例如,read_dbwrite_db这两个资源分别代表读数据库和写数据库。可以为read_db设置限流规则,将关联接口名设置为write_db。当写数据库操作过于频繁时,读数据的请求会被限流。

      • 链路入口:用于应用内Call Stack调用流控情况。当Call Stack入口被来源应用调用QPS数超过阈值时,会对当前接口来自于来源应用的请求进行流控。
    • 并发数阈值:资源的并发线程数(即该资源正在执行的线程数)阈值。
    • 是否开启:打开开关表示启用该规则,关闭开关表示禁用该规则。
    配置成功后,新的隔离规则将出现在隔离规则列表中。

管理规则

规则管理页面的规则列表中,您可以编辑、删除、启用、禁用、批量启用或批量禁用规则。

  • 如需编辑规则,单击目标规则右侧操作列中的编辑,并按需修改规则内容。
  • 如需删除规则,单击目标规则右侧操作列中的删除,并在对话框中单击确定
  • 如需启用或禁用规则,打开或关闭目标规则右侧状态列中的开关,并在对话框中单击确定
  • 如需批量启用或禁用规则,选中要操作的一个或多个规则,单击页面底部的批量启用批量禁用,并在对话框中单击确定