Apache Kafka®️向けPinterest階層型ストレージ:ブローカー分離アプローチ
Apache Kafkaは、Pinterestでペタバイト単位のデータを処理する一般的なPubSubソリューションとなっています。成長するストレージの需要に対応するために、Tiered Storageが登場し、ブローカーの高価なディスクから安価なリモートストレージにデータをオフロードするデザインパターンです。Kafka 3.6.0+のネイティブTiered Storageは、機能をブローカープロセスと緊密に結びつけるため、柔軟性が制限されます。Pinterestのブローカーと分離されたTiered Storageの実装は、ストレージとコンピュートを分離し、コスト削減、リソースの最適化、簡単な採用など、様々な利点を提供します。分離されたアプローチでは、完了されたログセグメントをリモートストレージにアップロードするSegment Uploader、データ消費のためのTiered Storage Consumer、単位あたりのストレージコストが低いリモートストレージシステムが使用されます。Segment Uploaderは、ブローカーのファイルシステムを監視し、完了されたセグメントを検出し、ZooKeeper(新しいKafkaバージョンではKRaft)を通じてリーダーシップの変更を検出し、データの連続性を確保するために耐久性を処理します。Tiered Storage Consumerは、ブローカーのローカルディスクとリモートストレージの両方からデータを読み取り、ブローカーがデータを提供するコストを削減します。この分離された実装は、2024年5月以降、ブローカーディスクから安価なオブジェクトストレージに約200 TBのデータを日々オフロードしています。これにより、Tiered Storageの採用と機能の更新において、ブローカーのパフォーマンスに影響を与えることなく、柔軟性が提供されます。PinterestがApache Kafkaのために開発したブローカーと分離されたTiered Storageのオープンソース実装が今、利用可能です。