2015-05-19 20 views
0

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

我有哪些选择?

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

+0

您是否试过memcached?它只是在特定端口运行缓存服务器,并且可以从所有应用程序服务器调用它。它也有一个不错的java apis。 –

+0

检查这个网站:http://www.javaworld.com/article/2078565/open-source-tools/use-memcached-for-java-enterprise-performance--part-1--architecture-and-setup.html –

+0

他们使用spymemcached作为客户端,这是一个有点在我们想要的。一个锁到关于客户端是开放的。但这将是一个可行的选择。 – Christian

回答

0

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

1

一般来说:问题是广泛的,实际上你是要求产品推荐。请看看stackoverflow问题指南。

关于你的问题:

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

您是否拥有大部分读取或读/写使用模式? 什么是访问类型,点,范围或全面扫描?你在数据上做什么类型的操作?什么是对象数量和典型对象大小?有没有热点?你有多少个应用程序服务器?应用程序服务器中是否有内存限制?它在后端生成数据的成本是多少(延迟和资源成本)?

一个一般建议:如果只有少数应用程序服务器,我将开始与应用程序服务器的本地缓存和忽略了一个事实,有可能是从不同的应用服务器后端的冗余请求。这样你可以保持现有的系统架构。放入一个或多个单独的缓存服务器需要进行大量的计划,并且需要很多注意事项来分阶段部署和操作应用程序。

一秒钟的一般建议:第一阶段的缓存命中率可能大约为25%这个命中率的缓存将毫无用处。可能发生的情况是,根本没有从缓存中获得任何性能收益。无论如何,可能有理由这样做,例如,改善Flash群体的应用。这需要更详细的阐述。仔细检查你的数字!

我期待更详细的问题:)

+0

Thx为答案。对每个实例使用本地缓存可能是最好的。 25%是一见钟情,但在第二阶段,我们希望每晚预先填充缓存,并达到可能接近90%的命中率。 25%的数据至少可以帮助用户多次查询相同(昂贵)的数据。我们现在要做一个JCache实现,可能是Infinispan,它给了我们很多关于基础设施的选择。第二,它将有助于减少多年来增加的代码复杂度,因为一些对象已经被缓存在不同地方的hashmaps中。 – Christian

相关问题