2015-02-10 33 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主題上,並允許所有節點讀取該消息以清除緩存。

相關問題