啄木鸟

在 Milvus 2.6 中,Woodpecker 使用专门构建的云原生先写日志(WAL)系统取代了 Kafka 和 Pulsar。

Woodpecker 专为对象存储而设计,可简化操作、最大化吞吐量并轻松扩展。

啄木鸟的设计目标

云环境中的最高吞吐量

持久、仅附加日志记录,实现可靠恢复

操作符最少,无需本地磁盘或外部代理

零磁盘架构

Woodpecker 的核心创新是其零磁盘架构:

  • 所有日志数据都存储在云对象存储(如亚马逊 S3、谷歌云存储或阿里巴巴操作系统)
  • 通过分布式键值存储(如etcd)管理元数据
  • 核心操作不依赖本地磁盘

零磁盘架构

架构组件

标准的 Woodpecker 部署包括以下组件:

  • 客户端:用于发出读写请求的接口层
  • 日志存储:管理高速写缓冲、异步上传到存储和日志压缩
  • 存储后端:支持可扩展的低成本存储服务,如 S3、GCS 和 EFS 等文件系统
  • Etcd:跨分布式节点存储元数据并协调日志状态

部署模式

啄木鸟提供两种部署模式,以满足您的特定需求:

MemoryBuffer - 轻便、免维护

MemoryBuffer 模式提供了一种简单、轻量级的部署选项,Woodpecker 的嵌入式客户端会在内存中临时缓冲写入的内容,并定期将其刷新到云对象存储服务。在这种模式下,内存缓冲区直接嵌入客户端,在刷新到 S3 之前实现高效批处理。

元数据使用etcd进行管理,以确保一致性和协调性。

这种模式最适合小规模部署或生产环境中的批量繁重工作负载,它们优先考虑的是简单性而不是性能,尤其是在低写延迟并不重要的情况下。该模式下的写延迟一般在 200-500 毫秒之间。

啄木鸟内存模式部署

QuorumBuffer - 针对低延迟、高耐用性进行了优化

QuorumBuffer 模式设计用于对延迟敏感的高频率读/写工作负载,这些负载既需要实时响应能力,又需要较强的容错能力。

在这种模式下,啄木鸟的客户端与三副本法定人数系统交互,提供高速写缓冲,通过分布式共识确保强一致性和高可用性。

一旦客户端成功地将数据复制到三个法定节点中的至少两个,写入即被视为成功,通常在个位数毫秒内完成,之后数据会异步刷新到云对象存储中,以获得长期持久性。

这种架构最大限度地减少了节点上的状态,消除了对大型本地磁盘卷的需求,避免了传统法定人数系统通常需要的复杂的反熵修复。

因此,对于一致性、可用性和快速恢复至关重要的关键任务生产环境来说,精简、稳健的 WAL 层是理想之选。

啄木鸟法定人数模式部署

性能基准

我们运行了全面的基准测试,以评估 Woodpecker 在单节点、单客户端、单日志流设置下的性能。与 Kafka 和 Pulsar 相比,结果令人印象深刻:

系统 卡夫卡 脉冲星 WP Minio WP Local WP S3
吞吐量 每秒 129.96MB 107MB/s 71MB/s 450MB/s 750MB/s
延迟 58 毫秒 35 毫秒 184 毫秒 1.8ms 166ms

我们在测试机上测量了不同存储后端理论吞吐量的极限,以供参考:

  • MinIO: ~110 MB/s
  • 本地文件系统:600-750 MB/s
  • 亚马逊 S3(单个 EC2 实例):高达 1.1 GB/s

值得注意的是,啄木鸟对每个后端都持续实现了最大可能吞吐量的 60-80%,这对于中间件来说是一个非凡的效率水平。

关键性能洞察

  • 本地文件系统模式:啄木鸟实现了 450 MB/s 的速度,比 Kafka 快 3.5 倍,比 Pulsar 快 4.2 倍,超低延迟仅为 1.8 毫秒,是高性能单节点部署的理想选择。
  • 云存储模式(S3):当直接写入 S3 时,啄木鸟的速度达到 750 MB/s(约为 S3 理论极限的 68%),比 Kafka 高 5.8 倍,比 Pulsar 高 7 倍。虽然延迟较高(166 毫秒),但这种设置为面向批处理的工作负载提供了出色的吞吐量。
  • 对象存储模式(MinIO):即使使用 MinIO,啄木鸟的吞吐量也达到了 71 MB/s,约为 MinIO 容量的 65%。这一性能可与 Kafka 和 Pulsar 相媲美,但对资源的要求要低得多。

Woodpecker 特别针对并发、大容量写入进行了优化,在这种情况下,保持顺序至关重要。这些结果仅反映了开发的早期阶段–I/O 合并、智能缓冲和预取方面的持续优化有望使性能更接近理论极限。

操作符优势

啄木鸟的云原生架构具有显著的操作优势:

  • 零本地存储管理:消除磁盘卷管理、RAID 配置和硬件故障
  • 自动扩展:存储随云对象存储扩展,无需容量规划
  • 成本效益:随用随付存储,自动分层和压缩
  • 高可用性:利用云提供商的 11-9 级耐用性和快速恢复功能
  • 简化部署:两种部署模式(MemoryBuffer/QuorumBuffer)可满足不同的操作符需求
  • 开发人员友好型:环境设置更快,所有环境的架构保持一致

这些优势使 Woodpecker 对关键任务 RAG、人工智能 Agents 和低延迟搜索工作负载特别有价值,在这些负载中,操作符的简易性与性能同等重要。

参考资料

https://milvus.io/docs/zh/woodpecker_architecture.md