ウッドペッカー
Milvus 2.6では、WoodpeckerがKafkaとPulsarに代わり、専用に構築されたクラウド・ネイティブのライト・アヘッド・ログ(WAL)システムを提供します。オブジェクト・ストレージのために設計されたWoodpeckerは、運用を簡素化し、スループットを最大化し、容易にスケールします。
Woodpeckerの設計目標
クラウド環境における最高のスループット
信頼性の高いリカバリのための耐久性のある追記のみのロギング
ローカルディスクや外部ブローカーを使用しない最小限の運用オーバーヘッド
ゼロディスク・アーキテクチャ
Woodpeckerの中核となるイノベーションは、ゼロディスク・アーキテクチャです:
- 全てのログデータはクラウドオブジェクトストレージ(Amazon S3、Google Cloud Storage、Alibaba OSなど)に保存されます。
- メタデータはetcdのような分散キーバリューストアで管理されます。
- コアオペレーションにおいてローカルディスクに依存しない
ウッドペッカーレイヤー
アーキテクチャ・コンポーネント
標準的なWoodpeckerのデプロイメントには以下のコンポーネントが含まれます:
- クライアント読み書きのリクエストを発行するインターフェース層
- LogStore: ログストア:高速書き込みバッファリング、ストレージへの非同期アップロード、ログ圧縮の管理
- ストレージバックエンドS3、GCS、EFSのようなファイルシステムなど、スケーラブルで低コストのストレージサービスをサポートする。
- Etcd:分散ノード間でメタデータを保存し、ログの状態を調整する。
デプロイモード
Woodpeckerはお客様のニーズに合わせて2つのデプロイメントモードを提供します:
MemoryBuffer - 軽量でメンテナンスフリー
MemoryBufferモードは、Woodpeckerの組み込みクライアントが一時的にメモリに書き込みをバッファリングし、定期的にクラウドオブジェクトストレージサービスにフラッシュするシンプルで軽量なデプロイメントオプションです。このモードでは、メモリバッファはクライアントに直接組み込まれており、S3にフラッシュする前に効率的なバッチ処理を行うことができます。メタデータはetcdを使って管理され、一貫性と協調性を確保する。このモードは、小規模なデプロイメントやパフォーマンスよりもシンプルさを優先する本番環境で、特に書き込みレイテンシの低さが重要でない場合に、バッチを多用するワークロードに最適です。このモードでの書き込みレイテンシは、通常200-500ミリ秒の間である。
ウッドペッカーのメモリモード展開
QuorumBuffer - 低レイテンシ、高耐久性のために最適化されています。
QuorumBufferモードは、リアルタイムな応答性と強力な耐障害性の両方を必要とする、レイテンシ重視の高頻度読み書きワークロード向けに設計されています。このモードでは、Woodpeckerのクライアントは3レプリカのクォーラムシステムと相互作用し、高速書き込みバッファリングを提供し、分散コンセンサスによる強力な一貫性と高可用性を保証します。
クライアントが3つのクォーラムノードのうち少なくとも2つにデータをレプリケートし、通常1桁ミリ秒以内に完了すると書き込みが成功したとみなされ、その後データは長期耐久性のためにクラウドオブジェクトストレージに非同期でフラッシュされます。このアーキテクチャは、ノード上の状態を最小化し、大規模なローカルディスクボリュームを不要にし、従来のクォーラムベースのシステムでしばしば必要とされる複雑なアンチエントロピー修復を回避します。
その結果、一貫性、可用性、迅速なリカバリが不可欠なミッションクリティカルな本番環境に理想的な、合理的で堅牢なWALレイヤーを実現しています。
ウッドペッカーのクォーラムモードの展開
性能ベンチマーク
シングルノード、シングルクライアント、シングルのログストリーム設定におけるWoodpeckerのパフォーマンスを評価するため、包括的なベンチマークを実行しました。KafkaやPulsarと比較したところ、その結果は素晴らしいものでした:
| システム | Kafka | Pulsar | WP Minio | WPローカル | WP S3 |
|---|---|---|---|---|---|
| スループット | 129.96MB/s | 107MB/s | 71MB/s | 450MB/s | 750MB/s |
| 待ち時間 | 58ms | 35ms | 184ms | 1.8ms | 166ms |
コンテキストとして、テストマシンで異なるストレージバックエンドの理論上のスループット限界を測定した:
- MinIO:~110MB/秒
- ローカルファイルシステム:600~750MB/s
- Amazon S3(シングルEC2インスタンス):最大1.1GB/秒
驚くべきことに、Woodpeckerは各バックエンドで可能な最大スループットの60~80%を一貫して達成しました。
パフォーマンスに関する主な考察
- ローカルファイルシステムモード:Woodpeckerは、Kafkaより3.5倍、Pulsarより4.2倍速い450MB/秒を達成し、待ち時間はわずか1.8ミリ秒と超低遅延であるため、高性能なシングルノード展開に最適です。
- クラウド・ストレージ・モード(S3):S3に直接書き込む場合、WoodpeckerはKafkaより5.8倍、Pulsarより7倍速い750MB/秒(S3の理論限界の約68%)を達成しました。レイテンシは166ミリ秒と大きいが、このセットアップはバッチ指向のワークロードに卓越したスループットを提供する。
- オブジェクト・ストレージ・モード(MinIO):MinIOでも、Woodpeckerは71MB/秒(MinIO容量の約65%)を達成しました。この性能はKafkaやPulsarに匹敵しますが、必要なリソースは大幅に少なくなります。
Woodpeckerは特に、順序の維持が重要な同時大量書き込みに最適化されています。また、これらの結果は開発の初期段階を反映したものに過ぎず、I/Oマージ、インテリジェント・バッファリング、プリフェッチにおける現在進行中の最適化により、性能は理論的限界にさらに近づくことが期待されます。
運用上のメリット
Woodpeckerのクラウドネイティブアーキテクチャは、運用面で大きなメリットをもたらします:
- ローカルストレージ管理ゼロ:ディスクボリュームの管理、RAIDの設定、ハードウェアの故障を排除します。
- 自動スケーリング:容量計画を立てることなく、クラウドオブジェクトストレージに合わせてストレージを拡張
- コスト効率:自動階層化と圧縮機能を備えた従量制ストレージ
- 高可用性:クラウドプロバイダの11-9の耐久性と高速リカバリを活用
- シンプルな導入:2つの導入モード(MemoryBuffer/QuorumBuffer)が異なる運用ニーズに対応
- 開発者に優しい:より迅速な環境セットアップと全ての環境で一貫したアーキテクチャ
これらの利点により、Woodpeckerは、運用のシンプルさがパフォーマンスと同じくらい重要な、ミッションクリティカルなRAG、AIエージェント、低レイテンシの検索ワークロードにとって特に価値のあるものとなっています。