2010-02-24 49 views
1

是否有緩存解決方案可以與C++,.Net和Java一起訪問和填充緩存中的相同數據? (數據僅由簡單的字符串)需要在C++,Java和.Net應用程序之間共享的緩存

加長版:

我有4個應用,這對一個問題的不同方面的工作。其中兩個是用C++開發的,一個是Java桌面應用程序,另一個是使用.Net 3.5的C#應用​​程序。

目前他們以相同的來源(網絡服務)以各自特殊的方式單獨獲取數據。程序使用這些數據並實例化和填充其他數據結構(讀取:使用分隔符的簡單字符串),這些數據結構也被其他應用程序使用。

目前它是通過個別程序之間的(本地/遠程)套接字完成的。問題在於,特定信息的使用者會緩存另一個程序提供的結果,以便以後在自己的存儲器中使用。製作者還將它存儲在自己的存儲器中,以便在需要時提供給另一個程序等等,最後,我最終將在每個程序的存儲器中複製相同的信息。我想如果有一箇中間層,比如一個緩存,並且每個程序都填充並訪問了該緩存中的數據,那麼它會解決內存問題。它也可以解決每個應用程序對數據源查詢相同數據的問題。然後我會有一個程序來填充輸入數據,其他程序正在處理它。有沒有解決這個問題的緩存解決方案?

回答

7

Memcached在獨立應用程序中正常工作。

+0

+1,我的答案不能與這個完美的解決方案競爭! – used2could 2010-02-24 14:55:19

+0

+1 +接受,完美解決問題。謝謝!! – Elister 2010-02-24 16:01:00

0

取決於這些數據更新/訪問的頻率,您可能要仔細查看您使用的建議(中間件)。 Tibco提供了一個tibcache的概念來存儲稍後可以被許多客戶端應用程序檢索到的數據。它在許多高頻交易應用程序中使用,並提供良好的訪問時間,但明顯不如內存緩存中的文字。

+0

所有這些進程在同一臺機器上嗎?我的評論只有在某些時候可能傳播到單獨的主機上時才更有意義。否則,Malte的建議會更好。 – avirtuos 2010-02-24 14:43:49

+0

不,它們不在同一臺機器上。 2 C++應用程序在一臺機器上運行,Java和C#應用程序位於其單獨的機器上。 – Elister 2010-02-24 15:45:05

+0

如果這個應用程序可能使用更多的進程間消息,我真的會看看像tibco w/tibcache這樣的成熟中間件。有了這個說法,memcached確實會實現起來更便宜,但肯定不會快(毫秒級)。 – avirtuos 2010-02-26 01:00:14

1

IBM的WebSphere eXtreme Scale的有Java的API和也可以由.NET應用程序和C++使用的REST API。這個產品(它曾經被稱爲ObjectGrid)已經存在了6年,並且在8.5版上。 C#和C++的語言API「正在起作用」。

+0

更好地補充鏈接的答案。 – 2012-10-11 06:54:54

+0

IBM在2012年末發佈了eXtreme Scale 8.6.NET API包含在此版本中。 – Wolfy 2013-02-03 20:24:55

0

對於這樣一個簡單的用例,memcached可能會工作。它有Java,C/C++和C#客戶端。

如果您正在查看更高級的用例(除了「get and put」之外的任何內容),請查看內存數據網格(IMDG)解決方案,例如Oracle Coherence。 Gartner將內存數據網格市場總結爲「競爭格局:內存數據網格」。您可以在以下網址查看副本:http://www.gartner.com/technology/reprints.do?id=1-1HCCIMJ&ct=130718&st=sb

爲了充分披露,我在Oracle工作。本文所表達的意見和觀點屬於我自己的觀點,並不一定反映我的僱主的意見或看法。