Redisの高可用性クラスタリングソリューション

、センチネルセンチネル:

RedisのSentinelは、高可用性ソリューションです。

    センチネルSentinelシステムは、任意の数のサーバーを監視することができ、マスターの1つ以上のインスタンスで構成され、サーバからマスタサーバの下にあるすべてのものを、プライマリサーバがオフライン状態に入るために監視されている場合、マスターサーバーに自動的にオフライン属下に新しいサーバへのプライマリサーバからのアップグレード。

Server1が低下しました

  

Server2がメインサーバをアップグレードします。

      注意:のserver1返信した後も、プライマリサーバーとなります。あなたのお母さんの具体的な構成を尋ねました。

利点:

1、Redisのセンチネル簡単なクラスタの展開

2、Redisのマスターモードは高可用性の問題から切り替えられる解決することができ

図3は、非常に大容量または高性能のRedisのためのビジネスニーズを満たすことができ、簡単に、線膨張Redisのデータノードを実現するのRedis自身のシングルスレッドのボトルネックを破ることは容易です。

図4は、ノードデータのセンチネルRedisのデータノード又はグループのセットを監視するために実装することができます

短所:

1、資源の浪費、サービスを提供していないバックアップノードとしてRedisのデータノードスレーブノード

2、RedisのSentinelは、主にデータ交換ノードマスターノードのRedisの高可用性のために、ノードからRedisのノードに対して、2種類に主観的および客観オフラインの故障決意を行うためのRedisデータオフラインのノードは、主観を作るために有しますライン操作は、フェイルオーバーを実行しません。

3は、独立した読み取りおよび書き込みが問題を解決することはできませんが、実装するのが比較的複雑であり、

二、Redisのクラスタコミュニティ版は、Redisの分散クラスタソリューションを立ち上げています。

   分散型のRedisのニーズに対応する主な側面は、例えば、スタンドアロンメモリ、同時実行性とフローのボトルネックに直面したとき、Redisのクラスタは、良好な負荷分散のために再生することができます。マスタノードは、読み取りおよび書き込み操作を提供するノードクラスタノード6以上のRedisのクラスタの最小構成(第3主3)は、バックアップ・ノードとしてノードは、リクエストが利用できない、フェイルオーバーとしてのみ使用。Redisのクラスタ仮想パーティション溝は、全てのキーが0〜16,383スロットハッシュ関数の整数にマッピングされ、各ノードは、キー溝の部分と地図を印刷溝のデータを維持する責任があります。

利点:

1、無センターアーキテクチャ

図2は、データスロットによれば、分散された複数のノードに格納されたノード間のデータ共有、データの分布が動的に調整することができるされています。

3、可扩展性,可线性扩展到1000多个节点,节点可动态添加或删除。

4、高可用性,部分节点不可用时,集群仍可用。通过增加Slave做standby数据副本,能够实现故障自动failover,节点之间通过gossip协议交换状态信息,用投票机制完成Slave到Master的角色提升。

5、降低运维成本,提高系统的扩展性和可用性。

缺点:

1、Client实现复杂,驱动要求实现Smart Client,缓存slots mapping信息并及时更新,提高了开发难度,客户端的不成熟影响业务的稳定性。目前仅JedisCluster相对成熟,异常处理部分还不完善,比如常见的“max redirect exception”。

2、节点会因为某些原因发生阻塞(阻塞时间大于clutser-node-timeout),被判断下线,这种failover是没有必要的。

3、数据通过异步复制,不保证数据的强一致性。

4、多个业务使用同一套集群时,无法根据统计区分冷热数据,资源隔离性较差,容易出现相互影响的情况。

5、Slave在集群中充当“冷备”,不能缓解读压力,当然可以通过SDK的合理设计来提高Slave资源的利用率。

6、key批量操作限制,如使用mset、mget目前只支持具有相同slot值的key执行批量操作。对于映射为不同slot值的key由于keys 不支持跨slot查询,所以执行mset、mget、sunion等操作支持不友好。

7、key事务操作支持有限,只支持多key在同一节点上的事务操作,当多个key分布于不同的节点上时无法使用事务功能。

8、key作为数据分区的最小粒度,因此不能将一个很大的键值对象如hash、list等映射到不同的节点。

9、不支持多数据库空间,单机下的redis可以支持到16个数据库,集群模式下只能使用1个数据库空间,即db 0。

10、复制结构只支持一层,从节点只能复制主节点,不支持嵌套树状复制结构。

11、避免产生hot-key,导致主库节点成为系统的短板。

12、避免产生big-key,导致网卡撑爆、慢查询等。

13、重试时间应该大于cluster-node-time时间

14、Redis Cluster不建议使用pipeline和multi-keys操作,减少max redirect产生的场景。

 

おすすめ

転載: blog.csdn.net/qq_42409788/article/details/90518970