Cloudflare K2 发布:无服务器事件流

💡 原文英文,约2000词,阅读约需8分钟。
📝

内容提要

Cloudflare 发布 K2 公测,这是运行在开发者平台上的无服务器持久事件流服务。它基于 R2 对象存储构建分区持久日志,解耦生产者与消费者,支持长期保留、批量读写和并行消费,避免数据丢失。K2 适合高吞吐数据移动与扇出消费,与 Queues、Pipelines 定位不同。公测期免费,未来按生产、消费和存储量计费。

🔎

延伸解读

K2 与 Queues 的定位差异

K2 和 Queues 都提供持久化事件传递,但设计目标不同。Queues 面向单个工作项的异步处理,支持重试、延迟和死信队列等复杂逻辑;K2 则针对高吞吐数据移动、长期保留和扇出消费,以批量方式生产和消费,牺牲消息级重试来换取更高效率。因此,需要精细控制单条消息处理时选 Queues,而大规模数据管道或需要多个独立消费者读取全量数据时,K2 更合适。

基于 R2 的架构取舍

K2 在 R2 对象存储之上实现分区持久日志,利用 R2 的强一致性和高持久性,将复制与共识下推到存储层,从而简化应用层并独立扩展计算与存储。但对象存储不支持追加操作,K2 需在边缘服务内存中累积写入,再批量写入段文件,这导致生产延迟较高,初始版本 P99 生产延迟约 1 秒。这一取舍适合对延迟不敏感但要求高吞吐和持久性的场景。

公测限制与计费预期

K2 目前处于公测阶段,仅面向 Workers Paid 订阅账户,限制为每个流最大 10GB 存储和 30 MB/s 生产速率。公测期间使用免费,但未来计费预计按数据生产 $0.04/GB、消费 $0.04/GB、保留 $0.02/GB/月 收取。若需要更高限制,可通过 Discord 或表单申请。读者在评估成本时,需结合数据保留时间和消费模式,注意长期存储可能带来的持续费用。

消费模式与租约机制

K2 支持两种消费模式:一是通过订阅在多个消费者间分摊工作,实现读取并行;二是为每个消费者创建独立订阅,实现发布/订阅模式,让每个消费者看到全部消息。消费时客户端获得批次租约,默认 5 分钟,可执行 ack 确认处理完成、nack 请求重投或延长租约。这种设计允许消费者按自身节奏处理,避免因下游故障丢失数据,但需要应用正确处理租约超时和重投逻辑。

❓

Q&A

Cloudflare K2 是什么?

Cloudflare K2 是运行在开发者平台上的无服务器持久事件流服务,目前处于公测阶段。它基于 R2 对象存储构建分区持久日志,用于解耦生产者和消费者,支持长期保留、批量读写和并行消费,避免数据丢失。

K2 和 Cloudflare Queues 有什么区别?

Queues 围绕单个工作项跟踪异步任务,支持重试、延迟和死信队列等复杂逻辑;K2 则面向高规模数据移动、长期保留和扇出消费,消息以批量方式生产和消费,因此生产者延迟比 Queues 更高。

K2 和 Basin Pipelines 分别适合什么场景?

当最终结果是将事件写入对象存储或 Iceberg 表时,推荐使用 Pipelines;当需要进行自定义处理或写入其他目标时,推荐使用 K2。

K2 如何保证数据不丢失?

K2 在 R2 对象存储之上实现分区持久日志,R2 提供 11 个 9 的持久性和强一致性 API。事件被接受后不会丢弃,即使消费者长时间停机,数据也会长期保留。

K2 的消费模式有哪些?

K2 支持两种消费模式:一是通过订阅将工作拆分给多个消费者,实现读取并行;二是为每个消费者创建独立订阅(发布/订阅模式),使每个消费者都能看到所有消息。也可以混合使用这两种方式。

K2 公测期间有什么限制和定价?

公测期间,拥有 Workers Paid 订阅的账户可使用 K2,限制为每个流最大 10GB 存储和 30 MB/s 生产速率。公测期间免费,未来预计按数据生产 $0.04/GB、数据消费 $0.04/GB、数据保留 $0.02/GB/月计费。

🏷️

标签

➡️

继续阅读