我们有一个大型的 tomcat 服务器集群,我正在尝试找到一种有效的方法来在所有服务器之间共享计数。该计数是购买的“小部件”的数量,需要针对每次页面浏览进行检查。任何服务器都可以完成计数的销售和增量,此时新值应可供所有集群成员使用。
我们不想使用数据库中的计数,因为在整个集群的更新之间会有很多页面视图,并且为每个页面视图对数据库进行获取操作似乎没有必要。
我们有一个广泛的 memcached 集群,我们可以在其中存储值,在每个页面视图上获取它,并且任何更新该值的人都会将新值设置到集群中。这又显得很浪费,因为每个页面视图都需要缓存。
我想做的是在每个服务器上都有一个内存值,并且多播(或类似机制)消息告诉所有服务器它们刚刚增加并且新数字是 X。这似乎是最有效的,因为仅在进行更新时才执行操作,而不是为每个页面视图执行操作。
您在应用程序中是如何处理这个问题的?我是不是想太多了……我们应该把它扔到内存缓存中吗?
Thanks!
Both JBoss缓存 http://jboss.org/jbosscache and EhCache http://ehcache.org/可以在 UDP 多播模式下运行,跨多个虚拟机复制内存缓存。与 memcached 不同,它们在 VM 内部运行,因此“缓存获取”本质上是一种免费操作。它们也是纯java的,所以不需要维护单独的缓存系统。
JBossCache 还提供事务和同步/异步操作,因此如果您对这些感兴趣,我会选择它而不是 EHCache。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)