Skip to main content
QUICK REVIEW

[論文レビュー] LogPlayer: Fault-tolerant Exactly-once Delivery using gRPC Asynchronous Streaming

Mohammad Roohitavaf, Kun Ren|arXiv (Cornell University)|Nov 25, 2019
Advanced Data Storage Technologies被引用数 5
ひとこと要約

本論文では、バックエンドストレージシャーデのための障害耐性があり、順序通りに、正確に一度だけ配信するgRPCベースのシステム、LogPlayerを提示する。非同期ストリーミングと回復メカニズムを用いることで、障害時でも耐久性と正しさを保証し、サブミリ秒未塔の遅延を達成し、正確に一度だけのセマンティクスにおいてApache Kafkaを最大6倍速く上回る。

ABSTRACT

In this paper, we present the design of our LogPlayer that is a component responsible for fault-tolerant delivery of transactional mutations recorded on a WAL to the backend storage shards. LogPlayer relies on gRPC for asynchronous streaming. However, the design provided in this paper can be used with other asynchronous streaming platforms. We model check the correctness of LogPlayer by TLA+. In particular, our TLA+ specification shows that LogPlayer guarantees in-order exactly-once delivery of WAL entries to the storage shards, even in the presence of shards or LogPlayer failures. Our experiments show LogPlayer is capable of efficient delivery with sub-millisecond latency, and it is significantly more efficient than Apache Kafka for designing a WAL system with exactly-once guarantee.

研究の動機と目的

  • 書き込み先行ログ(WAL)から分散ストレージシャーデへトランザクションの変更を、正確に一度だけのセマンティクスで配信する、障害耐性のあるシステムを設計すること。
  • 非同期ストリーミングを用いて、シャーデやLogPlayerの障害に対しても耐性を持ち、順序通りの配信を保証すること。
  • 正確に一度だけの配信を必要とするWALシステムのための、既存のストリーミングプラットフォーム(例:Apache Kafka)の高性能な代替手段を提供すること。
  • 実装前に設計上の欠陥を発見・是正できるように、形式的検証(TLA+)を用いて正しさを検証すること。
  • eBayのGRIT や JanusGraph などの分散システムにおけるスケーラブルで厳密に直列化可能なトランザクション処理を可能にすること。

提案手法

  • LogPlayerはgRPCの非同期ストリーミングを用い、ファッチャコンponentを通じてログサービスからWALエントリを継続的に取得する。
  • エントリはターゲット固有のキューにディスpatchされ、ストレージシャーデごとに独立して処理可能となり、遅いターゲットが他の処理をブロッキングしなくなる。
  • ヘルスモニタが障害または切断されたターゲットを検出し、回復するまでキューイングを一時停止し、欠落したエントリのためのアドホック回復ストリームをトリガーする。
  • 回復ストリームは、欠落したログ範囲のみを再送信するため、ターゲット再起動時にidempotentかつ順序通りの配信が保証される。
  • システムはgRPCのコンプリートキューを活用し、ストリーム処理とネットワークI/Oを分離することで、高スルーレートと低遅延を実現する。
  • 正しさは、障害シナリオをモデル化し、順序通りかつ正確に一度だけの配信が保証されることを証明するTLA+ PlusCal仕様を用いて形式的に検証する。

実験結果

リサーチクエスチョン

  • RQ1gRPCベースのストリーミングアーキテクチャは、分散ストレージシャーデへのWALエントリに対して、障害耐性があり、順序通りに、正確に一度だけ配信できるか?
  • RQ2正確に一度だけのセマンティクスを強制する場合、このようなシステムの性能はApache Kafkaと比べてどうか?
  • RQ3ターゲットの障害後に再処理や欠落エントリが生じないよう、idempotentな回復を保証するにはどのようなメカニズムが必要か?
  • RQ4TLA+による形式的検証は、実装前の段階で微妙な整合性バグを発見・防止できるか?
  • RQ5システム構成(例:ターゲット数、トランザクションサイズ)が、エンドツーエンドの遅延とスケーラビリティに与える影響は何か?

主な発見

  • すべての実験において、LogPlayerは中央値および平均遅延が1ミリ秒未塔を達成し、中央値および平均遅延ともに1ミリ秒未塔である。
  • 10シャーデにまたがる10KBのペイロードを持つトランザクションにおいて、LogPlayerは正確に一度だけのセマンティクスを採用したKafkaに比べ、平均で4倍速い。
  • 99パーセンタイルの尾遅延に関しては、正確に一度だけの保証を採用した場合、LogPlayerはKafkaに比べ6倍速い。
  • 高負荷下でも安定しており、ターゲット数の増加に伴って遅延に顕著な増加が見られず、効率的なスケーリングが可能である。
  • TLA+のモデルチェックにより、初期アーキテクチャに複数の設計上の欠陥が発見され、最終的なアルゴリズムで是正された。
  • WALトピックとシャーデトピックの二段階トピック構造を持つKafkaベースの設計では、バックプレッシャーの欠如により遅延が無制限に増大する傾向があり、生産環境用のWALシステムには不適切であった。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。