0

我是一名 .Net 开发人员,他开始在工作中进行越来越多的 Java 开发。我有一个关于缓存的具体问题,希望你们能解决或提供建议。我们正在启动一个 java 项目,该项目将部署在运行 JBoss 的 Linux 机器上。我们正在提前计划并尝试考虑我们的缓存策略。我们想做的一件事是输出缓存页面,因为我们的内容可能会缓存 8 小时左右。我开始查看 mod_cache ,这正是我们想要做的。我需要满足的另一个要求是,对于每个请求,我都需要进行一些自定义日志记录。我需要基本的请求 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) 同样,当 mod_cache 自己处理响应而不调用 JBoss 时,这不是 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 回答