简化数据流:WarpStream 和 MinIO 指南

虽然Apache Kafka在某种程度上是流式数据的行业标准,但生态系统中也出现了其他选择。考虑到流式处理在现代数据湖仓中的重要性,我们认为应该关注一下这个新兴的“酷孩子”——WarpStream。需要指出的是,WarpStream 在许多方面仍处于“开发中”——它非常酷,非常简单,而且异常具有成本效益,但将其用于关键任务工作负载的生产环境需要谨慎考虑。
在我们开始了解 WarpStream 之前,让我们花一点时间来探讨 Kafka 存在哪些挑战。不可否认,Kafka 在现代流式处理中发挥着基础作用,它彻底改变了实时数据处理,并重塑了我们对数据架构的认识。然而,重要的是要认识到,尽管 Kafka 在十多年前开发时具有开创性,但在实施、管理和成本方面也暴露出了一些复杂性。
WarpStream 是一个与 Kafka 协议兼容的数据流平台,它比 Kafka 更具成本效益,更易于管理。它运行在对象存储之上,并作为一个易于处理的 Go 二进制文件提供。与 Kafka 不同,无需处理本地文件存储、代理平衡或 ZooKeeper 操作。
使用 WarpStream 和 MinIO 创建流式基础设施非常有意义,因为 MinIO 提供了可扩展性、性能和简单性。无论您是处理海量数据集还是复杂的 数据管道,这种工具组合都能简化流式架构的管理。
本教程将指导您完成 WarpStream 和 MinIO 的入门过程。
介绍 WarpStream:一种与 Kafka 兼容的替代方案
WarpStream 的成本可能比在云中使用 Kafka 低至十分之一,尤其是在网络成本可能占总支出很大一部分的大规模部署中。
Kafka 有代理,而 WarpStream 有 Agent。Agent 是无状态的 Go 二进制文件,可以轻松扩展到数据工作负载的大小。WarpStream 仅发现同一可用区内的 Agent,从而进一步降低网络成本。WarpStream 基于与 S3 兼容的存储构建,利用了对象存储提供的所有性能和可扩展性。这使 WarpStream 成为 Kafka 的云原生替代方案,在无需处理 JVM 的复杂性的同时提供可扩展性和成本效益。
但是,为了换取可扩展性、简单性和成本节约,延迟有所增加。WarpStream 目前从生产者到消费者的 P99 延迟约为一秒,而经过良好调整的 Kafka 集群的延迟可以接近两位数毫秒。有几种方法可以缓解这种延迟增加。首先选择现代的高性能与 S3 兼容的存储 (提示,提示,暗示,暗示)。其次,在配置 Agent时减小 batchTimeout
。此选项的默认值为 250 毫秒,但可以降低至 50 毫秒。减小此值会增加对象存储成本,但会降低延迟。最后,WarpStream 的免费层默认配置为更高的延迟和更低的成本。当您准备好生产级层时,WarpStream 的团队非常乐意向您展示如何优化您的部署。
为流式数据配置 MinIO
通过运行以下命令启动用于单节点单驱动器 MinIO 服务器的无根 Docker 容器。
mkdir -p ${HOME}/minio/data
docker run \
-p 9000:9000 \
-p 9090:9090 \
--user $(id -u):$(id -g) \
--name minio1 \
-e "MINIO_ROOT_USER=ROOTUSER" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
-v ${HOME}/minio/data:/data \
quay.io/minio/minio server /data --console-address ":9090"
您可以通过MinIO 控制台或 mc 与 MinIO 交互。以下屏幕截图适用于 MinIO 控制台。
如果您使用的是 MinIO 控制台,请在“访问密钥”导航面板中创建访问密钥。您不能将 MinIO 用户名和密码用于 WarpStream。最佳实践是为每个应用程序提供自己的凭据,以提高安全性并促进使用跟踪和故障排除。
即使在测试时,也应避免手动删除文件从 MinIO 中删除文件,一旦您将其与 WarpStream 连接。如果您这样做,则需要在继续之前创建一个新的 MinIO 存储桶。
WarpStream 入门
作为警告,WarpStream 仍处于开发者预览版。这意味着以下说明可能会随着时间的推移而更改,或者可能更适合开发或测试,而不是生产安装。
首先使用 Docker、安装脚本(仅推荐用于测试目的)或直接下载二进制文件安装 WarpStream Agent。
现在使用此命令运行WarpStream 演示 Agent。
AWS_ACCESS_KEY_ID="h9BTrVjlZiwy6D9Cqo4l" \
AWS_SECRET_ACCESS_KEY="r9LvLGmcDSp1JI9gNVT8kf0OWIx2bOyylOPx3jmr" \
warpstream demo -bucketURL "s3://<your-bucket>?region=us-east-1&s3ForcePathStyle=true&endpoint=http://127.0.0.1:9000"
- AWS_ACCESS_KEY_ID:您必须使用 MinIO 访问密钥,而不是 MinIO 用户名。
- AWS_SECRET_ACCESS_KEY:您的 MinIO 密钥,而不是 MinIO 密码。
- bucketURL:
- <your-bucket>:替换为您的存储桶名称。
- 区域:URL 路径的必需部分。使用 us-east-1。
- ForcePathStyle:设置为 true
- 端点:示例端点适用于通过端口 9000 访问的 Docker 容器中的 MinIO 服务器。替换为您的端点。使用 MinIO S3-API 的端口号,而不是控制台的端口号。
运行 Agent 后,您将能够启动 WarpStream 开发者控制台。链接可以在您运行运行 Agent 命令的终端中找到。
WarpStream 开发者控制台允许您查看正在运行的 Agent 并观察指标。
warpstream demo
命令设置了一个演示帐户,其中包含一个 12 小时后过期的游乐场和一个定期创建小型 JSON 文档的内存内生产者。在完成演示的过程中,您可以查看您的 MinIO 存储桶并观察 WarpStream 创建的文件。
部署到生产环境
当您准备好部署到生产环境时,WarpStream 建议您先联系他们以讨论您的架构(以及他们的商业模式)。话虽如此,以下是一些技巧和窍门,可以帮助您迈出下一步。首先,WarpStream 提供了这些Helm 图表以部署到 Kubernetes。其次,正如您可能预期的那样,在部署到生产环境时,配置运行 Agent 的方式会发生变化。我们已经讨论了一些补偿 WarpStream 更高延迟的方法,但还有其他方法可以提高生产环境的性能。最后,要将 MinIO 部署到生产环境,请参阅部署 MinIO:多节点多驱动器指南。
释放简化数据流的潜力
虽然 Kafka 无疑彻底改变了实时数据处理,但我们也尊重地认识到以 Kafka 为中心的架构带来的挑战,尤其是在复杂性和成本方面。在我们看来,WarpStream 是一种真正有希望的 Kafka 替代方案,它克服了 Kafka 的许多挑战。它具有成本效益且经过简化,并与 MinIO 紧密集成。如果您是本博客的常客,那么您已经知道我们喜欢简单且为对象存储构建的应用程序。虽然 WarpStream 可能会导致延迟略有增加,但它提供了一种高效且现代的数据流解决方案,在构建实时分析和机器学习解决方案时值得考虑。
如果您有任何疑问或需要进一步的帮助,请随时通过电子邮件 hello@min.io 或 Slack联系我们。我们随时准备支持您的数据之旅。