0

私は .Net 開発者であり、仕事でますます多くの Java 開発を行い始めています。キャッシングについて具体的な質問があります。皆さんが解決したり、提案を提供したりできることを願っています。JBoss を実行している Linux ボックスにデプロイされる Java プロジェクトを開始しています。私たちは前もって計画を立てており、キャッシング戦略について考えようとしています。私たちがやりたいことの 1 つは、ページを出力キャッシュすることです。これは、コンテンツが 8 時間ほどキャッシュ可能になる可能性が高いためです。私は mod_cache を調べ始めましたが、これは私たちがやりたいことです。満たす必要があるもう 1 つの要件は、すべてのリクエストに対して、カスタム ロギングを実行する必要があるということです。基本的なリクエスト URL と、その他のビジネス ロジックが必要で、それをデータベースに詰め込みます。私の質問は次のとおりです。

1) カスタム ロギング プロセスを開始するコードを mod_cache レベルに配置するにはどうすればよいですか?
2)リクエストごとにデータベースにアクセスしたくないので、これらのログメッセージを何らかの方法でキューに入れたいと思います。これに取り組む最善の方法は何ですか?

提案や解決策があれば教えていただければ幸いです。

4

2 に答える 2

1

計画された設定は Apache httpd -> mod_cache -> mod_proxy/mod_jk -> JBoss であると仮定します

1) できません。Apache レベルの mod_cache は Java の呼び出しにまで至らないからです。したがって、mod_cache 自体に何かをフックできるロギング機能があるかどうかを確認するか、mod_cache を変更して再コンパイルする必要があります。これは Java とは何の関係もありませんし、Java ではできないと思います。

2) 繰り返しますが、JBoss を呼び出さずに mod_cache が独自に応答を処理している場合、これは Java の質問ではありません。

JBoss/Catalina/Tomcat は、JSP やその他の Web フレームワークによってレンダリングされたページの配信に関してはかなり高速です。キャッシュの有効期限を設定し、ブラウザーにキャッシュを処理させます。

于 2009-03-07T22:53:59.613 に答える
0

代わりに memcached を使用することを検討してください。このプログラム用の Tomcat/JBoss ラッパー モジュールがあるかどうかはわかりません。シリアル化して文字列キー値を作成できるほぼすべてのデータをキャッシュできます。

必要なもののアクセサーを作成する必要があります。アクセサーは、memcached プロセスからデータを取得しようとしたり、キャッシュ ミス時にジェネレーター関数を呼び出したりします (ジェネレーターの結果をキャッシュします)。このアクセサー内で、キャッシュのヒットとミスをログに記録できます。

もちろん、memcached デーモンは C で記述されているため、Java (または他のほとんどの「最新の」言語ランタイム) とは異なり、データを保持するためにそれ自体を「マークしてスイープ」することはありません。

一方で、mod_cache にはいくつかのロギング フックが含まれている可能性があります。これにより、Java プロセスの負荷が軽減されるため、検討する必要があるかもしれません。

これはあなたが探しているものに近いですか?

于 2009-06-26T00:28:55.350 に答える