2015-02-10 68 views
0

我们拥有一个宁静的web服务。我们使用JaxR的CacheControl缓存GET端点的响应xml。从负载均衡器后面的多个服务器清除缓存

例如:GET - https://api.apiway.com/v1/users/12345

清除缓存,我需要打相同点,但用(而不是一个GET)的一个PUT和高速缓存将为端点被清除。

例如:PUT - https://api.apiway.com/v1/users/12345

,当我在我的本地运行它,我只能运行1个WebSphere实例也能正常工作。但是我们的QA环境在负载均衡器后面运行了2个webphere实例。因此,当我调用PUT端点来刷新缓存时,它只会清除1个websphere实例上的缓存,其中另一个websphere实例将使用过时的数据发送响应。

如何使用cacheControl从负载均衡器后面的多个实例刷新缓存?

+0

你是如何维护这个缓存? – 2015-02-10 20:22:42

+0

它被缓存在服务器端。 – Npa 2015-02-10 20:31:46

回答

0

总之,你不能这样做。您无法控制哪个后端服务器实例将随您的请求转发以清除缓存。这就是为什么我们有负载平衡器,不是吗? LB控制请求发往哪个(到哪个服务器)。

在附注上,为什么要清除前台设置中的缓存,即通过LB?您必须有系统才能从后台清除缓存,即从位于应用程序服务器旁边的系统清除缓存,并且可以在不使用LB的情况下访问这两个应用程序服务器。

0

有几种解决方案可供您使用。当一个节点获得清除缓存的请求时,可以将消息放在JMS主题上,并允许所有节点读取该消息以清除缓存。

相关问题