Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有共享对象的Tomcat 6集群_Java_Tomcat_Cluster Computing - Fatal编程技术网

Java 具有共享对象的Tomcat 6集群

Java 具有共享对象的Tomcat 6集群,java,tomcat,cluster-computing,Java,Tomcat,Cluster Computing,我们有一个很大的tomcat服务器集群,我正试图找到一种有效的方法来共享所有这些服务器的数量。此计数是购买的“小部件”的数量,需要针对每个页面视图进行检查。任何服务器都可以完成销售和增值,此时新值应可供所有集群成员使用 我们不想使用数据库中的计数,因为在整个集群的更新之间会有很多页面视图,而且似乎没有必要对每个页面视图对db执行get操作 我们有一个广泛的memcached集群,我们可以在其中存储值,并在每个页面视图中获取它,任何更新值的人都可以为集群设置新值。由于每个页面视图都有一个缓存get

我们有一个很大的tomcat服务器集群,我正试图找到一种有效的方法来共享所有这些服务器的数量。此计数是购买的“小部件”的数量,需要针对每个页面视图进行检查。任何服务器都可以完成销售和增值,此时新值应可供所有集群成员使用

我们不想使用数据库中的计数,因为在整个集群的更新之间会有很多页面视图,而且似乎没有必要对每个页面视图对db执行get操作

我们有一个广泛的memcached集群,我们可以在其中存储值,并在每个页面视图中获取它,任何更新值的人都可以为集群设置新值。由于每个页面视图都有一个缓存get,这似乎又是一种浪费

我想做的是在每台服务器上都有一个内存中的值,一条多播(或类似的机制)消息告诉所有服务器它们刚刚增加,新的数字是X。这似乎是最有效的,因为只有在进行更新时才采取操作,而不是对每个页面视图进行操作

您在应用程序中是如何处理此问题的?我是不是想得太多了。。。我们应该把它扔进内存缓存吗

谢谢

两者都可以在UDP多播模式下运行,跨多个虚拟机复制内存中缓存。与memcached不同,它们在VM内部运行,因此“cache-get”本质上是一个免费操作。它们也是纯java的,因此不需要维护单独的缓存系统

JBossCache还提供事务和同步/异步操作,所以如果您感兴趣,我会选择EHCache。请看一看。它为您提供了一个分布式JVM内存模型,因此每个框上的对象值都会立即得到更新

它们在Ehcache周围有一个包装器,或者您可以通过一些XML配置对代码透明地使用它


Terracotta提供商业和开放源代码许可证,通常情况下,他们会淡化开放源代码以支持商业——但免费的开放源代码肯定会满足您的需要,并允许您的应用程序进行很长的扩展。

如果您已经拥有memcached基础设施,我不明白你为什么不使用它,因为它是这个的理想选择。不管是浪费还是沧海一粟,只有测试才能告诉你。
与引入诸如terracotta或另一种缓存共享机制等侵入性的东西相比,该体系结构也将非常简单

+1表示“无论是浪费还是大海中的另一滴水,只有测试才能告诉你”好吧,无论你如何切割它都是浪费。。。测试将决定浪费的程度。Memcached显然是阻力最小的路径,但我喜欢jvm中的缓存思想。现在开始阅读。我们决定现在使用简单的方法,使用我们的memcached。我们将继续关注jvm缓存产品,但出于时间的考虑,我们将继续使用我们目前拥有的产品。感谢您提供的信息。EhCache很有趣。以后我会把它放在我的名单上。谢谢。我非常喜欢陶土。我们已经决定继续我们现在所拥有的,但将在下一个项目中对此进行评估。