gpt4 book ai didi

java - JCS LTCP AUX 缓存配置和使用

转载 作者:行者123 更新时间:2023-12-01 10:40:25 24 4
gpt4 key购买 nike

背景:

我们有 4 台物理服务器 (4 IPS),每台都在端口 80 上运行的 JBOSS 6 EAP 中运行。所有请求都通过负载均衡器重定向到其中任何一台服务器。现在我尝试为这种分布式环境实现 Java 缓存系统,以便我们的属性在每个服务器缓存中得到更新。

POC:为此,我们在本地系统上进行了一个小型 POC,实现了 JCS v1.3 横向缓存。在我们的 Maven 项目中启用它。 .ccf 文件中使用以下配置:

  jcs.default=
jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=1000
jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
# PRE-DEFINED CACHE REGION

##############################################################
##### AUXILIARY CACHES
# LTCP AUX CACHE
jcs.auxiliary.LTCP=org.apache.commons.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory
jcs.auxiliary.LTCP.attributes=org.apache.commons.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes
#jcs.auxiliary.LTCP.attributes.TcpServers=152.144.219.209:8080
jcs.auxiliary.LTCP.attributes.TcpListenerPort=1118
jcs.auxiliary.LTCP.attributes.UdpDiscoveryAddr=228.5.6.8
jcs.auxiliary.LTCP.attributes.UdpDiscoveryPort=6780
jcs.auxiliary.LTCP.attributes.UdpDiscoveryEnabled=true
jcs.auxiliary.LTCP.attributes.Receive=true
jcs.auxiliary.LTCP.attributes.AllowGet=true
jcs.auxiliary.LTCP.attributes.IssueRemoveOnPut=false
jcs.auxiliary.LTCP.attributes.FilterRemoveByHashCode=false
jcs.auxiliary.LTCP.attributes.SocketTimeoOt=1001
jcs.auxiliary.LTCP.attributes.OpenTimeOut=2002
jcs.auxiliary.LTCP.attributes.ZombieQueueMaxSize=2000

并实现 getter 和 setter 方法,用于将字符串属性保存在缓存中并从缓存中获取它

public void addProp(String propId)
throws PimsAppException {
try {
configMSCache.put(propId, propId);
} catch (CacheException e) {
e.printStackTrace();
}

}

@Override
public String testProp(String propId) throws PimsAppException {
if(configMSCache!=null){
return (String) configMSCache.get(propId);
}else{
return "It dint work";
}
}

应用程序部署良好,启动时没有错误。

测试方法:将project.war部署在我的本地服务器和具有不同IP的远程服务器中。两台机器都在同一网络中,因此访问对方 IP 时没有防火墙问题。在我的服务器中保存了一个属性并获取它。 (效果很好)尝试通过远程计算机通过我的本地获取保存的属性。 (它返回空白响应)。意味着没有实现分布式缓存功能。

怀疑:1. 辅助缓存设置是否正确?我的意思是配置2.我是否正确测试了它,或者如何在开发环境中测试它。3. 作为JCS UDP Discovery,让我们支持多台机器上的相同配置,那么为什么它不能在远程机器上工作?4. 或者是否有任何缓存机制,有很好的示例和文档可以满足我的应用程序需求(如背景部分所述)。

提前致谢。

最佳答案

这个回复可能已经太晚了。但我建议以防万一,记录两台服务器上的统计信息并查看。它可能正在传播缓存,但只是在处理时间内,读取它时出现问题。例如:

JCSAdminBean admin = new JCSAdminBean();
LinkedList linkedList = admin.buildCacheInfo();
ListIterator iterator = linkedList.listIterator();
while (iterator.hasNext()) {
CacheRegionInfo info = (CacheRegionInfo)iterator.next();
CompositeCache compCache = info.getCache();
System.out.println("Cache Name: " + compCache.getCacheName());
System.out.println("Cache Type: " + compCache.getCacheType());
System.out.println("Cache Misses (not found): " + compCache.getMissCountNotFound());
System.out.println("Cache Misses (expired): " + compCache.getMissCountExpired());
System.out.println("Cache Hits (memory): " + compCache.getHitCountRam());
System.out.println("Cache value: " + compCache.get(propId));

}

关于java - JCS LTCP AUX 缓存配置和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34453492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com