发表时间:2009-01-22
最后修改:2009-01-22
在我们的web应用中,大家可能经常会用到oscache来缓存数据。但是当你的应用服务器是集群环境的情况下,通常会有数据不同步的问题。为了解决这样的问题,可以利用IP组播实现集群环境下的节点间缓存数据的同步。
经过在2台PC机上分别启动tomcat,运行库存web应用,调用被缓存的方法,然后在其中一台更改缓存的结果,经测试,另一台的缓存被同步更新了。
这为集群环境下,各节点的同步提供了新的解决途径。
OSCache缓存组件提供了在集群下进行同步的支持。
只要在oscache.properties文件里添加如下内容就可以了,其中mcast_addr=231.12.21.132的值可以改变,其取值范围根据IP地址的规则(为某些应用预留了特殊的IP地址)来定。
cache.event.listeners=com.opensymphony.oscache.plugins.clustersupport.JavaGroupsBroadcastingListener
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)
在配置的过程中主要用到到的JAR包:
oscache-2.4.1.jar 缓存组件
jgroups-all.jar 基予JGroup的IP组播
commons-logging.jar 日志包
concurrent.jar 处理线程读写同步