この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 50989|答える: 2

[出典] .NET CoreはRedis Lua(ソースコード付き)に基づく分散ロックを実装しています

[リンクをコピー]
2021年5月9日 21:11:18に投稿 | | | |
分散ロックの応用シナリオ:サービスの開発により、単一のアプリケーションはクラスタ化し、分散ロックは同一リソース上の異なるプロセス(スレッド)の動作を同時に解決し、一部のサービスは単一のスレッドで動作する必要があります。例えば、預金金額の変更や商品在庫の変更などです。

復習:

.NET CoreはRedisに基づく分散ロック原理解析を実装しています
https://www.itsvse.com/thread-9391-1-1.html

.net/c# Zookeeper分散ロック実装 [ソースコード]
https://www.itsvse.com/thread-4651-1-1.html

Redisは詳細な説明のためにLuaスクリプトを使用しています
https://www.itsvse.com/thread-9634-1-1.html

[実際の戦闘] ASP.NET コアはRedis分散ロックフラッシュセールをベースにしています
https://www.itsvse.com/thread-9397-1-1.html

前回の記事「[Practice]ASP.NET Core Based on Redis Distributed Lock Flash Kill」では、ロックを追加する際にバックグラウンドスレッドを有効にしてロック時間を延長しました。これにより、ロック解除時に他のスレッドが占有しているロックが誤って削除されないようにしました。

RedisでLuaスクリプトを使いこなせば、占有ロックや解除ロックを簡単にスクリプトで行えます。


まずはレンダリングを見てみましょう。



まず1000本の並列スレッドを開いてロックを競い合い、ロックは5秒間有効期限が切れました。5秒で1000スレッドを完了しましたが、ロックを取得できたスレッドは1つだけでした6秒待つと自動的にロックが解除され、2つ目のタスクがロックを獲得でき、すぐに解除され、次のコードも成功裏にロックを獲得したことがわかります。

ロックを手に入れるためのluaスクリプトは以下の通りです:

ロックを解除するためのluaスクリプトは以下の通りです:

インターフェースコード:

ソースコードダウンロード:ハイパーリンクのログインが見えます。

「Redis分散ロックフラッシュセールに基づく ASP.NET コアの練習」はこの記事を用いて実装されており、当サイトはそれをシミュレートしています10000点その後、HTTPリクエスト時間をシミュレートするコンソールを書きました完売は6秒で完了します、下図に示されているように:

[実際の戦闘] ASP.NET コアはRedis分散ロックフラッシュセールをベースにしています
https://www.itsvse.com/thread-9397-1-1.html



テストシミュレーション要求コードを修正する:



(終わり)




先の:カフカは手動でオフセットオフセットを設定します
次に:ASP.NET Coreはリクエストの完全なURLリンクを取得します
2021年11月4日 13:50:43に投稿 |
{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}
2022年6月11日 13:36:33に投稿 |
感謝感謝
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com