Airbnbのキーバリューストアにおける、静的レート制限から適応型トラフィック管理への移行
AirbnbのキーバリューストアであるMusselは、当初、単一のクライアントがシステムを圧倒するのを防ぐために、シンプルなQPSレート制限を使用していました。トラフィックが増加し、複雑になるにつれて、このアプローチはコストの変動とトラフィックの偏りのために不十分であることが判明しました。これに対処するため、Musselは多層的なサービス品質(QoS)システムを実装するように進化しました。最初の層であるリソースアウェアレート制御(RARC)は、リクエストをリクエストユニット(RU)で課金し、行数、バイト数、レイテンシを考慮して、実際のバックエンドコストを反映します。このシステムは、各呼び出し元に対して静的なRUクォータを持つトークンバケットを使用します。2番目の層であるロードシェディングは、容量が逼迫したり、ホットスポットが発生した場合にリアルタイムの保護を提供します。トラフィックの重要度、システムのストレスを示すレイテンシ比率、およびCoDelにインスパイアされたキューイングポリシーを組み合わせます。これにより、高優先度のトラフィックは応答性を維持し、レイテンシが上昇した場合は他のトラフィックを段階的にバックオフさせることができます。3番目の層であるホットキー検出とDDoS防御は、特定のデータをターゲットとする同一のリクエストの急増を特定し、軽減します。リアルタイム検出にはインメモリのtop-kカウンター、ディスパッチャーポッドでのローカルキャッシング、重複するホットキー検索のためにストレージ層に1つのリクエストのみを送信するためのリクエスト合体を使用します。これらの多層的な制御により、Musselはトラフィックの急増を処理し、信頼性を維持する能力が大幅に向上しました。主な教訓としては、概念を検証するための早期の影響の価値、スケーラビリティのためにローカル制御ループを優先すること、および異なるタイムスケールで動作するメカニズムを採用することが挙げられます。この洗練されたQoSスタックは、Musselが極端で変動の激しいトラフィック条件下でも高速で信頼性の高い状態を維持することを保証します。