本文介绍如何为部署在Serverless应用引擎(SAE)中的应用配置云原生API网关路由规则,以实现通过统一入口对外部请求进行精细化分发和管理。方案的核心是利用云原生API网关作为流量入口,将满足特定匹配条件的请求转发至后端SAE应用。
业务场景说明
在微服务架构中,应用通常被拆分为多个独立的服务部署在SAE上。为了向外部暴露这些服务,并实现统一的流量管理、安全防护和可观测性,需要一个中心化的入口。例如,一个电商系统需要将所有发往 www.example.com 域名下 /orders 路径的请求,安全、可靠地路由到后端的订单服务。通过为SAE应用配置网关路由,可以精确控制流量的转发逻辑,实现这一目标。
方案架构
方案通过云原生API网关与SAE的集成,构建了一个从公网(或私网)到后端服务的完整请求链路。
工作流程说明
-
客户端向云原生API网关的公网或私网地址发起HTTP或HTTPS请求。
-
网关接收请求后,根据预设的路由规则,对请求的域名、路径、方法、Header等属性进行匹配。
-
当请求成功匹配一条规则后,网关通过集成的服务发现机制(如MSE Nacos或Kubernetes Service)获取后端SAE应用实例的动态IP地址列表。
-
网关从健康的实例列表中选择一个,并将请求转发至该实例。
-
SAE应用处理请求并返回响应,响应经由网关最终回传给客户端。
此架构将流量管理与业务逻辑解耦,由网关负责处理路由、负载均衡、安全策略和流量灰度等通用能力,使后端SAE应用可以更专注于业务实现。
实施步骤
以下步骤将引导完成一条从请求匹配到后端服务转发的完整路由规则配置,并包含验证与排障指导。
1. 创建路由规则
-
访问SAE网关路由页面。
-
选择目标地域和命名空间,然后单击创建网关路由。
-
在创建路由页面,为规则设置一个唯一的路由名称,例如
route-for-order-service。
2. 定义请求匹配条件
此步骤定义了哪些请求应被此规则处理。网关会按照精确度从高到低的顺序匹配规则,成功匹配后即停止。
-
选择网络类型。若要对外提供服务,选择公网;若仅在VPC内部访问,选择私网。
-
在网关类型中选择云原生API网关,并指定一个与SAE应用处于同一VPC下的网关实例。
-
配置域名。选择请求需要匹配的域名,例如
www.example.com。 -
配置路径(Path)。这是路由匹配的核心,支持多种匹配方式。
-
匹配逻辑:路径匹配的优先级为等于 > 前缀是 > 正则匹配。在同等匹配类型下,更长的路径(如
/api/v1)优先级高于更短的路径(如/api)。 -
配置示例:为匹配所有订单相关的请求,可将条件设置为前缀是,路径值为
/orders。
-
-
(可选)更多匹配规则:添加更精细的匹配条件。
-
方法(Method):限制仅处理特定HTTP方法,如
GET或POST。 -
请求头(Header):基于请求头进行匹配,例如
version=v2。 -
请求参数(Query):基于URL查询参数进行匹配,例如
channel=web。
-
3. 配置后端服务目标
定义请求在匹配成功后应被转发到哪个SAE应用。
-
选择服务来源。这必须与后端SAE应用的服务注册发现方式保持一致。
-
MSE Nacos:适用于使用Nacos进行服务注册与发现的微服务应用。
-
K8s Service:适用于通过Kubernetes Service进行服务发现的容器化应用。
-
-
选择使用场景。对于标准路由,选择单服务。
-
在后端服务中,选择目标SAE应用的应用名称和对应的服务名称。服务端口通常会自动读取。
若后端服务中应用列表为空,检查页面顶部选择的命名空间是否与应用所在命名空间一致。创建路由时所选命名空间必须与应用命名空间相同,网关实例需与该命名空间处于同一地域且使用同一VPC。
4. 配置高级策略(可选)
通过高级配置可以提升服务的健壮性和灵活性。
在高级配置区域,可以配置以下策略:
-
超时时间(秒):设置网关等待后端服务响应的最长时间。建议根据业务场景设置为一个合理的非零值(如30秒),以避免因后端服务响应慢而导致请求长时间挂起。设置为0表示永不超时,这在生产环境中存在风险。
-
重试策略:当后端服务调用失败时,网关可以自动重试。
-
重试次数:设置最大重试次数。
-
重试条件:选择触发重试的条件,例如
connect-failure(连接失败)或refused-stream(请求被拒绝)。 -
重试状态码:当后端服务返回特定HTTP状态码(如
502,503)时触发重试。注意:重试策略仅应用于幂等请求(如GET,PUT,DELETE),以避免产生非预期的副作用。
-
-
Fallback:配置一个降级服务。当主后端服务完全不可用时,网关会将请求转发到此处指定的Fallback服务,从而实现服务降级,避免将错误直接暴露给客户端。
5. 保存并验证规则
完成所有配置后,保存规则并验证其是否按预期工作。
-
单击页面底部的保存按钮。路由规则下发到网关实例通常需要几十秒时间。
-
验证DNS解析:确保路由规则中配置的域名已通过CNAME记录解析到云原生API网关的公网地址。
-
发送测试请求:使用
curl或其他HTTP客户端工具,向网关发起一个符合匹配条件的请求。
# 假设网关公网IP为 123.45.67.89,域名为 www.example.com,路径为 /orders/100
curl -v -H "Host: www.example.com" http://123.45.67.89/orders/100
-
分析结果:
-
成功(2xx):如果收到来自后端SAE应用的成功响应,说明路由规则已正确生效。
-
404 Not Found:通常表示请求未能匹配任何路由规则。请检查域名、**路径(Path)**等匹配条件是否与请求完全一致。
-
502 Bad Gateway / 503 Service Unavailable:表示网关无法连接到后端服务。请检查SAE应用是否在正常运行,以及服务发现配置是否正确。
-
成本与风险说明
-
成本构成:使用方案会涉及云原生API网关的实例费用和公网流量费用。具体计费标准请参考相关产品文档。
-
主要风险:
-
配置错误:错误的路由、超时或重试配置可能导致业务流量中断或异常。建议在测试环境中充分验证后,再应用到生产环境。
-
性能瓶颈:不合理的正则表达式或过于复杂的路由逻辑可能影响网关性能。应遵循最佳实践,简化匹配规则。
-
结论
通过以上步骤,一条连接外部请求与内部SAE应用的网关路由规则已成功创建并生效。网关现在能够根据定义的条件,将流量精确地转发到指定的后端服务。
此基础路由配置为实现更复杂的流量管理策略(如蓝绿发布、金丝雀发布)奠定了基础,开发者可以基于此进一步探索API网关提供的高级功能。