redisの3つのクラスタモード
6548 ワード
https://blog.csdn.net/QEcode/article/details/96177521edisには3つのクラスタ方式がある:主従複製、哨兵モード、クラスタ。
一、主従レプリケーション主従レプリケーションとは、あるサーバに別のサーバのデータをレプリケーションさせ、双方のデータが一致して保存されるようにすることであり、レプリケーションされたサーバは主サーバであり、レプリケーションされたサーバは従サーバである.プライマリ・サーバのデータが変更されると、プライマリ・サーバはスレーブ・サーバに通知し、データの一貫性を保存します.
Redis , slaveof 。
(一)旧版の主従レプリケーションは旧版で実現され,Redisのレプリケーション機能は同期とコマンド伝播の2つのステップに分けられる.
。
, , 。
slaveof :
1. sync , bgsave , RDB , 。
2. RDB , 。 , , , 。
3. , , , , 。
欠陥:
: , , 。 , , , 。 , 。
(二)新版の主従レプリケーションは,主従レプリケーション効率の問題を解決するために実装され,Redisは2.8からsyncの代わりにpsyncコマンドを用いる.
psync : 。
, 。
。
:
, , , , , , 。
。
: 。 N , N, N , N。 。
, , , 。
。
, , , , , 。
, , , 。 , , ; , 。
二、Redis哨兵モード(Sentinel)(一)哨兵モード哨兵モードはRedisの高可用性の解決策である:1つ以上のsentinelを通じてsentinelシステムを構成し、任意の複数のプライマリサーバを監視し、これらのプライマリサーバの下のすべてのセカンダリサーバを監視し、監視されたプライマリサーバがオフラインになった後、プライマリサーバの下のサブサーバを自動的に新しいプライマリサーバにアップグレードする.次に、新しいプライマリ・サーバによってコマンドが実行されます.
Sentinel :
(Monitoring): Sentinel 。
(Notification): Redis , Sentinel API 。
(Automatic failover): , Sentinel , , ; , , 。
(二)モニタリング方式は10 sおきに、各哨兵ノードはメインノードとノードからinfoコマンドを送信して最新のトポロジー構造を取得する.
2s, , Sentinel , 。 :Sentinel , , Sentinel , ; Sentinel Sentienel Sentinel , Sentinel, 。
1s, 、 、 ping ( ), 。
(三)メインサーバがラインオフしているかどうかを判断するには、主観ラインオフと客観ラインオフの2つのステップがある.
: Sentinel 。
: Sentinel 。
:
( , ) Sentinel ( +PONG,-LOADING,-MASTERDOWN , ), Sentinel 。
: Sentinel , Sentinel , Sentinel , 。
( ):
Sentinel , Sentinel , ( )。 Sentinel , , 。
: Sentinel , Sentinel , Sentinel , Sentinel 。 Sentinel , 。
(四)リーダーシップSentinel主サーバが主観的にオフラインと判断された場合、この主サーバを監視するすべてのSentinelが協議し、リーダーシップSentinelを選出し、オフライン主サーバに対してフェイルオーバ操作を実行する.
: Sentinel Sentinel , Sentinel。 Sentinel Sentinel , Sentinel, 。
(5)フェイルオーバリーダーSentinelが選択された後、リーダーSentinelはオフラインのプライマリ・サーバに対してフェイルオーバ操作を実行し、この操作には3つのステップが含まれる.
1) , , 。
2) 。
3) , , 。
三つ目は、RedisクラスタRedisクラスタは、スライス方式でデータを保存し、クラスタ内のすべてのデータは16384スロット(slot)に分けられ、データベース内の各データは16384スロットの1つに属し、クラスタ内の各ノードは0〜16384スロットを処理することができる.各データがどのスロットに属するかはhashアルゴリズムによって得られ、16384のスロットにノードが処理されている場合にのみクラスタがオンライン状態になる.スロットにノードが処理されていない限り,クラスタはオフライン状態にある.
(一)スロット割り当てNodeごとに1つのSlotセグメントが平均的に割り当てられ、0-16384に対応し、Slotは繰り返しても欠けてもいけない.そうしないと、オブジェクトが繰り返して格納されるか、格納されない.また,すべてのノードは,他のノード自身が担当するSlotセグメントに通知する.
(二)コマンド実行データベース内の16384個のスロットを割り当てた後、クラスタはオンライン状態にある.クライアントがノードに命令を送信すると,命令を受信したノードは,命令で動作するデータが自分の担当するスロットにあるか否かを判断する.該当しない場合、ノードはMOVEDエラーを返し、クライアントにコマンドを正しいノードに向けるように指示します.クライアントは、MOVEDエラーを受信すると、正しいノードにコマンドを再送信します.
(3)再スライスノードがラインオフまたは加入すると,Slot単位でデータの移行を行う.例えば、Node 1がオフラインになった場合、0-5640のこれらのSlotは平均的にNode 2とNode 3に割り当てられます.Node 2とNode 3自体がメンテナンスしているSlotは、自身に再割り当てされないため、移行中に5641-16384 Slotセグメントの使用には影響しません.
ノードラインオフの判断は,クラスタの半数以上のノードがそのノードがラインオフしたと考えている.
(4)マスタスレーブノードクラスタでは、各ノードが1つのマスタスレーブノード(1つのマスタサーバと複数のスレーブサーバからなる)であることができ、クラスタの高可用性を保障する.
, , Slot , , 。 : , , , 。
: , db0 , , 16 (db0 ~ db15)。
四,三種類のRedis構造の長所と短所(一)主従複製の長所と短所:
1)読み書きが分離され,主ノードによって書き換えが複製され,ノードから読み出され,高同時性に適している.
2)ノードからの同時読み取り能力を高めることができる.
欠点:
1)マスターノードの書き込み能力は限られており,マスタースレーブレプリケーション構造の書き込み同時性はマスターノードの書き込み性能に依存する.
2)オートフォールトトレランスとリカバリ機能がない場合、ホストスレーブのダウンタイムによって一部の読み書き要求が失敗する.
(二)歩哨モードの利点:
1)歩哨モードは主従モードに基づいており,すべての主従の利点,歩哨モードがある.
2)主従は自動的に切り替えることができ、システムが丈夫で、可用性が高い.
欠点:
1)書き込み性能が不足している場合も同様である.
(三)クラスタの利点:
1)歩哨モードと同様に高可用性,読み書き分離の利点がある.
2)各ノードは異なるデータを格納しており,各ノードは読み書きが可能である.他の構造では読み取り性能が高くないという問題を解決した.
欠点:
1)各ノードは1つのサーバ群(1つのプライマリノードと複数のスレーブノード)で構成されており、無駄になる可能性があります.————————————————————本文はCSDNブロガー「QEcode」のオリジナル文章で、CC 4.0 BY-SAの著作権契約に従い、原文の出典リンクと本声明を転載してください.テキストリンク:https://blog.csdn.net/QEcode/article/details/96177521
分散アーキテクチャを使用して読み書き速度を向上
Redis分散アーキテクチャには、3つの重要な手段があります.
主従シンクロ哨兵モードRedis Clusterクラスタ
プライマリ・スレーブ同期機能を使用すると、プライマリ・ライブラリに書き込みを実行し、読み取り機能をサービスに移行できるため、単位時間でより多くのリクエストを処理し、Redis全体の稼働速度を向上させることができます.
歩哨モードは主従機能のアップグレードであるが,主節が潰れた後,人工的な介入を必要とせずにRedisの正常な使用を自動的に回復する.
Redis ClusterはRedis 3.0によって正式に発売され、Redisクラスタはデータベースを複数のノードに分散して格納することによって各ノードの負荷圧力をバランスさせる.
Redis Clusterは仮想ハッシュスロットパーティションを採用し、すべてのキーはハッシュ関数に基づいて0~16383整数スロットにマッピングされ、計算式:slot=CRC 16(key)&16383であり、各ノードはスロットの一部とスロットがマッピングしたキー値データの維持を担当する.これにより、Redisは1台のサーバから複数のサーバに読み書き圧力を分散させることができるため、パフォーマンスが大幅に向上します.