创建网关实例

通过云原生API网关实例,可以实现服务暴露、流量管理、安全防护和API全生命周期管理等功能,本文介绍如何创建云原生API网关实例。

基础配置

首次开通,需授权

系统权限策略:

AliyunServiceRoleForNativeApiGw:允许访问ACK、VPC、SLB、MSE等其他云产品服务。

AliyunServiceRolePolicyForNativeApiGwInvokeFC:允许访问函数计算 FC 服务。

  1. 登录云原生API网关控制台,在左侧导航栏单击实例,在实例页面单击创建实例。并在云原生API网关购买页面配置以下参数:

    • 商品类型:支持按量付费包年包月,请参见计费概述查看计费的详细信息。

      • 按量付费:计费以小时为单位,不足1小时按照1小时计算。每小时进行一次结算。

      • 包年包月:计费以月为单位,包年按照12个月计算。

    • 地域:选择网关所在地域。需要与后端服务所在地域相同,创建成功后不支持更改。

    • 网关名称:自定义网关名称,推荐使用环境或环境加业务领域命名,例如test、order-prod等。最大长度为64个字符。

    • 网关规格:请根据实际业务需求进行容量评估后选择节点规格。

      不同节点规格的容量阈值

      以下为不同网关规格下的容量阈值。当网关容量指标处于警戒水位以下时,可以得到完整的SLA保障。对于核心业务,建议将网关容量指标控制在安全水位以下,从而获得更好的稳定性。

      • 安全水位:能够在突发流量增长至双倍的情况下,依然确保网关系统维持高吞吐量和低延迟性能。

      • 警戒水位:当水位达到警戒线以上时,网关的延迟可能会增加,并且在突发流量下可能存在稳定性风险。

      • 单节点部署的网关无法提供SLA保障,仅限测试场景使用。请确保线上业务使用部署了多个节点的网关规格。

      网关规格

      客户端连接数

      HTTPS每秒新建连接

      CPU使用率

      内存使用率

      安全水位

      警戒水位

      安全水位

      警戒水位

      安全水位

      警戒水位

      安全水位

      警戒水位

      apigw.dev.x1

      12000

      24000

      400

      800

      30%

      60%

      75%

      75%

      apigw.small.x1

      24000

      48000

      800

      1600

      30%

      60%

      75%

      75%

      apigw.small.x2

      48000

      96000

      1600

      3200

      30%

      60%

      75%

      75%

      apigw.small.x4

      96000

      192000

      3200

      6400

      30%

      60%

      75%

      75%

      apigw.medium.x1

      192000

      384000

      6400

      12800

      30%

      60%

      75%

      75%

      apigw.medium.x2

      384000

      768000

      12800

      25600

      30%

      60%

      75%

      75%

      apigw.medium.x3

      576000

      1152000

      19200

      38400

      30%

      60%

      75%

      75%

      apigw.large.x1

      768000

      1536000

      25600

      51200

      30%

      60%

      75%

      75%

      apigw.large.x2

      1536000

      3072000

      51200

      102400

      30%

      60%

      75%

      75%

      apigw.large.x3

      2304000

      4608000

      76800

      153600

      30%

      60%

      75%

      75%

      apigw.large.x4

      3072000

      6144000

      102400

      204800

      30%

      60%

      75%

      75%

    • 资源组:选择已有资源组或默认资源组。使用资源组对云账号下的资源做分类分组管理,以组为单元进行权限管理、资源部署、资源监控等,而无需单独处理各个资源。如需创建新的资源组,请单击创建资源组

    • 网络访问类型:支持公网私网公网+私网

      • 公网:公网访问网关时,将会产生相应的公网流量费用,公网流量将基于云数据传输CDT进行统一计费和出账,采用BGP(多线)模式,详情可参考 公网流量

      • 私网:私网无流量费用。

      • 公网+私网:公网访问网关时,将会产生相应的公网流量费用,公网流量将基于云数据传输CDT进行统一计费和出账,采用BGP(多线)模式。访问私网无流量费用。

    • 专有网络:选择网关实例运行所在的专有网络环境。网关所在的VPC与服务所在的VPC需保持一致。

    • 可用区选择:支持自动分配手动选择

      • 自动分配:选择部署网关节点交换机,系统将自动分配两个可用区部署网关节点。

      • 手动选择:手动选择部署网关节点的可用区交换机

  2. 配置完成后,单击立即购买。随后在确认订单页面中,检查云原生API网关配置详情,并单击立即开通

    网关实例创建过程可能需要1~5分钟时间,请您耐心等待。
  3. 在云原生API网关实例页面,查看已创建的网关实例状态。显示运行中,表示网关创建成功。

高级功能

在创建网关实例时,如需利用日志数据进行监控和分析,或需要对请求响应进行压缩,降低网关流量时,请参考如下操作进行配置。其中开启Gzip硬件加速只能在创建网关实例时进行开启,不支持创建后开启,日志服务无限制。

开启Gzip硬件加速

Gzip硬件加速是指通过专用硬件设备来实现数据的快速压缩和解压缩技术。通过将Gzip格式的解压缩任务从CPU卸载到专用硬件设备上,显著提升处理效率并降低CPU负载。

操作步骤

  1. 在云原生API网关购买页面,在完成基础配置的同时,需要进行如下配置完成后单击立即开通

    • 地域:Gzip硬件加速支持的地域为杭州、北京、上海、深圳、乌兰察布、中国香港和新加坡

      目前在支持的地域中,存在部分可用区不支持的情况,具体以产品购买页为准。
    • 网关规格:选择apigw.medium.x1以上规格。

    • Gzip硬件加速:勾选启用Gzip硬件加速。

      image

  2. 实例创建成功后,单击目标实例名称ID/名称,单击左侧导航栏的参数配置,在网关引擎参数区域编辑EnableGzipHardwareAccelerate参数。

    若在购买时未勾选启用 Gzip 硬件加速,则无法开启此配置。
  3. 开启后,需要客户端能够处理Gzip压缩的数据,对于支持的客户端需要在请求头中添加Accept-Encoding: gzip

性能参考

开启Gzip压缩后,与开启前相比能节省多少流量?

在使用 Gzip 进行压缩时,压缩比(即压缩后数据大小与压缩前数据大小的比值)很大程度上受到数据本身的影响。压缩比越低,代表压缩的效果越好,压缩比越高,代表压缩的效果越差。

通常来说:如果数据中存在大量重复模式或结构(如文本中的字母、单词和标点),Gzip 压缩效果会更好,压缩比更低。相反,对于随机性高、熵值大的数据(如图片、视频、已压缩文件等),由于其内部重复性较低,压缩比通常较高,压缩效果有限。

不同的客户由于其业务属性不同,在使用Gzip压缩时的压缩比也有较大差异。根据核心地域内已启用 Gzip 的实例统计,大部分实例的压缩比集中在 10% 到 50% 之间,意味着开启 Gzip 后,这些用户平均可节省 50% 以上的流量。

image

已经开启Gzip的情况下,使用硬件加速可以节省多少实例资源?

开启Gzip硬件加速后,网关将使用专用的硬件设备进行压缩,从而可以节省CPU资源。下面的压测数据对比了在承接相同QPS的流量的情况下,开启Gzip硬件加速的单节点实例,和使用软件Gzip4节点实例之间的CPU消耗。

例如,压缩的数据是一份大小约为120kJSON文本:

QPS

硬件加速gzip/apigw.medium.x1/单节点 CPU消耗

软件gzip/apigw.medium.x1/4节点 CPU消耗

2000

9%

11%

5000

26%

28%

10000

56%

56%

13000

69%

72%

从表格数据中可以看到,开启Gzip硬件加速/单节点CPU消耗与软件Gzip/4节点CPU消耗基本上持平。相当于原本需要4个节点才能承载,开启Gzip硬件加速后仅需要1个节点,可以节省大约75%的实例资源。

开启网关日志投递

如果您需要收集、存储和分析网关运行日志,可以在创建网关实例时开通日志服务(SLS)进行日志分析和大盘监控。

在完成基础配置的同时,勾选使用日志服务(SLS),系统将为您开通日志服务(SLS)并开启网关日志投递功能。

开启日志投递以后,您可在观测分析 > 日志中心查看网关日志。

日志字段说明

字段名

类型

含义

__time__

long

日志产生的时间。

cluster_id

string

购买的网关实例。

ai_log

json

针对LLM API/Agent API/MCP API设计的日志字段,字段格式为json。其他类型的API此字段为空。

  • api: ai api的名称。

  • cache_status: LLM API中开启内容缓存时该字段会反映请求是否命中缓存。

  • consumer: 开启消费者鉴权后,此字段会记录当前请求的消费者身份。

  • fallback_from: LLM API中开启fallback策略时,此字段记录请求从哪一条路由fallback过来。

  • input_token: LLM请求输入token数。

  • llm_first_token_duration: LLM请求首包RT。

  • llm_service_duration: LLM请求整体RT。

  • model: LLM请求的模型名称。

  • output_token: LLM请求输出token数。

  • response_type: LLM请求流式/非流式。

  • safechack_status: LLM请求内容安全检测状态。

  • token_ratelimit_status: LLM请求是否被限流拦截。

authority

string

请求报文中的Host Header。

bytes_received

long

请求的Body大小(不包含Header)。

bytes_sent

long

响应的Body大小(不包含Header)。

downstream_local_address

string

网关Pod地址。

downstream_remote_address

string

连接到网关的Client端地址。

duration

long

请求的整体耗时。包含从网关收到来自下游的第一个字节开始,到发送出最后一个响应字节为止的时间段。单位毫秒。

method

string

HTTP方法。

path

string

HTTP请求中的Path。

protocol

string

HTTP的协议版本。

request_duration

long

从网关收到来自下游的第一个字节开始,到收到来自下游的最后一个字节为止的时间段。单位毫秒。

request_id

string

网关会为每次请求产生一个ID,并放在Headerx-request-id中,后端可以根据这个字段记录并进行排查。

requested_server_name

string

SSL连接时使用的Server Name。

response_code_details

string

提供与响应码相关的额外信息。例如via_upstream表示响应码是由后端服务返回的,route_not_found表示请求没有匹配的路由。

response_tx_duration

long

从网关收到来自上游的第一个字节开始,到给下游发送出最后一个字节为止的时间段。单位毫秒。

route_name

string

路由名。

start_time

string

请求开始时间。格式:UTC。

trace_id

string

Trace ID。

upstream_cluster

string

上游集群。

upstream_host

string

上游IP。

upstream_local_address

string

本地连接上游的地址。

upstream_service_time

long

上游服务处理请求的耗时(毫秒),包括网关访问上游服务的网络耗时和上游服务自身处理耗时两部分。

upstream_transport_failure_reason

string

上游链接失败的原因。

user_agent

string

HTTP Header中的UserAgent。

x_forwarded_for

string

HTTP Header中的x-forwarded-for,通常用来表示HTTP请求端真实IP。

后续步骤