2016-08-04 14 views
0

は、私はインタビューで次のシナリオを頼まれた:予約システムでの同時ユーザー更新の競合状態を防止するにはどうすればよいですか?

  1. User1は、映画のための空席を見ます。
  2. また、ユーザー2は映画の空席を見ます。
  3. 「同じ座席」を選択してください。

1、両方に同じリソースが割り当てられないメカニズムはありますか?

私は答えて、私たちは、アプリケーションサーバー上の各要求のタイムスタンプをチェックします。 ロードバランサが異なるアプリケーションサーバーにリクエストをリダイレクトする場合はどうなるでしょうか?

  1. これを防ぐためにDB-layerで何かできるかどうか尋ねられますか?私はトランザクションやACIDに弱いですが、それに関連するものは何ですか?説明してください ?

答えて

1

同じ席が2人の異なる人によって同時に撮影できないという完全性ルールを適用するだけです。これはキー{劇場#、座席#}を宣言するだけのことです(与えられたスキーマなしでは難しい)。座席を取得しようとしている2番目のユーザーには、「座席が利用できません」というエラーメッセージが表示されます。これは、同じことをしようとする他の人々によるものであると明示的かつ丁寧に説明することができます。

関連する問題