私は、グローバル全体の異なるサーバーでホストされる (アプリケーション + db) アプリケーション (Java + MySQL) に取り組んでいます。同じアプリケーションとデータベースが、アジア、ヨーロッパ、オーストラリア、北米でホストされます。
アクセスを高速化するために、アプリケーションとデータベースは異なるサーバーでホストされ、ユーザーがアプリケーションにアクセスしようとすると、ユーザーの場所に近いサーバーがサービスを提供します。
ただし、すべての場所のデータは同じになります。つまり、ヨーロッパのサーバーでデータが更新されると、アジア、オーストラリア、北米のデータベースも同期/更新されます。
私はこれまでこの種のシナリオに遭遇したことがなく、MySQL についてあまり知識がありません。しかし、私が知った調査から、このシナリオには MySQL クラスタリングまたはレプリケーションを使用できることがわかりました。
データベースが更新されると、他のデータベースの更新に時間がかかることは間違いありません。
私の問題は、アジアのユーザーがアプリケーションを介してレコードを更新しようとすると、レコードのフィールド (「ロックされた」0/1) にフラグを設定することによってレコードがロックされることです。別のユーザーがレコードを編集しようとすると、「ロックされた」フィールド値がチェックされ、ユーザーが更新できるようになるか、レコードがロックされていることが通知されます。
アジアのユーザーがレコードを開いて編集すると、ロックされたフィールドは 1 に更新されます。ただし、ロックされたフィールドの値をヨーロッパやオーストラリアなどの他のサーバーに複製するには、2/3 秒かかる場合があります。その間、ヨーロッパのユーザーはレコードを開いてアプリケーションから編集します。その時点で、ロックされたフィールドの値がヨーロッパのサーバーに複製されない場合があります。そのため、ヨーロッパのユーザーも編集のためにレコードを開くことができます。そのため、アジアのユーザーとヨーロッパのユーザーがレコード編集インターフェイスを持つため、競合が発生します。
誰でもこれについて私を助けることができますか?このシナリオでは、より優れた MySQL グローバル db アーキテクチャの提案が必要です。
ありがとう