项目中需要用jbosscache解决分布式cache问题。我们想实现如下cache模式:
假设集群有2个节点,分别是node1和node2,我们要缓存的对象叫test.table1,
1、node1 检索test.table1的id为“id1”的值, 这时,由于缓存中没有相应数据,它会先访问数据库,然后缓存在本地,即调用类似treecache.put("/test/table1","id1" "value1")的语法保存在缓存中;这时其他节点的cache不受影响;下次node1再次访问该值,就会从缓存中取到该值。
2、同样,node2访问test.table1的id为“id1”的值,这时缓存中也没有该值,同样访问数据库,然后放到缓存中。
3、node1修改了test.table1的id为“id1”的值,这时,应该调用treecache的remove方法,将改对象清除出缓存,并向node2发送invalidation通知,使node2也清除相应的对象。
我们在考察了jbosscache支持的4种同布方法(REPL_ASYNC,REPL_SYNC,INVALIDATION_ASYNC,INVALIDATION_SYNC)后,觉得INVALIDATION_SYNC这种方式满足我们的需求。即各个节点都单独保留自己的cache数据,在查询数据库后,保存在本地的缓存中,这时不同步数据到其他节点。但当某个节点修改了缓存中的数据,这时需要发送
invalidation消息到其他节点,使得其他节点删除相应的缓存。
在通过1个下午的测试后,结果和我们设想的有很大出入,以下就是测试结果:
1.node1 加入新的数据 /test1,正常,node2相应的缓存没有变化;
2.node2加入新的数据/test1,奇怪的事情发生了,node1的 /test1节点不见了,我看日志,确认它受到了Eviction消息,即数据失效消息;
3、同样,我们再次在node1加入数据/test1,结果,node2的/test1数据不见了,同样是收到了相应的数据失效消息。
以上现象,会导致node1到数据库取数据,更新缓存,node2的缓存中相应数据会因此失效,下次node2取同样的数据时,由于数据失效,还要去数据库取,再次更新node2缓存后,此时,node1将收到缓存失效消息。这样循环往复,实际上缓存一点也没有起到分布式的作用。
实际上,应该是node1和node2分别保存自己的缓存,只有在我们更新的数据或删除了数据时,这时才能发送invalidation消息,其他节点清除相应缓存数据。
有没有朋友用过INVALIDATION模式,帮我解答下这个问题,谢谢!
分享到:
相关推荐
4. Replication模块:这部分源代码展示了如何在集群间复制和同步数据,包括异步和同步两种模式。 三、Sample应用 在JBossCache-1.2.4的sample目录下,包含了一些示例程序,用于演示如何在实际项目中集成和使用...
JBossCache的配置可以通过XML文件进行,允许用户自定义缓存模式、大小、过期策略、缓存加载策略等。这些设置对于优化性能和满足特定应用需求至关重要。 **6. 缓存生命周期管理** 缓存对象有其生命周期,包括创建、...
JbossCache中文文档由邱奎宁翻译,本人制作。
在集群环境中,JBossCache支持多种缓存复制模式,包括本地模式和复制的缓存模式。它提供了丰富的集群特性,如失效处理、状态传递等。 #### 缓存加载器 缓存加载器负责从数据源加载数据到缓存中,提供了接口和生命...
jbosscache-core-3.2.7.GA.jar
- 缓存模式:支持主-从、无中心和分区等模式,以适应不同场景的需求。 - 并发控制:使用乐观锁或悲观锁策略来管理并发访问,防止数据冲突。 使用这些库,开发者可以构建高性能的应用,利用缓存提升响应速度,并在...
jbosscache-1.4.1.jar
### jbosscache manual #### 1. 引言 JBoss Cache 是一款高性能、可扩展的内存数据存储系统,支持事务处理与复制功能。它主要用于缓存 Plain Old Java Objects (POJOs),使得开发人员能够透明地操作这些对象而无需...
jbosscache-core-3.1.0.jar
同样,根据通知方式的不同,分为同步(INVALIDATION_SYNC)和异步(INVALIDATION_ASYNC)。 #### 六、JBoss Cache的关键机制 1. **缓存加载器**:缓存加载器是JBoss Cache的重要组成部分,它允许将缓存的数据节点持久...
其中jbosscache-core-sources.jar为源代码jar包;jbosscache-core.jar含jbosscache的核心代码; lib中含有jbosscache-core.jar中所用到得class文件; etc中含有一些配置文件的样例
红帽公司jboss的内部资料,版本 2.2.0 Poblano版,需要的可以下载!
JBossCache 支持多种缓存模式,包括本地模式、复制模式等。不同的缓存模式适用于不同的应用场景: - **本地模式**:仅在当前节点上缓存数据,不与其他节点同步。 - **复制模式**:在多个节点之间复制缓存数据,确保...
【标题】"benchmark-jbosscache" 是一个与性能基准测试相关的项目,主要关注的是JBoss Cache的性能评估。在Java开发中,缓存技术是提高应用性能的关键工具,而JBoss Cache是JBOSS组织提供的一种分布式内存缓存解决...
构建分布式多级缓存时,需要配置JBossCache3.0服务端,创建如TreeCache.xml的配置文件,其中定义了集群名称、缓存复制模式和JGroup通信配置等关键参数。通过配置这些参数,服务层缓存可以建立起集群的树形结构,并...
NULL 博文链接:https://j2ee2009.iteye.com/blog/773519
<jbosscache xmlns="urn:jboss:jbosscache-core:config:3.0"> <l1-lifespan>0 </jbosscache> ``` 这个配置文件设置了乐观锁模式、分布式同步集群、LFU(Least Frequently Used)淘汰...
JBoss,作为一款在J2EE应用服务器领域中迅速崛起的开源解决方案,因其商业友好的LGPL授权和社区驱动的开发模式,深受开发者喜爱。该技术的核心特性包括基于JMX微内核的服务总线,面向服务的架构(SOA),以及统一的...