熔断降级

熔断规则说明

北极星支持在界面配置熔断规则,通过打开北极星控制台,在左侧边栏选择”熔断降级“,可打开熔断降级规则列表,分为3个子TAB,分别配置服务级熔断规则、实例级熔断规则、主动探测规则。

服务级熔断规则

点击新建熔断规则,可以新建服务级熔断规则。服务级熔断规则用于针对特定服务或者服务下的接口进行熔断。

界面各字段含义如下:

基础信息

  • 规则名称:规则名,需全局唯一。
  • 描述:规则的描述信息,用于补充规则的说明。

匹配条件

匹配条件主要用于决定熔断规则的适用范围,客户端根据匹配条件来过滤本地调用所适用的熔断规则。

  • 主调服务:配置作为主调方的服务名和命名空间,可选。不配置则默认对所有的主调生效。
  • 被调服务:配置被调的服务名和命名空间,可选。不配置则默认对所有的被调生效。
  • 被调接口:配置被调的接口名,表明该熔断规则只对调用某个接口的请求生效,可选。接口名支持多种匹配条件,具体匹配条件可参考:字符串匹配方式

另外,熔断规则中所填的服务名,可为任意服务名,不一定需要存在于北极星注册中心。

熔断配置

  • 错误判断条件:可配置多个判断条件,满足任意一个条件的请求会被标识为错误请求。支持返回码和时延2种判断方式。
  • 熔断触发条件:可配置多个触发条件,满足任意一个条件即会触发熔断,资源会进入熔断状态。支持连续错误数和错误率2种触发条件。
    • 连续错误数:统计调用该服务/接口的请求连续错误数,达到阈值即触发熔断。
    • 错误率:统计在周期内调用该服务/接口的请求的错误率,达到阈值即触发熔断。同时为避免少流量下的放大效应,可配置错误率统计的起始请求阈值,请求数超过阈值才进行熔断判断。
  • 熔断粒度:指定熔断的资源粒度,支持接口(按单个接口进行统计并熔断,只熔断单个接口),以及服务(按服务维度来统计并熔断,熔断整个服务)。
  • 熔断恢复:资源触发熔断后,会熔断请求调度到该资源一段时间。随后系统会对资源进行恢复尝试,当满足一定次数的连续成功请求数后,资源会恢复正常状态。用户可配置资源熔断时长(单位秒),以及连续成功请求数。

主动探测

可选择开启主动探测。开启后,主调方会根据被调服务/接口所关联的探测规则,向被调方发起探测,探测结果会与业务调用合并,作为熔断触发或恢复的依据之一。

熔断后降级

可选择开启降级。开启后,当服务/接口被熔断后,访问该服务/接口的请求,会以自定义响应的方式访问给主调方。

  • 返回码:自定义响应的返回码。
  • Headers:自定义响应的消息头,可添加多个。
  • Body:自定义响应的消息体。

是否开启

选择是否开启该规则。

实例级熔断规则

点击新建熔断规则,可以新建实例级熔断规则。实例级熔断规则用于针对特定分组下多个服务实例或者单个服务实例进行熔断。

界面各字段含义如下:

基础信息

  • 规则名称:规则名,需全局唯一。
  • 描述:规则的描述信息,用于补充规则的说明。

匹配条件

匹配条件主要用于决定熔断规则的适用范围,客户端根据匹配条件来过滤本地调用所适用的熔断规则。

  • 主调服务:配置作为主调方的服务名和命名空间,可选。不配置则默认对所有的主调生效。
  • 被调服务:配置被调的服务名和命名空间,可选。不配置则默认对所有的被调生效。
  • 被调接口:配置被调的接口名,表明该熔断规则只对调用某个接口的请求生效,可选。接口名支持多种匹配条件,具体匹配条件可参考:字符串匹配方式

另外,熔断规则中所填的服务名,可为任意服务名,不一定需要存在于北极星注册中心。

熔断配置

  • 错误判断条件:可配置多个判断条件,满足任意一个条件的请求会被标识为错误请求。支持返回码和时延2种判断方式。
  • 熔断触发条件:可配置多个触发条件,满足任意一个条件即会触发熔断,资源会进入熔断状态。支持连续错误数和错误率2种触发条件。
    • 连续错误数:统计调用该实例的请求连续错误数,达到阈值即触发熔断。
    • 错误率:统计在周期内调用该v的请求的错误率,达到阈值即触发熔断。同时为避免少流量下的放大效应,可配置错误率统计的起始请求阈值,请求数超过阈值才进行熔断判断。
  • 熔断粒度:指定熔断的资源粒度,支持实例(按单个实例进行统计并熔断)。
  • 熔断恢复:资源触发熔断后,会熔断请求调度到该资源一段时间。随后系统会对资源进行恢复尝试,当满足一定次数的连续成功请求数后,资源会恢复正常状态。用户可配置资源熔断时长(单位秒),以及连续成功请求数。

主动探测

可选择开启主动探测。开启后,主调方会根据被调服务/接口所关联的探测规则,向被调方发起探测,探测结果会与业务调用合并,作为熔断触发或恢复的依据之一。

是否开启

选择是否开启该规则。

主动探测规则

用户可配置主动探测规则,指定被调服务通过什么方式进行探测,探测结果将作为被调资源熔断及恢复的依据。

界面各字段含义如下:

  • 规则名称:必选。规则名,需全局唯一。
  • 描述:可选。规则的描述信息,用于补充规则的说明。
  • 命名空间:必选。被调服务的命名空间。
  • 服务名称:必选。被调服务的名称。
  • 接口名称:可选。被调接口的名称,支持多种匹配条件,具体匹配条件可参考:字符串匹配方式
  • 周期:可选。探测周期,多久执行一次探测,默认30秒。
  • 超时时间:可选,探测最大超时时间,超时未响应则以最大超时时间作为熔断依据。默认60秒。
  • 端口:可选,探测端口,默认为服务实例端口。
  • 协议:使用什么协议进行探测,会影响接下来的配置,支持HTTP, TCP, UDP 3种协议。
  • HTTP协议配置:
    • 方法:HTTP方法,默认Get。
    • Url:探测Url,默认/。
    • Headers:发送探测包所需的消息头,默认空。
    • Body:发送探测包所需的消息体,默认空。
  • TCP协议配置:TCP默认会采用tcp connect的方式进行探测,用户也可以配置基于报文的探测手段。
    • Send:配置所需发送的TCP二进制报文,格式为0x开头的十六进制字符串,如:0x12ab。
    • Receive:配置所接收的TCP二进制报文,可配置多个,不配置则不校验应答。
  • UDP协议配置:UDP没有连接检测的方式,只能通过基于报文的探测手段。
    • Send:配置所需发送的UDP二进制报文,格式为0x开头的十六进制字符串,如:0x12ab。
    • Receive:配置所接收的UDP二进制报文,可配置多个。

北极星客户端具体使用哪种协议进行探测,与被探测实例的端口协议有关,主要获取的是实例的protocol属性,对应关系如下:

探测协议 服务实例的Protocol
HTTP http, HTTP, tcp/http
TCP tcp, gRPC
UDP udp

客户端接入

附录

字符串匹配方式

熔断规则使用公共的字符串匹配对话框,对话框支持多种匹配模式:

  • 全匹配:实际请求字段与文本框所填内容全匹配,区分大小写。
  • 正则表达式:文本框所填内容为正则表达式,实际请求字段需匹配所填的正则表达式,遵循Google Re2标准。
  • 不等于:实际请求字段不等于文本框所填内容,区分大小写。
  • 包含:文本框所填内容为多段的文本,以逗号来进行分割。实际请求字段内容必须全匹配其中某一段文本。
  • 不包含:文本框所填内容为多段的文本,以逗号来进行分割。实际请求字段内容必须全不等于其中任何一段文本。