2016-07-07 22 views
0

我的web應用程序在內存緩存中維護以高頻讀取/寫入的域實體。爲了使應用程序成簇,我需要同步/外部化這個緩存。Infinispan vs memcached用於高併發需求

這將是當中的memcached更好的選擇和考慮的Infinispan以下應用facts-

  • 緩存將被讀取/每秒
  • 高頻書面如果Infinispan的,數據需要跨節點複製接近實時時間
  • 如果複製速度慢,併發寫入不應該產生衝突問題。

我覺得memcached將很好的解決這個問題,因爲它是集中式的,不需要像infinispan這樣的複製延遲。專家可以就此提供意見嗎?

+0

提到了一個很好的比較[這裏](http://vschart.com/compare/jboss-infinispan/vs/memcached),這可能也有幫助。 – phoenixSid

回答

4

可惜我不是一個Memcached的專家,但讓我告訴你更多關於一些基本概念,讓你可以選擇適合您的使用情況下,最好的選擇...

首先,集中分散VS - 如果你有隻有一個節點在你的系統中,它會更快(正如你所說沒有複製)。但是,如果節點停機會發生什麼?或者另一種情況 - 如果節點變滿(如你所說你會每秒執行很多讀/寫操作)會發生什麼?一種解決方案是使用主/從複製,其中寫入異步地傳播到從節點。如果節點已關閉,此解決方案將節省您的時間,但如果節點已滿(如果主節點已滿,從站將在幾分鐘後滿),則不會有任何好處。

數據一致性 - 如果系統中有多個節點,則數據可能不同步。想象一下,在2個節點和連接到每個節點的客戶端之間進行異步複製。兩個客戶端在相同的時刻執行寫入同一個密鑰。看起來似乎不大可能,但相信我,高度併發的讀取和寫入會發生。解決這個問題的唯一方法是在大多數節點啓動並運行的情況下(或者稱爲共識)使用同步複製。

回到您的方案 - 如果一個損壞的節點對您來說不是問題(例如,您可以自動切換到其他某個數據源)並且數據不會增長 - 繼續執行1節點解決方案或主/從屬複製。如果您的數據需要強烈一致 - 請確保您正在進行同步複製(並且可能與事務處理有關,但您需要參閱用戶手冊以獲取指導)。否則,我會建議選擇更多功能的解決方案,這將允許您添加/刪除節點而不會佔用整個系統,並且可以選擇同步/異步複製。

根據我的經驗,人們對數據一致性的關注太多,而應該更關心可伸縮性。最後一條建議 - 請在評估任何解決方案之前定義您的績效標準(例如,我的寫作需要不超過X並且不超過Y.也要爲您的標準定義置信水平(我需要99.5%讀取小於X)