分散ロック・デザイン

まず、分散ロック・デザインのRedisに基づきます

1、実装:setnxキー値の時間を期限切れ

2、問題があります:

    、シングル・インスタンス:高可用性を満たすことができません

    B、マスタースレーブ:メインロックはスレーブに同期されていない、マスターがダウンし、何もロックが存在しない、ロックが問題を繰り返すことになります

図3は、関係者は提案:確実にするためにredlockアルゴリズムを使用して、成功したと考えられ、最も成功したロックを使用して、少なくとも三つの主要Redisのは、より高いコスト、インスタンスから実現されます。

本質的な問題:分散ロックは、RedisのクラスタがAPモデルである、CPモデルが必要です!

 

第二に、分散ロックの要件

1、強い一貫性

2、サービスの可用性

3、ダウンタイムが自動的にロック解除を更新することができ

4、ビジュアル管理、モニタリング

 

第三に、プログラム分散ロック・コントラスト

  繰り返します 飼育係 etcd
コンセンサスアルゴリズム ノー パクシ ラフト
キャップ CP CF /オフ
ハイアベイラビリティ マスタースレーブ 超半数可用 超半数可用
インターフェイスタイプ クライアント クライアント HTTP / grpc
実現 setnx createEphemeral一時的なノード 安らかなAPI

1、Redisのは、データの一貫性を保証することはできません

etcdよりも低く、一時的なノードと時計のメカニズム、効率、スケーラビリティ、コミュニティ活動を作成します。使用してロックを達成するために2、飼育係

3、etcdを達成するために提案されているオプション

おすすめ

転載: blog.csdn.net/shaolong1013/article/details/91385588