sql >> データベース >  >> NoSQL >> Redis

Redisクラスター/負荷分散

    まず、

    でほとんど作業を行わない場合は、デフォルトの構成を変更できます。

    redis-trib.rb

    関数def check_create_parametersで 。 1つのマスターと1つのスレーブレプリカを設定できます。

    この構成の目的は、フォールトトレランスです。スレーブは読み取りにも使用できます(読み取り専用)。 3つのマスターでは、ハッシュスロットが均等に分散され、負荷分散アルゴリズムを使用して、実際のキーを再分散できます。ノード間でキーを分散する可能性のあるアルゴリズムの手順は次のとおりです(私がテストし、期待どおりに機能します):

    1. マスターの群衆を見つける
    2. 保持しているキーの総数を取得する
    3. マスターノードごとに、ホスト名、ポート、およびキーの数を保存します
    4. キーの分布のバランスをとるために各マスターが保持する必要のあるキーを計算します(クラスターのキーの総数/マスターの数)
    5. キーを取得または付与する必要のあるマスターノードと、キーを取得/取得する必要のあるキーの総数を確認します
    6. マスターがキーを受け取っているか、与えているかに応じて、マスターをソースノードまたはターゲットノードとして特徴付けます。
    7. ソースノードからターゲットノードへの移行を開始します。最初にハッシュスロット、次に関連するキーを使用し、すべてのマスターが同じ量のキーを持つまで繰り返します。

    このアルゴリズムは、応答時間を最小限に抑えるのに役立ちます。意味:

    3つのマスターを使用すると、応答時間を最小限に抑えることができます。 1つのマスターを持つ構成があり、このマスターがたとえば30000の#keysを保持している場合、一度に1000keysを取得する応答時間は、それぞれ15000を保持する2つのマスターを持つ構成からです。

    master1でキーを作成する場合、master2からそのキーに到達(読み取り)しようとすると、MOVEDエラーが発生します。したがって、解決策は、ハッシュスロットを対応するノードにマップするスマートクライアントを作成することです。したがって、master2がリクエストを正しいマスターにリダイレクトする場合にのみ、master2からキーを削除できます。

    お役に立てば幸いです。




    1. IDに基づいて配列オブジェクトを更新しますか?

    2. 配列フィールドがクエリ配列のサブセットであるMongoDBでドキュメントを検索する

    3. Redisにデータベースを1つだけ保存するにはどうすればよいですか?

    4. Debian9へのMemcachedのインストール