どの分散ロックサービスを使用しますか?
要件は次のとおりです。
「データベースを介して実行できる」や「JavaSpacesを介して実行できる」などの回答には興味がありません。すぐに使用できる既成の実証済みの実装に興味があります。
Teracotta (Open Source Editionを含む)は、synchronized
またはJava.util.concurrent.ReentrantReadWriteLock
-後者は明らかに要件に適合しています。
更新
質問にGigaSpacesとの「ミキシング」の要件が追加されたため、do n'tをミキシングすると言います。技術スタックに複雑さを追加するだけで、次のような努力が必要です。
gigaSpacesに基づいたロックソリューションの作成または実装に費やした方がよいでしょう。
ブロックの新しい子供は hazelcast です。私はそれで遊んでいますが、使用と設定は驚くほど簡単です。
私が見る限り、hazelcastには依存関係がないため、Gigaspacesとhazelcastの間に競合はないはずです(jgroups.jarなどはありません)
ヘイゼルキャスト:
Java.util.concurrency.locks.Lock
のうん実装Apacheの Zookeeper (A Hadoopサブプロジェクト)を確認してください-分散同期を提供します。ドキュメントは素晴らしいものではありませんが、そこにあるものは興味深い製品に見えます-Zookeeperの使用方法に関するアイデアについては、レシピをチェックしてください。
おそらく必要とするよりも下位レベルであり、専用サーバーを推奨するため、追加の展開が必要です。
さまざまなロック戦略をモデル化できますが、ロックホルダーが死ぬ(一時ノード)ためのソリューションを提供します。
ZooKeeper は、 Apache Curator フレームワークの助けを借りて、分散ロックの事実上の標準になりました。詳細については、 recipes のロックを確認してください。