推出数据库流量控制

发布: (2026年3月23日 GMT+8 08:00)
6 分钟阅读

Source: PlanetScale Blog

Postgres 在管理查询流量方面存在根本性的缺口。当意外的大量错误查询或失控的工作负载冲击你的数据库时,Postgres 没有有效的防御手段。它会接受所有抛来的查询,直至性能下降,最糟糕的情况是服务器宕机。

今天我们推出 Database Traffic Control™,这是一套内置于 PlanetScale 的 Postgres 流量管理系统,能够让你对数据库流量实施灵活的预算。使用 Traffic Control,你可以实时决定任意工作负载可以消耗数据库资源的多少,Postgres 将强制执行这些限制。

工作原理

Traffic Control 允许你创建针对查询流量子集的预算。你可以使用匹配不同维度的规则来指定哪些查询属于该预算,包括:

  • 查询模式: 在 Insights 中识别的特定查询指纹
  • 应用名称: 发送查询的应用程序
  • Postgres 用户: 执行查询的数据库用户
  • 自定义标签: 通过 SQL 注释附加到查询的任何元数据(功能名称、优先级、地区、客户层级等)

在确定要纳入预算的查询后,你需要定义预算允许使用的资源限制。你可以对 CPU % 、CPU 爆发限制、后端进程并发数以及每个查询的执行时间等进行上限设定。

预算可以在 warn 模式下运行,以观察哪些查询会被限流,或在 enforce 模式下运行,以主动阻止超出限制的查询。你也可以随时在两种模式之间切换。

PlanetScale Insights 会跟踪针对数据库运行的每个查询的统计信息。当出现问题时,你可以在 Insights 中找到有问题的查询,查看详细的使用数据,并仅需几次点击就设置预算来限制该查询。

用例

Traffic Control 功能强大且灵活。它在多种场景中都有帮助,既可防止也可降低数据库相关事件的影响。

事件响应

一个恶意查询导致 CPU 飙升,降低了整个应用的性能。在 Insights 中找到它,给它的资源使用设定预算,并在团队调查并发布修复的同时,稳定数据库。

基于优先级的流量整形

按优先级(高、中、低)为查询打标签,并为每个层级设定预算。核心功能如身份验证和关键用户流程可以拥有更高的限制,而低优先级的后台任务则被限制,以免抢占资源。

将人类流量与 AI 代理流量隔离

随着 AI 驱动的功能向数据库发起越来越多的查询,Traffic Control 让您设定防护措施,防止自动化流量压垮支撑人类用户体验的查询。

在多租户应用中优先保障付费层

如果您运行多租户应用,可以使用标签按客户或层级识别流量,然后相应设定预算。企业客户在试用用户导致的负载激增期间仍能得到保护。

Source:

入门

Traffic Control 现已对所有 PlanetScale Postgres 数据库开放。要开始使用:

  1. PlanetScale 仪表板 中导航到你的数据库。
  2. 打开 Insights 并进入 Traffic control 选项卡。
  3. 通过选择要强制执行的标签和限制来创建你的第一个预算(注意:可能需要重启数据库)。
  4. 先在 warn 模式下运行,以观察影响,然后再切换到 enforce

为了充分利用 Traffic Control,请在应用程序的查询中添加 sqlcommenter 标签。这将为流量分类提供丰富的维度。

Traffic Control 也可以通过 PlanetScale API 和 CLI 使用,便于在部署流水线中自动创建预算。

观看演示

我们构建了一个演示工具,让您可以亲自尝试并看到实际效果。只需克隆 onramp 并运行:

onramp create

即可自动生成模式、Traffic Control 预算和规则。

您还可以在 Traffic Control 文档 中了解更多信息,或跟随我们的详细功能演练。

Traffic Control 为您的 Postgres 数据库提供了前所未有的能力:自我防御。今天就设置您的第一个预算,摆脱对下一个可能导致数据库宕机的查询的担忧。

0 浏览
Back to Blog

相关文章

阅读更多 »

阻止多租户应用中的数据泄漏

为什么仅靠应用逻辑不足以满足需求:数据库级行级安全的案例 你已经构建了一个强大的多租户 SaaS。你已经实现了 tenant_id f…