AScript原理介绍

AScript有强大的转发规则自定义能力,当ALB控制台上的标准配置无法满足您的业务需求时,可通过简单的可编程脚本AScript来实现功能的二次开发。本文帮助您了解AScript的运行原理、规则模型和规则生效位置。

运行原理

您配置的AScript规则与ALB控制台上的标准配置一样,都是对ALB请求进行处理。

当客户端请求到达ALB监听后,ALB监听会根据您在控制台上配置的转发规则对请求进行处理。以ALB控制台上的标准配置为参照物,AScript可选择在规则处理前或规则处理后生效。

规则模型

AScript的规则模型如下:

  • AScript的规则模型的核心出发点是将不同业务功能隔离至不同规则,以及控制规则的执行流。

  • AScript的规则模型中的每条规则可以各自选择规则的执行位置。

  • AScript的规则模型是以监听维度来进行设计的。

规则执行位置

AScript规则的执行位置包含请求方向规则执行前、请求方向规则执行后和响应方向规则执行前。

  • 请求方向规则执行前:常用文件自动重命名、文件后缀小写化、添加URI前缀和文件后缀名改写等场景。

  • 请求方向规则执行后:常用文件自动重命名、文件后缀小写化、添加URI前缀和文件后缀名改写等场景。

  • 响应方向规则执行前:常用文件自动重命名等场景。

规则执行情况

规则执行情况字段详细说明:

  • 规则ID:标识每条规则的执行情况。

  • 规则ID代表的执行情况:

    规则ID

    执行情况

    -1

    默认值。

    1

    未执行。

    2

    执行命中。

    当规则含有if condition {},且condition为真。

    3

    执行未命中。

    当规则含有if condition {},且condition为假;或规则不包含if condition {}

    4

    执行异常。常见的异常情况如下所示:

    • 400 : not found inline func %s

    • 401 : not found argument %d in %s

    • 402mismatch string type of arg %d in %s

    • 403mismatch number type of arg %d in %s

    • 404mismatch table type of arg %d in %s

    • 405mismatch boolean type of arg %d in %s

    • 406mismatch function type of arg %d in %s

    • 407exceed the exec cputime limit %d-%d us

    • 408exceed the api call limit %s %d-%d times

    • 409exceed the max loops limit %d in m3u8_rewrite

    • 410exceed the max loops limit %d in foreach

    • 499unknown reason

  • 执行耗时:

    • 单位:微秒us。

    • 默认值:-1

    • 前端呈现的耗时区间分布:

      • 第1档:0~100us

      • 第2档:100~500us

      • 第3档:500~1000us

      • 第4档:1000~5000us

      • 第5档:5000~20000us

      • 第6档:20000~50000us

      • 第7档:>50000us

  • AScript规则的中断执行:

    默认值:-1

相关文档