云原生API网关提供路由级别的重试设置,可以对出错的请求进行自动重试。您可以按需设置重试条件,例如建立连接失败,或者后端服务不可用以及对指定HTTP状态码的响应等进行请求重试。
路由重试条件
当后端服务返回5xx
错误时,云原生API网关按照设置的重试次数对出错的请求自动进行重试。
HTTP协议的重试条件如下:
5xx:如果后端服务返回任何
5xx
响应,或者发生连接断开、重置、读取超时事件,云原生API网关将尝试对出错请求进行重试。说明5xx
包含connect-failure
和refused-stream
的条件。reset:如果发生连接断开、重置、读取超时事件,云原生API网关将尝试对出错请求进行重试。
connect-failure:如果请求是由连接断开导致的出错,云原生API网关将尝试对出错请求进行重试。
refused-stream:如果后端服务以
REFUSED_STREAM
错误代码来重置流,云原生API网关将尝试对出错请求进行重试。retriable-status-codes:如果后端服务响应结果的HTTP状态码匹配上您指定的重试状态码,云原生API网关将尝试对该请求进行重试。
说明只有在重试条件中指定了
retriable-status-codes
,才能使用重试状态码。
gRPC协议的重试条件如下:
cancelled:如果后端gRPC服务的响应头部中的gRPC状态码为
cancelled
,云原生API网关将尝试对该请求进行重试。deadline-exceeded:如果后端gRPC服务的响应头部中的gRPC状态码为
deadline-exceeded
,云原生API网关将尝试对该请求进行重试。internal:如果后端gRPC服务的响应头部中的gRPC状态码为
internal
,云原生API网关将尝试对该请求进行重试。resource-exhausted:如果后端gRPC服务的响应头部中的gRPC状态码为
resource-exhausted
,云原生API网关将尝试对该请求进行重试。unavailable:如果后端gRPC服务的响应头部中的gRPC状态码为
unavailable
,云原生API网关将尝试对该请求进行重试。
配置路由重试策略
登录云原生API网关控制台。
在左侧导航栏,选择API管理,并在顶部菜单栏选择地域。
单击目标API,在API详情页面,单击目标路由名称。选择策略配置页签,然后单击重试。
在重试规则中配置相关参数,然后单击保存。
参数
描述
开启
路由重试策略的启用开关。
开启:网关路由重试策略生效。
关闭:网关路由重试策略失效。
说明关闭重试后,网关内部有默认重试配置,重试次数默认为2次,重试条件默认为
connect-failure
、refused-stream
、unavailable
、cancelled
和retriable-status-codes
。重试次数
设置对出错请求的最大重试次数。重试次数支持设置0~10次,建议不超过2次。
说明重试次数设置为0,表示取消重试。
重试条件
选择合适的重试条件,支持多选。相关内容,请参见路由重试条件。
重试状态码
指定对特定HTTP状态码的响应进行重试,支持配置多种HTTP状态码。
说明重试条件指定
retriable-status-codes
,才能配置重试状态码。重试策略配置完成且开启后,请根据实际业务验证服务重试规则是否生效。