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

眺める: 13217|答える: 1

インターフェース冪等性の問題

[リンクをコピー]
掲載地 2018/12/04 13:29:37 | | |
【問題の説明】
ユーザーがAPPを使うとページが非常に固まり、ランダムにクリックします。インターフェースが繰り返し送信しないため、同じリクエストが複数あります。サービス層では、あるスレッドが挿入されず、もう一方のスレッドはチェックされて空になります。 そこで私も1つ挿入しました。 もともとは全員が1つ持っていましたが、営業担当者は3つ持っていたため、ビジネスロジックの誤りが生じました。 悪意のある投稿の処理はフロントエンドで行うことができ、バックエンドにも成熟したソリューションが存在します。

【解決策】1. 一意性制約を用いてトランザクションの冪等性問題を解決し、一意性制約を設定し、繰り返しコミットが発生する場合はデータベースレベルで一意性制約の例外を投げ出し、ビジネスロジックは破壊されません。 複数のフィールドの合成に対する一意性制約も許容されます。
ハイパーリンクのログインが見えます。

上記はデータベースレベルで重複防止設定を作成するためのものです。

2. コードレベルで重複防止設定を実現する。 多くの場合、データベースの一意性制約はデータ挿入の効率に影響を与えると言われます。なぜなら、各挿入にはデータベースレベルでの判断が必要だからです。 したがって、コードレベルから判断すると、コードレベルではまず選択してから挿入するのが一般的な慣行ですが、高並行性のシナリオでも繰り返しコミットが発生します。 論理コードに同期を追加すれば、高並行性のシナリオではまず選択し、その後挿入が有効になります。 しかし効率は高くなく、並列線は直列になります。 DCLロック機構の使用も可能です。 (コピーケースモードで単一のオブジェクトを作成する方法は非常に似ています。まずそのオブジェクトが存在するかどうかを判断し、存在しなければ作成しなければ作成しないでください)。自然なDCLロック機構の方が効率的です。

#分布式锁
分散ロックもこの問題を解決するために使われており、RedisやZookeeperで一般的に使われています。 このセクションでは、Redisを使った分散ロックの実装方法について説明します。
RedisにはsetNxコマンド操作があり、存在しなければセット値となり、1が返されます。 もし存在すれば、設定せず0を返します。
Redisのシングルスレッド機能を活用することで、高並行性のシーンはメッセージキューを通じてシリアルに変換されます。
しかし、分散ロックには落とし穴があるため、注意が必要です。
ハイパーリンクのログインが見えます。
3. MVCC機構?

3.1 MVCCメカニズムとは何か?
MVCCはマルチバージョンの並行制御機構です。

3.2 どんな問題が解決できるのか?
ロック機構は並行操作を制御できますが、システムのオーバーヘッドが大きく、MVCCはほとんどの場合行レベルのロックを置き換えることができ、これによりシステムオーバーヘッドを削減しパフォーマンスを向上させます。

ハイパーリンクのログインが見えます。

4. メッセージには冪等性の問題もあります

例えば、メッセージの繰り返し消費を防ぐ方法についてです。

MQのメッセージミドルウェアでは、これらを理解しなければなりません。




先の:美容師について学びましょう。どうぞお店に来てご覧ください
次に:子育て物語 ビデオ 育児物語 オーディオ育児物語 絵本 育児知識コレクション
 地主| 掲載地 2021/03/17 10:27:09 |
権限プログラミングにおいて、冪等演算は、その任意の複数実行が単一の実行と同じ効果を持つという事実によって特徴づけられます。
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com