私は概念の面で非常に理解しやすいものを達成しようとしています。私は別のマシン間でJavaコードのブロックを同期したい。同時に実行できない異なるマシンで実行されるプログラムの2つのインスタンスがあります。分散同期実行
私はzookeeper、jgroups、akkaについても聞いたことがありますが、ドキュメントを読んでいるうちに私がやろうとしていることが少し残酷に思えました。もっと真っ直ぐなものがあれば誰にも分かりますか?
事前のおかげで、
ルイ
私は概念の面で非常に理解しやすいものを達成しようとしています。私は別のマシン間でJavaコードのブロックを同期したい。同時に実行できない異なるマシンで実行されるプログラムの2つのインスタンスがあります。分散同期実行
私はzookeeper、jgroups、akkaについても聞いたことがありますが、ドキュメントを読んでいるうちに私がやろうとしていることが少し残酷に思えました。もっと真っ直ぐなものがあれば誰にも分かりますか?
事前のおかげで、
ルイ
私はHazelcastの分散ロック(http://docs.hazelcast.org/docs/3.6/manual/html-single/index.html#lock)が役立つと思います。ヘーゼルキャストは比較的軽量ですので、うまくいけば過度のものではありません。
私はあなたのソリューションが私がやろうとしていることに合っていると信じています。 – rpvilao
あなたが言及したすべての技術は(もTerracottaを見てみましょう)した場合は、おそらく単純なデータベースのロックニーズのためにあまりにも洗練されていますか?
SELECT FOR UPDATE
ステートメントは、指定されたデータベースレコードをロックし、このクエリを実行している他のクライアントをブロックします。シンプルで安全です。
"同時に実行できない異なるマシンで動作するプログラムのインスタンスが2つあります。"これら2つのプログラムのコーディネーターは、これらのプログラムの実行に関する状態を保存しなければなりません。この目的にはどのようなオプションがありますか? –
私はその質問を理解するのをやめていません。私は、実行中のインスタンスの状態について心配していません。私は彼らが同時にデータを処理しないことを心配しています。 – rpvilao
プロセスが同時にデータを処理しているかどうかを心配する場合は、プロセスの状態をコーディネーターに反映できる通信プロトコルが必要です。または、コーディネーターは、この情報のプロセスを要求することなくこれを判断することができなければなりません。コーディネーターはこの情報をどこかに保管する必要があります。どちらの場合でも、同期を担当するコーディネータは、システム全体に関する同期状態を保存する必要があります。 OS、JVMなどは、セマフォ、mutexなどの使用状況を追跡し、この情報を格納することでこれを行います。 –