输出文件存储为换行符分隔的 JSON (NDJSON) 格式,这使得从这些文件实现流变得非常简单(提示:将来您也可以使用 R2 作为管道源)。最后,文件名是ULID,因此默认按时间排序。
管道之所以能够如此水平扩展并能快速确认写入,是因为我们构建了它:我们使用持久对象以及每个持久对象中嵌入的零延迟 SQLite存储在写入数据时立即将其持久化,然后再对其进行处理并将其写入 R2。
例如:假设您是一个电子商务或 SaaS 网站,需要提取网站使用情况数据(称为点击流数 白俄罗斯电报号码数据 据),并让您的数据科学团队可以查询这些数据。处理此工作负载的基础设施必须能够应对多种故障情况。提取服务需要在流量突发时保持高可用性。提取数据后,需要对其进行缓冲,以尽量减少下游调用,从而降低下游成本。最后,需要将缓冲的数据传送到接收器,如果接收器不可用,则进行适当的重试和故障处理。此过程的每个步骤都需要在过载时向上游发出背压信号。它还需要扩展:在重大促销或活动期间扩大规模,在一天中较为安静的时段缩小规模。
阅读本文的数据工程师可能熟悉使用 Kafka 及其相关生态系统来处理此类问题的现状。但如果您是一名应用工程师,您可以使用 Pipelines 构建数据采集服务,而无需了解 Kafka、Zookeeper 和 Kafka 流。