キャッシングのためにHazelcast(JCache標準)を使用して分散アプリケーションを作成しています。ヘイルキャストクラスタの鍵をロックする
私は、更新中の呼び出しを防ぐために、クラスタ内の特定のキーにロックを設定する必要があります。
- スレッド1:設定変更のためのITEM1を取得
- スレッド2(ロックを置く):更新のためITEM1を取得します。
- thread2:アイテム1を更新し、新しいタイムスタンプを入れます。
- スレッド1:私はEhcacheのは非常に似た何かを持っている知っている古い値とタイムスタンプ
でITEM1を入れて、それがacquireReadLockOnKey(オブジェクトキー)と呼ばれています。
JCacheおよび/またはHazelcastを使用して、この種のロックをどのように達成できますか?
JCacheのEntryProcessorについて話していますか?分散キャッシュで正常に動作しますか? – Forin
私たちのプロジェクトでは、Hazelcast IMapにEntry Processorを使用しています。同時実行の問題に直面していません.Entry Processorは、分散環境でデータを変更する良い方法です。エントリプロセッサはキー所有者に対して実行されるため、アトミック性を実現して を実現し、ネットワーク経由でデータを送信しないようにします。 –
両方の答えにはメリットがあります。競合が少ない場合は、上記のようにCASに行くことができます。それ以外の場合、JCacheの 'EntryProcessor'、[契約](https://github.com/jsr107/jsr107spec/blob/37937a43c66b986dbfc0aa8291c8f10975b26dc0/src/main/java/javax/cache/processor/EntryProcessor.java#L26-L32)を使用することができます。キーに対して原子的に実行されることを保証します。 'EntryProcessor'コードがHazelcastクラスターのすべてのメンバーに配備されていることを確認するだけです。 –