`
f7536
  • 浏览: 2446 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

OSCache 集群中数据同步问题

阅读更多
最近使用oscach集群中,有些问题不甚了解,请各位提些建议。
现有的配置:
oscache.properties 中使用默认jgroup配置

cache.event.listeners=com.opensymphony.oscache.plugins.clustersupport.JavaGroupsBroadcastingListener

cache.cluster.properties=UDP(mcast_addr=231.12.21.132;mcast_port=45566;ip_ttl=32;\
mcast_send_buf_size=150000;mcast_recv_buf_size=80000):\
PING(timeout=2000;num_initial_members=3):\
MERGE2(min_interval=5000;max_interval=10000):\
FD_SOCK:VERIFY_SUSPECT(timeout=1500):\
pbcast.NAKACK(gc_lag=50;retransmit_timeout=300,600,1200,2400,4800;max_xmit_size=8192):\
UNICAST(timeout=300,600,1200,2400):\
pbcast.STABLE(desired_avg_gossip=20000):\
FRAG(frag_size=8096;down_thread=false;up_thread=false):\
pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;print_local_addr=true)

cache.cluster.multicast.ip=231.12.21.132

在启动两个测试节点后发现集群正常建立

-------------------------------------------------------
GMS: address is 172.16.3.98:3828
-------------------------------------------------------
2008-05-23 11:54:17 3344 INFO  com.opensymphony.oscache.plugins.clustersupport.J
avaGroupsBroadcastingListener     - JavaGroups clustering support started succes
sfully
2008-05-23 11:54:20 6532 INFO  com.opensymphony.oscache.plugins.clustersupport.
JavaGroupsBroadcastingListener     - A new member at address '172.16.3.98:3831'
has joined the cluster

然后在使用过程中发现,一个节点 Cache.putInCache(key,content) 加入缓存后,
在另一个节点并没有受到任何数据同步信息。但是一个节点 Cache.flushEntry(key) 后,
在另一个节点产生集群通知信息。

2008-05-23 11:54:42 28594 INFO  com.opensymphony.oscache.plugins.clustersupport
.AbstractBroadcastingListener     - Cluster notification (type=1, data=global_te
st) was received.

于是简单翻看了osccache 的Cache 和JavaGroupsBroadcastingListener源码发现;
在Cache的事件处理中,JavaGroupsBroadcastingListener 只是提供了 cacheflushXXX 相关的信息通知,
cacheEntryAdded,cacheEntryRemoved,cacheEntryUpdated都未做处理。

源码实现在 AbstractBroadcastingListener:
  public void cacheFlushed(CachewideEvent event) {
        if (!Cache.NESTED_EVENT.equals(event.getOrigin()) && !CLUSTER_ORIGIN.equals(event.getOrigin())) {
            if (log.isDebugEnabled()) {
                log.debug("cacheFushed called (" + event + ")");
            }
   
    //此处发送通知
            sendNotification(new ClusterNotification(ClusterNotification.FLUSH_CACHE, event.getDate()));
        }
    }

    // --------------------------------------------------------
    // The remaining events are of no interest to this listener
    // --------------------------------------------------------
    public void cacheEntryAdded(CacheEntryEvent event) {
    }

    public void cacheEntryRemoved(CacheEntryEvent event) {
    }

    public void cacheEntryUpdated(CacheEntryEvent event) {
    }

    有此,产生了疑问,Oscache支持集群,那么他的数据同步机制在哪里?难道节点间数据同步需要自己来实现?
     如果要自己实现的话,仅仅支持flush 通知这样的集群还有意义吗?

     查看了oscache cluster的文档也没发现这方面的信息,请使用过oscache集群的高手们指教。

分享到:
评论
4 楼 gherb 2008-09-18  
codeutil 写道
Oscache是特意采用这种机制的,oscache属于分布式cache ,而不是集群式。
Oscache这种方式的好处是,cache占用的内存少,
通过广播缓存的更新消息,既保障了缓存的有效性,
又避免了缓存数据同步的消耗。
jbosscache就是使用了同步缓存数据的方式,
在缓存内容更新较频繁的情况下,效率极其低。
而oscache就不存在这样的问题。




那么如何处理更新的数据?意思就是说更新的数据就忽略掉了麽?那节点之间怎么可能还同步啊?
3 楼 codeutil 2008-05-27  
Oscache是特意采用这种机制的,oscache属于分布式cache ,而不是集群式。
Oscache这种方式的好处是,cache占用的内存少,
通过广播缓存的更新消息,既保障了缓存的有效性,
又避免了缓存数据同步的消耗。
jbosscache就是使用了同步缓存数据的方式,
在缓存内容更新较频繁的情况下,效率极其低。
而oscache就不存在这样的问题。


2 楼 discolt 2008-05-27  
最近我也碰到这个问题,不知道有人解决了吗?
1 楼 bottom 2008-05-23  
个人认为,oscache的源代码要经过修改和扩充才能正确处理clustering的需求。但不知道为什么作者多年来都不修改,也不知道社区里怎么没有人反映。当大家都不吱声的时候,就好象没有这回事一样。不过,在俺的项目里,俺都是要修改的。

相关推荐

    oscache 集群和数据同步

    《osCache集群与数据同步详解》 osCache是一款开源的Java缓存框架,它提供了高效、易用的缓存管理方案,广泛应用于大型分布式系统中,以提高应用程序的性能和响应速度。osCache的核心功能包括缓存管理、缓存同步...

    oscache-java缓存框架

    - **集群支持**:在分布式环境中,osCache可以实现多节点间的缓存同步,确保数据一致性。 - **缓存预热**:允许在应用启动时加载预定义的数据到缓存,提高应用启动速度。 - **缓存监听器**:可以通过监听器来监控...

    oscache对象缓存

    通过使用JMS(Java Message Service)或RMI(Remote Method Invocation)通信协议,oscache可以在集群中的不同节点之间同步缓存状态,确保数据的一致性。 在实际应用中,oscache通常与Spring框架集成,以实现更灵活...

    oscache-2.1.1-full.zip_full_oscache_oscache 2_oscache2

    6. **事件监听**: 提供了缓存事件监听器接口,允许开发者在数据的存取过程中进行额外的操作,如数据同步、日志记录等。 **压缩包内容分析** 1. **docs**: 包含osCache的文档,包括用户手册、API参考等,是学习和...

    oscache缓存

    缓存同步是osCache的另一个关键特性,它确保了在多线程环境中的数据一致性。当多个线程同时读写同一缓存项时,osCache能通过锁机制保证操作的正确顺序,防止数据的不一致。 osCache还支持分布式缓存,这意味着可以...

    OSCache缓存技术(6)【实例】

    此外,OSCache还支持集群环境下的缓存同步,通过`ClusteredCache`接口,可以在多台服务器之间共享缓存数据,实现分布式缓存。这在大型分布式系统中非常关键,因为它能确保数据的一致性和可用性。 OSCache的配置主要...

    OSCache简介

    在集群环境中,OSCache 可以通过 JGroups 实现分布式缓存,使得多个服务器间的数据共享和一致性得以保证。缓存预热是指在应用启动时,预先加载一部分数据到缓存中,以减少用户等待时间。 使用 OSCache 时,开发者...

    oscache.rar

    在集群环境中,这有助于进行数据同步和业务逻辑处理。 6. **故障转移和容错**:在集群环境中,如果一个节点出现故障,OSCache应能自动将请求重定向到其他正常工作的节点,保证服务的连续性。 7. **性能优化**:...

    oscache2.1_ful

    6. **缓存同步**: 在分布式环境中,OSCache 支持集群间的缓存同步,保证所有节点的数据一致性。 **二、OSCache 的工作原理** OSCache 基于 JVM 内存进行缓存,通过序列化和反序列化对象来存储和读取。当一个对象被...

    应用OSCache提升J2EE系统运行性能

    2. 集群支持:通过分布式缓存机制,不同服务器间的缓存数据可以保持同步,实现负载均衡。 3. 动态更新:当源数据发生变化时,OSCache可以通过监听机制自动更新缓存,保证数据一致性。 4. 缓存策略:支持多种缓存策略...

    oscache-2.3.jar

    2. **分布式缓存**:支持多节点间的缓存同步,适合于分布式环境,确保在集群中的数据一致性。 3. **缓存策略**:提供了多种缓存策略,如LRU(Least Recently Used)最近最少使用、FIFO(First In First Out)先进先...

    应用OSCache提升J2EE系统.pdf

    5. **分布式缓存**: 在集群环境下,OSCache支持分布式缓存,使得多个节点间的缓存保持同步。这样,无论用户请求哪个节点,都能获取到相同且最新的缓存数据,增强了系统的可扩展性和可用性。 6. **缓存预热**: 开启...

    Liferay集群负载均衡配置

    Liferay的缓存系统(如Velocity Cache或OSCache)也需要在集群间同步,以确保所有节点访问的数据是最新的。这可以通过配置缓存同步策略实现。 6. **热添加/删除节点**: 能够动态添加或移除服务器节点是集群的...

    Cache技术--OSCache

    OSCache的使用并不复杂,开发者可以通过官方文档进一步了解详细配置和高级功能,例如缓存预热、缓存同步、缓存锁定等,以充分利用其性能优化潜力。 总结,OSCache作为一款强大的缓存框架,不仅提高了Web应用的性能...

    Java对象缓存系统的实现,实现了LRU算法,并可以进行集群同步

    在这个项目中,还提到了集群同步功能,这意味着缓存系统不仅存在于单个节点上,而是可以跨多个服务器分布。这样可以提高系统的可用性和扩展性,当一个服务器负载过高或者出现故障时,其他服务器可以接管工作,保证...

    java应用服务器集群环境下代码编写要注意的问题参照.pdf

    3. **线程和定时器**:在集群环境中,单线程可能导致并发问题。例如,单线程的上传操作在集群环境下可能会导致多线程并发上传。此时,需要考虑线程同步和定时器的集群解决方案,如Spring Quartz提供的集群支持。 4....

    RocketMQ消息丢失解决方案:同步刷盘+手动提交.docx

    本文将详细介绍如何通过同步刷盘与手动提交这两种策略来解决RocketMQ中的消息丢失问题。 #### Broker的消息丢失解决方案 1. **同步刷盘**: - **背景**:默认情况下,RocketMQ采用异步刷盘的方式将消息从内存...

    页面缓存的小测试

    例如,当数据库中的数据被修改时,如何同步更新缓存中的数据。OSCache提供了一些机制,如缓存Invalidation(失效)和更新策略,可以结合具体的业务场景选择合适的方法。 此外,为了监控和调优,OSCache还提供了Web...

    二级缓存详解

    在使用二级缓存时,需要注意缓存同步和失效的问题,因为缓存中的数据可能与数据库中的数据不同步。因此,需要正确配置缓存的生命周期和清理策略,以确保数据一致性。 总之,Hibernate的二级缓存是一个强大的工具,...

Global site tag (gtag.js) - Google Analytics