2017-08-23 3 views
0

2つのMySQLデータベースインスタンスがあり、それらはLoad Balancerによって処理されています。 Springアプリケーションは大量の要求を持つロードバランサにコンタクトします。トランザクションによっては、データベース内の1行を排他的にロックするトランザクションがあります。場合によっては、例えば100秒のリクエストを1秒間に送信するとデッドロックが発生することがあります。そのデッドロックを引き起こす原因を誰かが知っていますか?もちろんデッドロックは、データベース内の同じ行をロックする同じ要求を送信した場合にのみ発生します。データベースの2つのインスタンスがロードバランサと同期されていません

enter image description here

これは、システムが現在どのように見えるかです。

+0

アプリケーションに単一の論理データベースを使用することをお勧めします。必要に応じて分割します。 –

+0

大量の要求(100-1000 req/sec)のために、アーキテクチャはこのようにする必要があります。また、私はレプリケーションを持っているので、データがより安全になります。 – alxbxbx

+0

あなたはそうしますが、私はこのアーキテクチャを使用しません。 –

答えて

0

明らかに、2つのデータベースを同期させることは、大きな負荷がかかる場合は賢明ではありません。だから、1つのDBでもっとうまく行き、もう1つのDBを「スレーブ」にしましょう。この状況でのベストな戦略は、私が使用したフェイルオーバーです。

アプリケーションの複数のインスタンスでは、複製の問題はありません。しかし、データベースでは、同期は大きな問題です。 @Tim Biegeleisen氏によると、単一のデータベースを使うほうが良いです。

関連する問題