次の状況を考慮してください。 サブエンティティA.Bを作成するためにエンティティAに更新要求があります。 Aに多くのBがあるかもしれません、それぞれのBは一意のEメールアドレスを持っています。 エンティティAは共有エンティティであり、同じ要求が複数のサーバで並列に実行されます(スケーラブルマイクロサービス)。リソースロックおよびビジネスロジック
A.Bを作成するには、BがAのサブエンティティとして存在していないことを確認する必要があります(Bのメールアドレスに従って)。
この更新要求を処理するサービスは、更新を安全にするためにA(一意のID)をロックする必要があります。
私の質問は、技術よりも概念的なものである:この更新タスクのビジネス・ロジックの一部は
は、この場合には、リソースAをロックしていますか?
ベリファイとアップデートの手順を処理するものとは別のミドルウェアにリソースロックを入れることを検討しますか? (他のオプションは、ビジネス・ロジックの一部としてロックを治療し、ビジネスロジックを担当するミドルウェアで直接それを置くことです。)あなたのビジネスが構築されていない限り
コメントありがとうございます。私が気づいているように、それが複雑であることを確信しているので、私は自分でそれをするつもりはありませんが、赤目を使用してください。 私の質問は、リソースのロックを取得したいコード内の場所に関する質問です。メインコードフロー中に、このセクションでロックとロック&アンロックが必要なコードのセクションを指すか、すなわちロック前のミドルウェアの前処理である。 – user132440
BTW:再発で一貫性が不可能な場合があります。 –
ああ、私が言ったように、それはビジネスロジックではないので、パーシステンスロジックの一部でなければなりません。好ましくは、取得ロックコードとリリースロックコードのどちらもコーディングしないでください。これは、使用しているフレームワークの一部でなければなりません。 –