使用网关将入口请求路由到多个端点¶
如果要在单个主机名后面公开多个服务端点,可以创建 网关。网关的主机名类似于公共服务端点。有关公共服务端点的更多信息,请参阅 配置服务入口。
网关将 入口请求)从 Snowflake 外部路由到一个或多个服务端点。使用网关,您可以执行以下操作:
服务之间的流量分配: 您可以允许多个服务共享同一主机名。路由是根据为每个服务指定的百分比进行的。这在以下场景中很有用:
A/B 测试场景: 您可以选择更新服务并对其部署,同时保持原始服务运行。为了进行测试,您可以选择将一定比例的传入入口请求路由到更新后的服务以进行测试。
高可用性场景: 您有一个高度可用的服务,比如,该服务部署在两个计算池中,其中每个计算池都是在不同的 放置组 中创建的。您可以选择使用网关来拆分传入的入口请求。
稳定 URL: 每个网关在创建时都会分配一个主机名。主机名在网关对象的生命周期内不会更改。您可以更改网关对象以路由到不同的端点或拥有不同的百分比配置。更改会在一分钟内生效。
以下列表显示了服务端点和网关之间的区别:
浏览器安全性: 服务端点支持 CORS 配置 (corsSettings) 和云服务提供商 (CSP) 标头,以通过外部访问集成进行基于浏览器的访问。网关目前不支持 CORS 或 CSP 标头。
调用方权限: 服务端点支持调用方权限。网关目前不支持调用方权限。
基于角色的访问控制 (RBAC): 使用服务端点时,通过使用 服务角色 来管理访问。使用网关时,通过授予网关对象的 USAGE 权限来管理访问。访问网关的用户不需要底层服务端点的服务角色。
网关路由遵循指定健康端点的相对百分比.有关网关故障转移行为的更多信息,请参阅 网关故障转移行为。
查看以下部分后,您可以创建和更改网关。有关创建网关的信息,请参阅 CREATE GATEWAY。有关更改网关的信息,请参阅 ALTER GATEWAY。
访问控制要求¶
网关的所有者角色必须具有以下权限:
权限 |
对象 |
备注 |
|---|---|---|
CREATE GATEWAY |
架构 |
创建网关时需要。 |
BIND SERVICE ENDPOINT |
账户 |
将服务端点绑定到网关时需要。 |
USAGE |
数据库 |
访问包含网关的数据库时需要。 |
USAGE |
架构 |
访问包含网关的架构时需要。 |
USAGE |
目标端点 |
将流量路由到目标端点时需要。 |
MODIFY 或 OWNERSHIP |
网关 |
更改网关配置时需要。 |
USAGE、MODIFY 或 OWNERSHIP |
网关 |
查看网关规范时需要。 |
备注
列出网关时,Snowflake 仅显示角色拥有 USAGE、MODIFY 或 OWNERSHIP 权限的网关。使用的角色还必须拥有对包含网关的数据库和架构的 USAGE 权限。
对于网关 CREATE、ALTER 和 DROP 操作,请参阅 CREATE GATEWAY、ALTER GATEWAY 和 DROP GATEWAY。
配置¶
默认情况下,每个网关最多有 5 个端点。如果需要更多端点,请联系支持部门,将流量拆分到更多端点。
网关故障转移行为¶
网关故障转移是指当某个端点(端点 A)不可用或无法运行时,网关自动将流量从端点 A 重定向到其他端点的过程。
备注
Snowflake 不会故障转移到拆分到 0% 流量的端点。端点必须拆分到至少 1% 的流量。
遵循可用端点的相对百分比。
如果以下任一条件为 true,则会发生从一个端点(端点 A)故障转移到其他至少拆分到 1% 流量的端点:
端点 A 的服务已暂停,且
auto_resume设置为 false。端点 A 的计算池已暂停。
端点 A 的服务未通过就绪情况探测。最长每 40 秒(缓存刷新率)更新一次。更新时,流量会立即调整,没有过渡期。
端点 A 的服务已删除。
网关所有者角色失去对端点 A 的权限(USAGE 或 OWNERSHIP)。