繁体   English   中英

需要一个在C ++,Java和.Net应用程序之间共享的缓存

[英]Need a cache which is shared between C++, Java and .Net Applications

是否有一个可以与C ++ 、. Net和Java一起使用的缓存解决方案,它们都可以访问并填充缓存中的相同数据? (数据仅由简单字符串组成)

较长版本:

我有4个应用程序可以解决问题的不同领域。 其中有两个是用C ++开发的,一个是Java桌面应用程序,另一个是使用.Net 3.5的C#应用​​程序。

当前,他们以自己的特殊方式从同一来源(Web服务)分别获取数据。 程序使用此数据并实例化和填充其他数据结构(读取:使用分隔符的简单字符串),这些数据结构也被其他应用程序使用。

当前,它是通过各个程序之间的(本地/远程)套接字完成的。 问题在于,特定信息的使用者会缓存另一个程序提供的结果,以供以后在其自己的内存中使用。 生产者还将其存储在自己的内存中,以在需要时将其提供给另一个程序,依此类推,依此类推,最后,我最终在每个程序的内存中复制了相同的信息。

我在想,如果有一个中间层,例如一个缓存,并且每个程序都填充并访问了该缓存中的数据,那将解决内存问题。 它还可以解决每个应用程序向数据源查询相同数据的问题。 然后,我将有一个程序填充输入数据,而其他程序则在处理它。 有没有可以解决此问题的缓存解决方案?

Memcached在独立的应用程序中运行良好。

您应该看看Gigaspaces datagrid ... http://www.gigaspaces.com/datagrid

IBM的WebSphere eXtreme Scale具有适用于Java的API以及可供.NET应用程序和C ++使用的REST API。 该产品(以前称为ObjectGrid)已经存在6年了,并且在8.5版本上。 C#和C ++的语言API正在“开发中”。

对于这样一个简单的用例,memcached可能会起作用。 它具有Java,C / C ++和C#客户端。

如果您正在寻找更高级的用例(除了“获取和放入”之外的所有内容),请查看内存数据网格(IMDG)解决方案,例如Oracle Coherence。 Gartner对内存数据网格市场进行了总结,称为“竞争格局:内存数据网格”。 您可以在以下位置查看副本: http : //www.gartner.com/technology/reprints.do?id=1-1HCCIMJ&ct=130718&st=sb

为了全面披露,我在Oracle工作。 这篇文章中表达的观点和观点是我自己的,不一定反映我雇主的观点或观点。

根据数据更新/访问的频率,您可能希望使用建议的内容(中间件)进行查看。 Tibco提供了tibcache的概念,用于存储以后可被许多客户端应用程序检索的数据。 它在许多高频交易应用程序中使用,并提供了良好的访问时间,但显然不如内存缓存中的立即数好。

您可以为与平面文件或键/值数据库交互的每种语言创建包装器。 我建议Tokyo Cabinet 它具有多种语言在网上浮动的绑定

Tokyo Cabinet绩效示例: http : //www.igvita.com/2009/02/13/tokyo-cabinet-beyond-key-value-store/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM