問題タブ [infinispan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
caching - Infinispan+kyro/Google Protocol Buffers を使用して、スペースと時間効率の高いシリアル化を実現しますか?
私の理解が正しければ、Infinispan/JBoss Cache は Java 独自のシリアル化メカニズムを使用しますが、これは遅くなる可能性があり、比較的多くのストレージ スペースを必要とします。私は、次のことを達成できる代替手段を探していました。
- 自動キャッシュ管理、つまり、より頻繁に使用されるオブジェクトは自動的にメモリにロードされます
- より効率的なシリアル化 (おそらくオブジェクト --> コンパクトなバイナリ ストア)。主な目標は、パフォーマンスをあまり犠牲にすることなく、ディスク/メモリ容量の消費を抑えることです
両方を実現するフレームワークまたはライブラリはありますか?
hibernate - SQL 例外により、Hibernate のセカンド レベル キャッシュに Infinispan をプロバイダーとして使用する古いデータが含まれる
JPA (Hibernate) ベースのアプリケーションの 2 番目のレベルのキャッシュとして Infinispan (JGroups を使用してクラスター化) を使用しています。データベース操作が失敗すると、レベル 2 キャッシュが古くなっていることがわかります。例えば:
1) ログイン「joe」でユーザーの作成を試みます。2) persist(user) を呼び出します。3) データベースの一意性制約により、永続化が失敗します。4) login=joe で ID による検索を実行します (login が PK であると仮定します)。5) Hibernate は、データベースにない場合でも、Infinispan キャッシュから joe ユーザーを返します。
XA トランザクションを構成し、Infinispan を XA に参加させることは、この状況ではやり過ぎのように思えます。XA がこれに対処する唯一の方法ですか?
java - Infinispan による同一プロセス内での分離
Infinispan キャッシュと Atomikos トランザクション マネージャーを中心にアプリケーションを構築しています。同じ JVM 上の 2 つの異なるスレッドで開いているトランザクションに対して、トランザクションの分離が機能していないことがわかりました。
キャッシュは、次のコードを使用してインスタンス化されます。
Withは、configure Atomikos トランザクション マネージャーを返すthis.tmLookup
単純な実装です。org.infinispan.transaction.lookup.TransactionManagerLookup
キャッシュに 1 つの値を入力して簡単なテストをセットアップし、2 つのスレッドでリーダーとライターをそれぞれ別のトランザクションで起動します。基本的に、ライターはキャッシュに保存されている値を取得し、値を変更してキャッシュに保存します。一方、 get を使用した読み取りは、さまざまな段階で値を表示します: ライターによって変更が行われる前、ライターが pojo を変更した後、ライターが更新された pojo を保存した後、最後にライターのトランザクションのコミット後.
ライターのコードは次のとおりです。
リーダーコードは次のとおりです。
キャッシュから返されたエンティティを追跡するために、Pojoを次のtoString()
ように実装しました。
キャッシュが分離されるように構成されているため、リーダーとライターの間に異なる pojo インスタンスがあり、ライターのトランザクションがコミットされた後にのみ変更のみが表示されると予想しました。
ただし、次の出力が得られました。
基本的に、キャッシュは両方のスレッドに同じ pojo インスタンスを返すため、ハッシュマップのように機能します。
質問は:構成または予想される動作で何かを見逃していませんか?
Atomikos から、リーダーとライターの両方で個別のトランザクションの開始を示すログ メッセージを取得できるため、トランザクション マネージャーが機能していることは確かです。
ただし、Infinispan の代わりに Ehcache を使用して同じテストを試みたところ、期待どおりの結果が得られました。2 つのテストのログを比較すると、Infinispan のトランザクション ID がないことだけが明らかな違いである同様のメッセージが見つかりました。
対
java - Hibernate 2LC としての Infinispan: NamedCacheNotFoundException
私は現在、正常に動作する EJB3 環境 (GlassFish 2) でエンティティのクラスター化されたキャッシング用の Hibernate 2nd レベル キャッシュとして JBossCache 3.2 を使用しています。現在、代わりに Infinispan 4.2.1 を使用して評価していますが、驚いたことにNamedCacheNotFoundException
s が得られました。
次のようなエンティティレベルで注釈を使用します
そして例外は次のようなものです
jmx を介して見ると、対応する MBean が表示されますCacheName
が、myRegion(invalidation_sync)
. サフィックス(invalidation_sync)
は Infinispan によって追加されているようです。
これが私の問題の根本的な原因ですか? どうやってそれを回避するのですか?私の Infinispan 構成は、主に hibernate-infinsipan に付属していますが、jmx が有効になっています。
spring - Atomikos + Infinispan + Jetty エラー
桟橋で休止状態、atomikos、および infinispan で Spring を使用しています。エンティティに @Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL) として注釈を付けた後、次のエラーが表示されます
問題は atomikos と infinispan の間にあるようです。私の構成は、ドキュメントの例に基づいています。ただし、https://docs.jboss.org/author/display/ISPN/Implementing+standalone+JPA+JTA+Hibernate+application+outside+J2EE+server+using+Infinispan+2nd+level+cacheでは、2 を追加するように言われています設定するプロパティhibernate.jndi.class
ですが、jettyで設定できるものは何ですか?
lucene - Katta vs Lucene + Infinispan
Lucene は、乱れたインフィニスパン キャッシュで動作します。lucene + infinispan から Hadoop ベースの Katta に移行する瞬間はいつだろう?Katta と Lucene+infinispan を使用すると効果的なのはいつですか? Hadoop はリアルタイム システムには適していないと読んだことがありますが、Katta はどうでしょうか。
hibernate-search - Infinispan でのレプリケーション タイムアウト
Hibernate Search バックエンドとして使用される 10 ノードの Infinispan クラスターを使用しています。私たちのサーバーは、Java 1.6_24 で TC サーバー 2.5 (Tomcat 6.0.32) を実行しています。各ノードからのクラスタ キャッシュ書き込みの処理と、マルチキャスト UDP トランスポートに jGroups 2.12.1.3 を使用しています。
クラスターで 3 つ以上のノードを起動すると、最終的にノードの 1 つがレプリケーション タイムアウトのログを記録し始めます。Infinispan をレプリケーション用に構成するか分散キャッシュ モード用に構成するかに関係なく、同じ結果が観察されました。クラスターの残りの部分は安定したままですが、障害のあるノードは基本的に検索に使用できなくなります。
私たちの構成:
インフィニスパン:
jGroups (UDP):
そして、私たちが観察したエラー:
このエラーは、トポロジやキャッシュ モードに関係なく広範囲に及ぶため、どこかで構成を誤っているに違いないと考えています。誰でも修正を推奨できますか?
hibernate - infinispanの第2レベルのキャッシングを備えたGlassfish
Infinispanを休止状態の第2レベルのキャッシュで使用したい。私のアプリケーションはglassfish3アプリケーションサーバーで実行されており、HibernateJPAを使用しています。hibernateライブラリにはすでにinfinispanが含まれているため、プロジェクトに追加しませんでした。jtaトランザクションを使用します。これを行うには、persistence.xmlを変更します。
アプリケーションを再デプロイすると、次の例外が発生します。
infinispanライブラリをプロジェクトに追加する必要がありますか?
私は設定しようとしました:
しかし、うまくいきませんでした。
前もって感謝します。