6章シャーディングされたサービス

5章では、信頼性の向上、冗長性の実現、スケーラビリティの観点から、ステートレスなレプリカを使ったサービスの利点を見てきました。この章では、シャーディングされたサービスを取り上げます。レプリカを使ったサービスでは、各レプリカは完全に同一で、どのリクエストにも対応できました。それに対してシャーディングされたサービスでは、各レプリカ(シャード)は、リクエストの一部に対してのみ応答できます。ロードバランスを行うノード(ルート)が、各リクエストをチェックし、処理を行う適切なシャードに対してリクエストを分散する責任を負います。レプリカを使ったサービスとシャーディングされたサービスの違いを表したのが、図6-1です。

レプリカを使ったサービスとシャーディングされたサービス

図6-1 レプリカを使ったサービスとシャーディングされたサービス

通常、レプリカはステートレスなサービスを作るのに使われ、シャーディングはステートフルなサービスを作るのに使われます。データをシャーディングするのは、保存すべき状態データのサイズが、1台のマシンで処理するには大きすぎることが主な理由です。シャーディングを使うことで、保存すべき状態データが大きくなった時にサービスをスケールできます。

6.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.