服务重试机制可以在应用暂时不可访问或应用内部出现偶发性错误时重新发送请求,通过多次尝试来获取正确的响应信息,提高系统的健壮性。本文介绍如何为多语言应用配置服务重试规则。

注意事项说明

同时配置服务超时和服务重试规则,服务超时的超时响应时间可能会影响实际的重试次数。

举例说明,假设在服务超时页面设置的超时响应时间为1000ms,在服务重试页面设置了触发条件为5xx的重试规则,重试次数为5,再假设应用处理一条请求耗时300ms,则此时的实际运行情况如下图所示,应用会在处理第三次重试时因为时间耗尽而结束重试,直接返回超时错误。注意事项

创建服务重试规则

  1. 登录EDAS控制台
  2. 在左侧导航栏选择微服务治理 > 服务网格
  3. 服务网格左侧导航栏单击服务重试配置
  4. 在顶部菜单栏选择地域,在服务重试配置右侧选择微服务空间,然后单击创建规则
  5. 创建服务重试规则面板中配置相关参数,然后单击确定
    创建服务重试规则edas

    服务重试规则的参数说明:

    参数 描述
    微服务空间 选择地域和所属微服务空间。
    规则名称 服务超时规则的名称。例如:retry-example。
    应用 选择需要配置服务重试规则的应用。
    标签 选择应用的路由标签。
    状态 服务重试规则的启用开关。
    • 打开:创建后即启用,默认打开。
    • 关闭:创建后不启用,如果需要启用,请在服务重试页面目标规则的操作列单击开启
    框架类型 应用的框架类型,默认为服务网格
    流量来源 请求的发起方,即消费者应用,可选择ALL或特定的应用集合。
    说明 当选择特定应用时,只有请求的发起方在指定的应用集合中,才会触发服务重试逻辑。
    最大重试次数 设置请求触发重试时的最大重试次数。
    每次重试的超时响应时间 如果应用的处理时间超过了设定的超时响应时间,则本次重试直接返回超时错误,单位:毫秒。
    说明 如果仍有重试次数,仍可以继续发送请求。
    触发条件 选择触发重试的条件。
    • 5xx:应用返回500-599状态码则进行重试。5xx包含以下四种类型的触发条件:
      • gateway-error:与5xx类似,只针对502,503,504状态码有效。
      • reset:如果应用没有任何响应则进行重试。
      • connect-failure:连接失败(例如超时)后进行重试。
      • refused-stream:服务重置流时进行重试。
    • retriable-4xx:应用返回4xx状态码时进行重试,目前仅支持409。
    服务重试规则配置完成且开启后,请根据实际业务验证服务重试规则是否生效。

相关操作

服务重试规则创建完成后,您还可以编辑规则、根据规则的不同状态关闭规则或开启规则。当不再需要服务重试时,删除规则。