跳转到内容
搜索文档

更新日志

Cloudflare 的最新更新与改进。

查看 Durable Object 命名空间的总 SQLite 存储指标

现在,您可以在 Cloudflare 仪表板中监控 Durable Object 命名空间随时间变化所使用的 SQLite 总存储量。全新的总存储图表显示了每小时报告的最大存储量。这有助于您识别存储增长、验证数据清理并调查异常使用情况。

总存储图表,显示了一个 Durable Object 命名空间随着时间的推移增长到 260.1 MB 的存储。Go to Durable Objects ↗

该图表仅适用于基于 SQLite 的 Durable Object 命名空间。对于使用旧版键值存储后端的命名空间,它不会显示。不支持按 ID 或名称查看单个 Durable Object 的存储量。

欲了解更多信息,请参阅指标和分析

使用 Queues 订阅 Email Sending 事件

您现在可以通过 Queues 事件订阅 订阅 Email Sending 事件,并在队列中接收出站交易性电子邮件的生命周期事件。每个订阅的作用域仅限于一个发送域——可以是区域顶点(如 example.com),也可以是已验证的发送子域(如 send.example.com)。

发布了六种事件类型:message.deliveredmessage.deferredmessage.bouncedmessage.failedmessage.rejectedmessage.complained。使用它们来跟踪送达率、对退信和投诉做出反应,并驱动抑制或重试逻辑。Email Routing 事件不会发布在此数据源上。

每个事件都包含邮件详细信息、递送状态和 SMTP 响应:

{
	"type": "cf.email.sending.message.delivered",
	"source": {
		"type": "email.sending",
		"zoneId": "023e105f4ecef8ad9ca31a8372d0c353",
		"domain": "example.com"
	},
	"payload": {
		"messageId": "0101018f7d0c4d9a-msg-deadbeef",
		"recipient": "[email protected]",
		"terminal": true,
		"delivery": {
			"status": "delivered",
			"smtpStatusCode": "250"
		}
	}
}

请参阅 事件订阅 以查看所有事件类型和示例有效负载。

已弃用旧版 Workers KV 命名空间 API 路由

截至 2026 年 7 月 15 日,/accounts/{account_id}/workers/namespaces/* 下的旧版 Workers KV API 路由已弃用,并将于 2026 年 10 月 15 日停止工作。请在此日期之前迁移到文档化的 Workers KV API 路由 /accounts/{account_id}/storage/kv/namespaces/*

旧版路由和替换后的路由是可互换的。它们接受相同的请求参数并返回相同的响应负载。要进行迁移,请将 URL 路径从 /workers/namespaces/ 更新为 /storage/kv/namespaces/

您需要做什么

更新任何调用 /accounts/{account_id}/workers/namespaces/ 下路由的集成,以使用 /accounts/{account_id}/storage/kv/namespaces/ 下的等效路由。此迁移是直接的 URL 路径替换 —— 请求参数和响应负载完全相同:

  • GETPOST /accounts/{account_id}/workers/namespacesGETPOST /accounts/{account_id}/storage/kv/namespaces
  • GETPUTDELETE /accounts/{account_id}/workers/namespaces/{namespace_id}GETPUTDELETE /accounts/{account_id}/storage/kv/namespaces/{namespace_id}
  • GET /accounts/{account_id}/workers/namespaces/{namespace_id}/keysGET /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/keys
  • GET /accounts/{account_id}/workers/namespaces/{namespace_id}/metadata/{key_name}GET /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/metadata/{key_name}
  • GETPUTDELETE /accounts/{account_id}/workers/namespaces/{namespace_id}/values/{key_name}GETPUTDELETE /accounts/{account_id}/storage/kv/namespaces/{namespace_id}/values/{key_name}

有关弃用时间线的更多信息,请参阅 API 弃用

R2 Data Catalog 现在支持只读 API 令牌

R2 Data Catalog 现在接受只读 API 令牌,因此仅读取数据的查询引擎和客户端不再需要读写令牌。此前,每个目录操作都需要管理员读写令牌,这意味着只读客户端被授予了超出实际需要的访问权限。

您现在可以根据工作负载对 Iceberg 引擎进行身份验证:

  • 只读操作(例如列出命名空间、加载表和查询数据)可使用管理员只读令牌(R2 Data Catalog 读取和 R2 存储读取)。
  • 写入操作(例如创建或删除表以及提交事务)继续需要管理员读写令牌。

这让您可以遵循最小权限原则——例如,为向表写入数据的管道使用读写令牌,为 R2 SQLDuckDBPyIceberg 等查询引擎使用只读令牌。

请注意,目录颁发的凭证继承用于身份验证的令牌的 R2 存储权限。为确保对底层数据的只读访问,请将 R2 存储权限也限定为只读。

有关选择和创建正确令牌的详细信息,请参阅对 Iceberg 引擎进行身份验证

R2 Data Catalog 压缩现在优化清单文件

R2 Data Catalog 是直接内置于 R2 的托管 Apache Iceberg 目录,现在作为压缩的一部分自动优化清单文件。

清单文件跟踪组成 Iceberg 表的数据文件。随着表积累了许多小型或碎片化的清单,查询引擎在查询规划期间必须读取更多元数据,这会导致查询变慢,甚至在扫描任何数据之前就已如此。

当压缩运行时,R2 Data Catalog 现在会按分区重写和聚簇清单文件作为尽力而为的预处理步骤。这可以整合碎片化的清单,减少查询引擎必须打开的清单数量,并降低元数据 I/O 开销。已经聚簇良好的表将被跳过,因此该操作仅在能带来收益时才运行。

对于已启用压缩的表,此功能自动生效——无需任何配置更改。

如需更多信息,请参阅表维护

新的 Durable Object 命名空间必须使用 SQLite 存储后端

如果您的账户中尚无基于键值 (KV) 后端的 Durable Object 命名空间,您将无法再创建新的此类命名空间。新的 Durable Object 命名空间必须使用 SQLite 存储后端。自 2024 年该后端正式商用 (GA) 以来,我们一直推荐所有新的 Durable Objects 使用该后端。

通过 new_sqlite_classes 迁移创建一个新类:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "migrations": [
    {
      "tag": "v1",
      "new_sqlite_classes": [
        "MyDurableObject"
      ]
    }
  ]
}
[[migrations]]
tag = "v1"
new_sqlite_classes = ["MyDurableObject"]

基于 SQLite 的 Durable Objects 与键值后端具有同等的功能特性——包括键值存储 API——并且还支持关系型 SQL 查询以及 时间点恢复 (PITR),可将对象存储恢复到过去 30 天内的任意时间点。

如果您尝试在受影响的账户上创建新的基于键值的命名空间(使用 new_classes 迁移),部署将失败并显示以下错误:

Creating new key-value backed Durable Object namespaces is no longer supported on this account. Please create a namespace using a `new_sqlite_classes` migration instead.

此更改仅影响尚未开始使用键值存储后端的账户。拥有至少一个现有基于键值命名空间的账户目前仍可创建新的命名空间,而 Workers 免费计划一直以来仅支持基于 SQLite 的 Durable Objects。这是向将 SQLite 作为 Durable Objects 单一存储后端迈出的更广泛一步,为未来现有基于键值对象的迁移路径做准备。

欲了解更多信息,请参阅 Durable Objects 迁移

R2 Data Catalog 在手动删除数据前发出警告

R2 Data Catalog 是直接内置于 R2 存储桶的托管 Apache Iceberg 目录。Iceberg 通过元数据文件树追踪您的数据,因此每次插入、更新和删除都必须通过目录事务进行。在目录外手动添加、修改或删除对象可能会留下指向不再存在的文件的指针,使表损坏成难以恢复的不一致状态。

为帮助防止此类情况,R2 仪表板和 Wrangler 现在会在您尝试对启用 Data Catalog 的存储桶执行手动删除操作时发出警告。

仪表板

当您尝试从启用 R2 Data Catalog 的存储桶中删除对象时,仪表板会显示一个警告,解释该操作可能使目录处于无效状态,并提供正确删除数据的文档链接。您可以取消操作或选择继续执行。

在启用 Data Catalog 的存储桶中删除对象之前显示的 R2 仪表板警告

Wrangler

Wrangler 现在在运行删除操作前会检查存储桶是否启用了 Data Catalog,并在继续之前发出警告:

Data Catalog is enabled for this bucket. 
Proceeding may leave the data catalog in an invalid state. Continue?

要了解如何安全管理和删除表中的数据,请参阅 R2 Data Catalog 文档

使用 `exports` 声明 Durable Object 类生命周期

Wrangler 配置文件中全新的声明式 exports 字段取代了用于管理 Durable Object 类生命周期的命令式 migrations 数组。您无需再编写带有唯一标签的有序迁移步骤列表,而是声明 Worker 导出的每个 Durable Object 类,Cloudflare 会将其与已部署的内容进行对比,以确定需要创建、重命名还是删除哪些 Durable Object 状态。

在使用旧版迁移时,将 ChatRoom 重命名为 Room 需要保留这两个标记的步骤:

Before — legacy migrationsjsonc
{
	"migrations": [
		{ "tag": "v1", "new_sqlite_classes": ["ChatRoom"] },
		{
			"tag": "v2",
			"renamed_classes": [{ "from": "ChatRoom", "to": "Room" }],
		},
	],
}

而使用 exports,您只需将 Room 声明为当前类,并将 ChatRoom 标记为已重命名:

After — declarative exportsjsonc
{
	"exports": {
		"ChatRoom": {
			"type": "durable-object",
			"state": "renamed",
			"renamed_to": "Room",
		},
		"Room": { "type": "durable-object", "storage": "sqlite" },
	},
}

每个条目都以类名作为键。state 字段承载生命周期(默认为 created——活动类——以及墓碑(tombstone)状态 deletedrenamedtransferred,和用于跨 Worker 传输的接收状态 expecting-transfer)。

与旧版 migrations 数组相比的关键改进:

  • 无需迁移标签。 当前的 exports 映射是唯一的真实数据源——无需维护 v1v2v3 条目的历史链。
  • 结构化的部署输出。 Wrangler 会在创建、更新、删除、重命名或传输 Durable Object 类时进行报告。它还会识别可安全删除的陈旧配置条目。没有更改或通知的部署不会打印此输出。
  • 零停机重命名和传输模式是一等公民。 墓碑(Tombstones)可以与代码中仍然存在的源类共存,从而实现 三次部署重命名四次部署跨 Worker 传输,在滚动部署期间不会出现运行时错误。
  • 跨 Worker 安全性。 当您删除或重命名类时,Cloudflare 会列出您账户中其绑定(binding)仍引用该命名空间的其他所有 Worker,以便您在更改生效前重新部署它们。

使用旧版 migrations 数组的现有 Workers 仍可照常工作,无需任何更改。要过渡到 exports,请参阅迁移指南。在单个 Worker 中,exportsmigrations 是互斥的。

欲了解完整的参考信息,请参阅 Durable Object 类导出

降低向量变更的端到端延迟

我们大幅提升了 Vectorize 预写日志(WAL)的吞吐量。因此,向量变更变为可查询的端到端延迟显著降低:中位延迟从 2 分钟降至 30 秒以内,p99 延迟从 5 分钟降至 2 分钟以内。

Vectorize p99 WAL 批次端到端延迟改善

这意味着插入、upsert 和删除操作将更快地反映在查询结果中,提升语义搜索、推荐和检索增强生成(RAG)工作负载的数据新鲜度。您无需更改代码或配置即可受益于此改进。

有关更多信息,请参阅 Vectorize 文档

在仪表板中跟踪 Workers 和 Durable Objects 的内存使用情况

您现在可以使用 Workers 指标(Metrics)选项卡中新增的 Memory Usage(内存使用情况) 图表,监控您的 WorkersDurable Objects 在多次调用中消耗了多少内存,图表按 P50、P90、P99 和 P999 百分位数进行了细分。

内存使用情况图表显示了带有部署标记的 P50、P90、P99 和 P999 百分位数

内存使用情况测量的是每次调用时的 V8 isolate 内存,受限于 每个 isolate 128 MB 的限制 —— 单个 isolate 可以处理许多并发请求并在它们之间共享内存。

使用内存使用情况图表可以:

  • 跟踪内存趋势 —— 在导致 Exceeded Memory(超出内存)错误之前,发现可能表明存在内存泄漏的渐进式内存增加。
  • 与部署关联 —— 图表上的部署标记可帮助您确定新版本是否引入了内存回归。
  • 合理调整您的 Worker 规模 —— 了解您的基准内存占用量,以及在达到 128 MB 限制之前您还有多少余量。

对于 Durable Objects,内存使用情况反映了对象保存的内存中状态(类属性、缓存、活动的 WebSocket 连接),该状态在多次调用之间保持不变,直到对象被休眠或逐出。在逐出、休眠或崩溃时,此状态不会保留,因此请将任何重要内容持久化保存到存储中。

要查看内存使用情况,请打开您的 WorkerDurable Object 命名空间Metrics(指标) 选项卡。对于 Durable Objects,您可以按 DO ID 或名称进行过滤,以深入查看特定对象的内存使用情况。您还可以通过 GraphQL Analytics API 使用 workersInvocationsAdaptive 数据集以编程方式查询内存使用情况 —— 从 quantiles.memoryUsageBytesP50quantiles.memoryUsageBytesP999 的字段以字节为单位返回百分位数。

对于本地内存调试,您还可以使用 DevTools 剖析内存以获取堆快照并识别导致高内存占用的特定对象。

Durable Objects 新增 `us` 管辖区(Jurisdiction)

Durable Objects 现在支持 us 管辖区(jurisdiction),允许您创建仅在美国境内运行并存储数据的 Durable Objects。当您需要将 Durable Object 的计算和存储保留在美国境内以满足数据驻留要求时,请使用 us 管辖区。

像使用任何其他管辖区一样,创建一个受限于 us 管辖区的命名空间:

// Worker
export default {
	async fetch(request, env) {
		const usSubnamespace = env.MY_DURABLE_OBJECT.jurisdiction("us");
		const stub = usSubnamespace.getByName("general");
		return stub.fetch(request);
	},
};

Workers 仍可从世界任何地方访问受限于 us 管辖区的 Durable Objects。管辖区限制仅控制 Durable Object 本身在何处运行和持久化数据。

如需查看支持的管辖区的完整列表,请参阅数据位置 — 限制 Durable Objects 至特定管辖区

使用新的 cloudflare:test 辅助函数测试 Durable Object 逐出(eviction)

@cloudflare/vitest-pool-workers 包现在包含了从 cloudflare:test 导出的 evictDurableObjectevictAllDurableObjects 测试辅助函数。

这些辅助函数允许您测试 Durable Object 在逐出发生时的行为,模拟闲置 Durable Object 从内存中逐出的实际生产生命周期。

有关更多背景信息,请参阅 Durable Object 的生命周期

import { evictDurableObject, evictAllDurableObjects } from "cloudflare:test";
import { env } from "cloudflare:workers";

const id = env.COUNTER.idFromName("my-counter");
const stub = env.COUNTER.get(id);

// 逐出特定 stub 所指向的 Durable Object 实例
await evictDurableObject(stub);

// 关闭 WebSockets 而不是将它们休眠
await evictDurableObject(stub, { webSockets: "close" });

// 逐出当前在可逐出命名空间中运行的所有 Durable Objects
await evictAllDurableObjects();

这些辅助函数在 @cloudflare/[email protected] 及更高版本中可用。

请在 测试 API 参考测试 Durable Objects 指南中了解更多信息。

针对 Regional Services 的 Regionalized IP Bindings

Regional Services 现在支持 Regionalized IP Bindings,让您能够针对通过 Bring Your Own IP (BYOIP) 引入 Cloudflare 的前缀在 IP 层实现流量区域化。

Regional Hostnames 是按主机名对流量进行区域化,而 Regionalized IP Bindings 允许您将来自前缀之一的 CIDR 绑定(binding)到某个区域 —— 这非常适合地址映射部署以及任何您通过 IP 而非主机名寻址的服务。然后,Cloudflare 会在 TLS 终止后,仅在该区域的数据中心内处理发往这些地址的流量。

Regionalized IP Bindings 需要 Regional Services 和 Regional Services for BYOIP 的授权。请联系您的账户团队以启用它们。

要开始使用,请参阅 Regionalized IP Bindings

新增亚太地区位置提示:apac-ne 和 apac-se

Durable Objects 现在支持两个针对亚太地区的新位置提示:apac-ne(东北亚)和 apac-se(东南亚)。当您希望在亚太地区内进行更细粒度的托管放置,而不是使用更宽泛的 apac 提示时,请使用 apac-neapac-se

像使用任何其他 locationHint 一样使用这些新提示:

// 东北亚(日本、韩国等)
const stubNE = env.MY_DURABLE_OBJECT.get(id, { locationHint: "apac-ne" });

// 东南亚(新加坡、印度尼西亚等)
const stubSE = env.MY_DURABLE_OBJECT.get(id, { locationHint: "apac-se" });

如果您的用户分布在整个亚太地区,现有的 apac 提示仍是正确的选择。只有当您的流量明显集中在某一个子区域,且您希望将该受众的往返时间降至最低时,才使用 apac-neapac-se。默认行为以及我们通常建议的做法是,除非绝对需要,否则不添加位置提示,这将在尽可能靠近发起请求的地方创建 Durable Object 以减少延迟。

与所有位置提示一样,这些都是尽力而为的建议。Cloudflare 会将 Durable Object 放置在附近的数据中心,而不一定是提示的确切位置。

如需查看支持的提示的完整列表,请参阅数据位置 — 提供位置提示

出站连接使 Durable Objects 保持存活

现在,通过 connect() 或出站 WebSocket 创建的活动出站连接在持续期间,Durable Objects 将保持存活。此前,即使对象具有打开的出站连接,Durable Object 也会在 70-140 秒无入站流量后被逐出,而这在使用 TCP 或出站 WebSocket 从大型语言模型 (LLM) 流式传输响应时是一种常见模式。

通过此更改,每个活动的出站连接都可以防止被逐出。一旦所有出站连接关闭,在 Durable Object 被逐出之前将适用标准的 70-140 秒空闲窗口。

更改前:流式传输连接因逐出而中断

时间线显示 Durable Object 在最后一次入站请求后 70-140 秒被逐出,在出站连接仍处于打开状态时中断了进行中的 LLM 流

更改后:活动的出站连接使 Durable Object 保持存活

时间线显示由于活动连接使 Durable Object 保持存活,相同的出站流顺利完成,空闲窗口仅在连接关闭后才开始

如果您正在 Cloudflare 上构建智能体(Agent),这一点尤为重要。在调用模型时从 LLM 流式传输 Token 的智能体,或者通过出站连接执行长时间运行的任务的智能体,现在会在该连接持续期间保持存活,而不是在中途被逐出。

限制:

  • 每个出站连接最多可使 Durable Object 保持存活 15 分钟。15 分钟后,该连接将不再防止逐出(连接本身将继续运行),并恢复标准逐出规则
  • Durable Object 现有的每个账户实例限制仍然适用。

欲了解更多信息,请参阅 Durable Object 的生命周期

创建 PlanetScale Postgres 和 MySQL 数据库,统一记入您的 Cloudflare 账户账单

作为一个按需付费(pay-as-you-go)客户,您可以从 Cloudflare 创建 PlanetScale Postgres 和 MySQL 数据库,并通过您的 Cloudflare 账户结算 PlanetScale 数据库的使用费用。Cloudflare 合约客户将能够在 7 月份将 PlanetScale 的使用额度添加到其合约中,因此如果有兴趣,请联系您的 Cloudflare 账户团队。

从 Cloudflare 仪表板创建 PlanetScale 数据库,以体验针对区域数据访问进行了优化的全球分布式 Workers。

Go to Create a PlanetScale database ↗用户到 Workers、Hyperdrive 缓存、连接池和 PlanetScale 的请求流。

从 Cloudflare 创建的 PlanetScale 数据库通过 HyperdriveWorkers 协同工作。Hyperdrive 管理数据库连接池和查询缓存,因此您可以将 PlanetScale 用作 Workers 应用程序的集中式关系数据库,而无需更改数据库驱动程序、对象关系映射 (ORM) 库或 SQL 工具。

PlanetScale 的使用情况将在每个计费周期以美元总额的形式显示在您的 Cloudflare 发票上,价格遵循 PlanetScale 的标准定价。您可以通过 PlanetScale 的仪表板自检每个数据库的计费使用情况。

当您从 Cloudflare 仪表板创建 PlanetScale 数据库时,您将获得相同的 PlanetScale 开发人员体验,包括开发分支、查询洞察以及针对 Agent 的 Model Context Protocol (MCP) 服务端支持。

要开始使用,请参阅 PlanetScale Postgres and MySQL with Hyperdrive

按对象 ID 或名称筛选 Durable Objects 指标

现在,您可以在 Cloudflare 仪表板中,按单个 Durable Object 的 ID名称 筛选 Durable Objects 命名空间的 指标 选项卡。此前,指标图表仅显示聚合的命名空间级数据,因此很难隔离特定对象的行为。

Go to Durable Objects ↗已按 ID 筛选为单个对象的 Durable Objects 指标选项卡,按调用状态显示每个对象的请求和错误。

开始在筛选器中输入 ID 或名称,然后从自动完成下拉列表中选择匹配项。自动完成仅显示在选定时间范围内有调用的对象,因此未出现的对象在该时间窗内未被调用。这并不一定意味着该对象已被删除。页面上的每个图表都会更新,以仅反映所选的对象。这使得在调试高流量对象、错误激增或意外存储使用时,更容易识别和调查单个 Durable Object。清除筛选器可返回命名空间级指标。

指标由 GraphQL Analytics API 提供支持,因此适用标准的分析行为,例如摄取延迟和采样

欲了解更多信息,请参阅指标和分析

计费使用量和预算警报现已集成到产品侧边栏中

按需付费(Pay-as-you-go)客户现在可以直接从 Workers & PagesD1R2Workers KVQueuesVectorizeDurable ObjectsContainers 的产品概览页面查看计费使用量并创建预算警报。新的侧边栏小组件显示了当前时期的支出和账单周期日期范围,同时还提供了一个用于创建预算警报的按钮。

该小组件提取与计费使用量仪表板相同的数据,并与您的账单周期(或免费计划中的当前日期)保持一致,因此数据与您的发票相符。目前尚不支持 Enterprise 合约账户。

Durable Objects 产品侧边栏中的计费使用量小组件,显示当前时期的支出和按服务细分的明细

选择 **Create budget alert(创建预算警报)**会以内联方式打开预算警报流程,以便您在查看使用量的同一位置设置美元阈值。预算警报适用于您在所有产品上的账户级别总支出,而不仅仅是您创建该警报的产品页面。

有关更多信息,请参阅基于使用量的计费文档

D1 迁移通过 `migrations_pattern` 支持嵌套布局

现在,您可以使用新的 migrations_pattern D1 绑定(binding)配置,将 wrangler d1 migrations apply 指向嵌套的迁移布局——例如由 Drizzle 生成的布局(migrations/0001_init/migration.sql):

{
	"d1_databases": [
		{
			"binding": "DB",
			"database_name": "my-database",
			"database_id": "<UUID>",
			"migrations_dir": "migrations",
			"migrations_pattern": "migrations/*/migration.sql",
		},
	],
}

migrations_pattern 是一个用于发现迁移文件的 Glob 模式(相对于您的 Wrangler 配置文件)。它的默认值是 ${migrations_dir}/*.sql,因此现有项目无需任何修改即可继续运行。每个迁移的名称都会以相对于 migrations_dir 的路径记录在 migrations 表中。

欲了解更多信息,请访问 D1 的 迁移文档

R2 Data Catalog 定价公告

R2 Data Catalog 是直接内置于 R2 存储桶的托管 Apache Iceberg 数据目录,可被 Spark、Snowflake 和 DuckDB 等任何 Iceberg 兼容引擎查询。R2 Data Catalog 现在已公布目录操作和表压缩的定价,此外还有标准的 R2 存储和操作费用。

计费尚未启用。在开始对 R2 Data Catalog 使用量收费之前,我们将提前至少 30 天通知。

定价基于两个维度:

  • 目录操作:每百万次操作 $9.00,适用于创建表、读取表元数据和更新表属性等元数据请求。
  • 压缩:每处理 1 GB 数据 $0.005,每处理 100 万个对象 $2.00。这些费用仅在为表启用自动压缩时产生。

两个维度均包含月度免费套餐:100 万次目录操作、10 GB 压缩数据处理量和 100 万个压缩对象处理量。

有关完整定价详情和计费示例,请参阅 R2 Data Catalog 定价

R2 Data Catalog 获得专属仪表板体验

R2 Data Catalog 是直接内置于 R2 存储桶的托管 Apache Iceberg 数据目录。它公开标准 Iceberg REST 目录接口,因此您可以将 SparkSnowflakeDuckDBR2 SQL 等查询引擎连接到 R2 中的数据。

R2 Data Catalog 现在在 Cloudflare 仪表板中拥有专属部分,取代了之前嵌入在 R2 存储桶配置中的设置面板。新体验包括:

R2 Data Catalog 仪表板概览
  • 目录概览 — 在一个地方查看所有目录,一览目录请求数量、存储桶大小和表维护状态。
  • 引导式设置向导 — 通过三个步骤创建目录:选择或创建 R2 存储桶、配置表维护(压缩和快照过期)、然后确认。向导会自动创建存储桶并生成服务凭证。
  • 设置管理 — 每个目录的专属设置页面,包含常规配置、表维护、服务凭证和禁用目录等部分。您现在可以直接从仪表板启用和配置快照过期
  • 内置指标 — 每个目录的指标标签上有五个图表:已压缩字节数、已压缩文件数、目录请求数、存储大小和已过期快照数。

要开始使用,请在 Cloudflare 仪表板中转到 R2 Data Catalog,或参阅快速入门指南管理目录文档

针对 Artifacts 生命周期事件的事件订阅

您现在可以接收针对 Artifacts 仓库更改的事件通知,并在 Worker 中使用它们来构建提交驱动的自动化。

这允许您:

  • 在创建或导入仓库时运行自定义工作流。
  • 在代理(agent)向仓库推送代码时启动构建并部署更改。
  • 在每次推送时触发评审代理。

可用事件包括:

  • 账户级别事件artifacts 源)— repo.createdrepo.deletedrepo.forkedrepo.imported
  • 仓库级别事件artifacts.repo 源)— pushedclonedfetched

要了解更多信息,请参阅 Artifacts 文档

Hyperdrive 开放数据库连接池大小指标

您现在可以查看 Hyperdrive 数据库连接池的大小,从而使您能够自诊断连接问题。使用 Cloudflare 仪表板或 GraphQL Analytics API 中的 hyperdrivePoolSizesAdaptiveGroups 数据集,您可以查看每个配置的 waitingClientscurrentPoolSizeavailablePoolSlotsmaxPoolSize

Cloudflare 仪表板中每个 Hyperdrive 配置的 **Metrics(指标)**选项卡中添加了一个新的 **Pool connections(连接池连接)**图表。您可以使用位置选择器,按机场代码钻取托管连接池的特定位置。

Hyperdrive 池大小指标图表

该图表显示:

  • Waiting clients(等待中的客户端):等待可用连接的客户端请求。
  • Open connections(打开的连接):到您数据库的活动连接。
  • Pool size maximum(最大连接池大小):您配置的源站连接限制。

连接争用表现为等待中的客户端激增,或者当打开的连接持续接近最大连接池大小时。如果您的打开连接经常接近此限制,请考虑联系 Cloudflare 以提高您的 Hyperdrive 连接限制

连接池大小指标

GraphQL Analytics API 中的 hyperdrivePoolSizesAdaptiveGroups 数据集为每个 Hyperdrive 配置公开了以下关键连接池指标:

avg 下:

  • currentPoolSize — 当前在池中打开的平均连接数。
  • availablePoolSlots — 可供检出的平均连接池连接数。
  • waitingClients — 等待池中连接的平均客户端数。

max 下:

  • maxPoolSize — 配置的连接池最大大小。
  • currentPoolSize — 池中打开的峰值连接数。
  • waitingClients — 等待池中连接的峰值客户端数。

有关更多信息,请参阅 Metrics and analyticsConnection pooling

R2 Data Catalog 现在通过 GraphQL Analytics API 公开指标

R2 Data Catalog 是直接内置于 R2 存储桶的托管 Apache Iceberg 数据目录,允许您将 R2 SQL、Spark、Snowflake 和 DuckDB 等查询引擎连接到 R2 中的数据。

您现在可以通过 Cloudflare 的 GraphQL Analytics API 查询 R2 Data Catalog 仓库的分析数据。两个新数据集现已可用:

  • r2CatalogDataOperationsAdaptiveGroups 跟踪向目录发出的 Iceberg REST API 请求,包括操作类型、请求时长、HTTP 状态和请求体字节数。使用此数据集可监控跨仓库、命名空间和表的请求量和延迟。
  • r2CatalogTableMaintenanceAdaptiveGroups 跟踪表维护作业,例如压缩和快照过期。使用此数据集可监控作业成功率、处理的文件数、读写字节数和作业时长。

两个数据集均支持按仓库名称、命名空间、表名称和时间范围过滤。它们还包括时长指标的百分位聚合。

有关详细的 Schema 信息和示例查询,请参阅 R2 Data Catalog 指标和分析文档