7章スキャッタ・ギャザー

ここまで、一定時間内に処理できるリクエスト数に対するスケーラビリティ(ステートレスなレプリカを使ったパターン)や、データサイズに対するスケーラビリティ(シャーディングされたデータパターン)のためにレプリカを使うシステムを見てきました。この章では、処理時間をスケールさせるためにレプリカを使う、スキャッタ・ギャザーパターン(scatter/gather†1 pattern)を紹介します。具体的には、スキャッタ・ギャザーパターンを使うとリクエストの処理を並列化でき、直列に処理を行った時よりもずっと早く処理が可能になります。

[†1] 訳注:scatterは撒き散らす、gatherは集めるの意味。

シャーディングされたレプリカを使ったシステムと同じように、スキャッタ・ギャザーパターンは、リクエストを分散するルートとリクエストを処理するリーフから構成される木構造のパターンです。しかし、シャーディングされたレプリカのシステムとは違いスキャッタ・ギャザーパターンでは、リクエストの処理はシステム内の全レプリカに一斉に委ねられます。各レプリカは処理の一部分を行い、ルートに対してその部分的な結果を返します。ルートサーバは、その部分結果を1つの完全なレスポンスにまとめ、クライアントに送ります。スキャッタ・ギャザーパターンの構成図は、図7-1にあります。

スキャッタ・ギャザーは、あるリクエストを扱うのに必要な処理が比較的独立していて、大量にある時に非常に便利です。スキャッタ・ギャザーは、データに対するシャーディングではなく、リクエストを処理するために必要な演算をシャーディングする仕組みだとも言えるでしょう(ただし、データのシャーディングはスキャッタ・ギャザーの1パターンでもあります)。 ...

Get 分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.