マスター/スレーブ モードやセンチネル モードとは異なり、クラスターとそれらの最大の違いは、最初の 2 つはフル ストレージであり、大量のメモリを消費しバレル効果があるのに対し、クラスター クラスターは分散ストレージであることです。 、各 Redis には異なるコンテンツが保存されます。
redis-cluster は、合計 16384 個のハッシュ スロットを使用できるように設計されており、各マスターにはスロットの一部が割り当てられます。分散アルゴリズムは次のとおりです: [hash_slot = crc16] (key) mod 16384] {} がある場合は、{} の利用可能なキーを取得します。そうでない場合は、キー全体が利用可能です。クラスターには少なくとも 3 つのマスターと 3 つのスレーブが必要で、各インスタンスは異なる構成ファイルを使用します。
すべての Redis ノードは相互接続されており (PING-PONG メカニズム)、バイナリ プロトコルが内部で使用されて伝送速度と帯域幅が最適化されます。
ノードの障害は、クラスター内のノードの半分以上が障害を検出した場合にのみ有効になります。
クライアントは、中間のプロキシ層を必要とせず、redis ノードに直接接続されます。クライアントはクラスター内のすべてのノードに接続する必要はなく、利用可能なノードに接続するだけです。クラスター内のノード。
redis-cluster はすべての物理ノードを [0-16383] スロットにマップし、クラスターはノードスロット値を維持します
redis-cluster 投票: フォールト トレランス
1. 投票プロセスにはクラスター内のすべてのマスターが関与します。マスター ノードの半分以上が時間の経過とともにマスター ノードと通信する場合 (cluster-node -timeout)、現在のマスターが考慮されます ノードがハングアップします。
2. クラスター全体が使用できなくなるのはいつですか (cluster_state:fail)?
クラスター内のいずれかのマスターがハングアップした場合、現在のマスターにスレーブがなく、クラスターがフェイル状態になる場合も、クラスターのスロット マッピング [0-16383] が不完全な場合にフェイル状態に入ることがわかります。 redis-3.0.0.rc1 は、cluster-require-full-coverage パラメーターを追加しますが、これはデフォルトではオフになっており、クラスター互換性部分を開くことができません。スレーブの有無に関係なく、クラスタはフェイル状態になります。
redis クラスター アーキテクチャでは、redis マスター ノードは通常、読み取りと書き込みの受信に使用されますが、redis スレーブ ノードは通常、バックアップのみに使用され、対応するマスターと同じスロットが設定されています。 If redis-master が予期せず失敗した場合、対応するスレーブは一時的な redis-master にアップグレードされます。
公式 Redis ドキュメントには、redis-cluster アーキテクチャの説明があります。クラスタ アーキテクチャでは、デフォルトでは、通常、読み取りと書き込みの受信に redis-master が使用され、読み取りと書き込みの受信には redis-slave が使用されます。バックアップでは、リクエストがスレーブに対して行われると、対応するキーが処理のために配置されているマスターに直接リダイレクトされます。
ただし、redis-cluster 内の期限切れの可能性のあるデータを読み取ることを気にせず、書き込みリクエストに興味がない場合は、readonly コマンドを使用してスレーブを読み取り可能に設定し、次のコマンドを使用して関連情報を取得することもできます。スレーブ キーは読み取りと書き込みの分離を実現します。
redis の詳細については、
redis 入門チュートリアル列に注目してください。
以上がRedis クラスタークラスターの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。