0

我们在反向代理后面有多个应用程序服务器。我们希望在另一台主机上有一个所有应用服务器都可以轻松使用的缓存,因此缓存必须具有某种网络支持。此外,设置应该很容易,可能支持 docker,但这不是必须的。缓存持续时间约为 1d。API 应该尽可能简单和标准化(JCache?)。在稍后阶段,我们要预先填充缓存。

我有哪些选择?

背景:第一步,我们希望减少后端系统的负载,后端系统主要提供 SOAP 服务。所以我们要缓存 SOAP 响应 (JAX-WS)。第一阶段的缓存命中率可能约为 25%。稍后我们也想为 JPA 使用相同的缓存(我们已经为每个 Application Servcer 启用了内存缓存,并使用了缓存协调策略)。要使用更多缓存,我们将需要一些排序缓存类别。

4

2 回答 2

1

一般来说:这个问题很广泛,实际上你是在寻求产品推荐。请查看 stackoverflow 问题指南。

关于你的问题:

没有任何目的的“单一缓存”。此外,软件和系统架构可以有许多变体,也可以使用单个缓存产品。最佳解决方案不取决于应用程序,而是取决于您要缓存的数据访问类型。我想到的一些问题:

您的使用模式主要是读还是读/写?访问、点、范围或全扫描的类型是什么?您对数据执行什么类型的操作?对象数量和典型对象大小是多少?有热点吗?你有多少应用服务器?应用服务器有内存限制吗?在后端生成数据的成本是多少(延迟和资源成本)?

一个普遍的建议:如果您只有几个应用程序服务器,我会从应用程序服务器中的本地缓存开始,而忽略后端可能存在来自不同应用程序服务器的冗余请求这一事实。这样您就可以保留现有的系统架构。放置一个或多个单独的缓存服务器需要大量的计划和大量的考虑,以用于暂存、部署和操作您的应用程序。

一秒一般建议:第一阶段的缓存命中率可能约为 25%具有此命中率的缓存将毫无用处。您可能根本没有从缓存中获得任何性能提升。无论如何,这样做可能是有原因的,例如,为了改进 Flash Crowd 的应用程序。这需要一些更详细的阐述。仔细检查你的数字!

我期待着更详细的问题:)

于 2015-05-29T19:24:41.987 回答
0

使用Ehcache的缓存服务器怎么样?它提供了一个 RESTful 接口,可以在专用服务器上运行。

于 2015-05-19T22:14:23.540 回答