序文誰もが分散サービスを使用しているため、分散サービスでの同時データ更新の問題は避けられないと思います。 単一システムの場合、synchronize、ReentrantLock などのさまざまな Java ロックを考えるのは簡単ですが、分散システムではこれをどのように処理するのでしょうか。 もちろん、分散ロックを使用します。 分散ロックが何であるかわからない場合は、Shi Shan 教授の短期集中講座をご覧いただくか、オンラインで関連情報を検索することをお勧めします。 Redis を分散ロックとして使用する場合、最もよく使用されるフレームワークは Redisson です。 もちろん、Redisson はロックとしてだけでなく、他の多くの機能も備えています。公式ドキュメントをご覧になり、ご自身で実践してみてください。 Redisson関連のメモを記録し始めましょう!間違いがありましたら訂正してください。 1. 環境設定
バージョンによって異なる場合もありますが、中核となる考え方はそれほど変わりません。大きな変更がある場合はメッセージを残してください。
単純な Maven プロジェクトでは Main メソッドのみが必要です。 2. 再入可能ロックlock.lock() ブレークポイントで、ソース コード エントリとして。 デフォルトではロックされており、パラメータは渡されません。しかし、ここではleaseTime = -1が設定されています。リースタイムの意味はロック時間です。 残りはただ前進するだけです。 tryAcquire メソッドを呼び出す前に、現在のスレッドの ID である long 型の正の数値である追加のパラメータ threadId が追加されます。 非同期ロックtryAcquireAsync 非同期ロック メソッドに直接移動します。 取得非同期処理 先ほども述べたように、leaseTime は -1 なので、ここでは次の方法に進みます。 この時点で、いくつかのパラメータが明確になっています。
Redis eval コマンドのドキュメントは、https://redis.io/commands/eval で読むことができます。 ロックロジック実際のロックは、まさにこのような Lua スクリプトです。 まず、lua スクリプトのパラメータ情報を説明します。
Lua スクリプトを使用しているため、この Lua スクリプトのアトミック性が保証されます。 最初のロック分析:
ロック後の Redis のデータ形式は次のとおりです。 Redis のハッシュ データ構造の詳細については、https://redis.io/topics/data-types#hashes をご覧ください。 抽象的に言えば、anyLock は、その下にぶら下がっている KV 構造化データとして理解できます。
スクリプトを実行する以降の内容は、Lua スクリプトの実行をリクエストする内容です。注意する必要があるのは、ハッシュ スロット ルーティングがあることだけです。 このコードは、NodeSource を取得するために CommandAsyncService#evalWriteAsync メソッドで呼び出されます。 もちろん、この NodeSource には 1 つのスロット (ハッシュ スロット値) のみが格納されます。 このスロット値は、ロックされたキーの CRC16 アルゴリズムを使用して計算されます。
スロットを計算することの用途は何ですか? 追跡を続けてください! BaseRedisBatchExecutor#addBatchCommandData はソースからソルトを取得し、次に MasterSlaveEntry を取得します。 これは、この Redis キーに対応するノードを取得することであると大まかに理解できます。 再入性再入可能ロックであるため、このブロックは再入可能性をサポートします。再入可能性がどのように保証されるかを見てみましょう。
ロックミューテックス上記では 2 つの状況が確認されています。
残りのケースは、キーは存在するがフィールドが存在しないときです。 キー フィールドには UUID:ThreadId が含まれていることに注意してください。これは、ロックされているスレッドが現在のスレッドではないことを意味します。このとき、現在のロックの残り時間がそのまま返されます。 3. まとめこの記事では、主に Redisson 再入可能ロックのロック、ロック再入、およびロック相互排他ロジックについて説明します。 主な焦点は lua スクリプトにあります。 Redis のハッシュ データ構造も理解する必要があります。 また、ロック時間が指定されていない場合は、デフォルトは 30 秒になることに注意してください。 最後に、この記事のロックロジックを図で紹介します。 |
<<: Longxingyoufengは、Beanオブジェクトの初期化と破棄のメソッドを実装するために仮想マシンにフックを登録します。
>>: Tekton を使用した自動化パイプラインのリファクタリング
Racknerd は VPS 業界で非常に人気があるだけでなく、同社が提供する米国のクラスター サー...
2018年4月22日 - 福建省福州市の福州海峡国際会議展示センターで第1回デジタル中国建設成果サミ...
Orange VPS の cn2 gia ネットワークの VPS に、プロモーション用に 5 つの新...
クラウド コンピューティングは過去 1 年間で劇的に変化しました。 Kubernetes の導入は業...
BurstNet は、デフォルトで 5T のデータ トラフィックを備えた特別価格のモデルを 2 つリ...
地方ポータルは、特に二級都市、三級都市の草の根ウェブマスターの運営において常に弱点となってきました。...
美団と大衆点評の合併は中国インターネット業界で大きな注目を集めている。両者の新会社の評価額は150億...
多数の中小規模のビデオ Web サイトに無料の技術サポートを提供することで、深セン Qvod テクノ...
「クラウドデスクトップを通じて、これまでは機密保持の要件によりインターネット上では知ることのできなか...
Hostus は 2009 年に設立され、3 名で構成されています。サーバーは、Intel E3-1...
ゴン・ハイヤンテンセントテクノロジー胡向報が12月26日に報じた。 2012年12月24日の夜、北京...
Hostslayer.com は、ハロウィーン前にハロウィーン プロモーションを開始しました。Ope...
9月3日午後、Baidu World 2012カンファレンスで公開されたデータによると、Baiduは...
クリスマスが近づくにつれ、米国ではショッピングシーズンが始まり、Google ショッピング検索にもす...
Google の検索結果は常にパーソナライズされています。Google アカウントにログインしていな...