当前位置: 首页 > 工具软件 > JCS > 使用案例 >

jcs配置

凌声
2023-12-01
 

接触了JCS,感觉还蛮好用,所以将其贡献出来,一起学习。jcs,是一个对象Cache,它可以把Java对象缓存起来,提高那些访问频率很高的Java对象的存取效率。特别是对于读操作远远多于写操作的应用性能提高非常显著。

JCS的特性

1 内存缓存。内存缓存支持两种算法,LRUMRU,不过通常用的为LRUorg.apache.stratum.jcs.engine.memory.lru.LRUMemoryCache。使用内存缓存区时要定义缓存区的大小,但内存缓存区满超过限制时会将缓存的内容抛弃,如果配置有硬盘缓存的话,会将其保存到硬盘缓存。

 2 时间过期。这点与session一致,可以设置对象的有限时间,超过限制的时间,就将过期对象作为垃圾对象进行清除。

 3 索引式的硬盘缓存。这个就是我们经常要用到的,为了避免服务器的内存溢出,同时保证但内存缓存区超过限制时,缓存的内容不丢弃。只需要指定缓冲临时文件的存放目录位置。硬盘缓冲将缓冲对象的内容写到文件上,但是将访问索引保存在内存中,因此也能够达到尽可能高的访问效率。

 这种硬盘缓存又分为两种。一是并行式的分布缓冲(Lateral),通常,将对象缓冲在内存中,一方面提高了应用的性能,而另一方面却使得应用不可以分布式发布。因为假设一个应用配置在两台服务器上并行运行,而两台服务器单独缓冲,则很容易导致两个缓冲区内容出现版本上的不一致而出错。一个机器上修改了数据,这个动作会影响到本地内存缓冲区和数据库服务器,但是却不会通知到另一台服务器,导致另一台上缓冲的数据实际上已经无效了。并行式的分布缓冲就是解决这个问题。可以通过配置,将几台服务器配成一个缓冲组,组内每台服务器上有数据更新,会横向将更新的内容通过TCP/IP协议传输到其他服务器的缓冲层,这样就可以保证不会出现上述情况。这个的缺点是如果组内的并行的服务器数量增大后,组内的数据传输量将会迅速上升。这种方案适合并行服务器的数量比较少的情况。

 二是Client/Server式的缓冲(Remote),客户/服务端式的缓冲集群。这种方式支持一个主服务器和最高达到256个客户端。客户端的缓冲层会尝试连接主服务器,如果连接成功,就会在主服务器上注册。每个客户端有数据更新,就会通知到主服务器,主服务器会将更新通知到除消息来源的客户端以外的所有的客户端。每个客户端可以配置超过一个服务器,第一个服务器是主服务器,如果与第一个服务器连接失败,客户端会尝试与备用的服务器连接,如果连接成功,就会通过备用服务器与其他客户端对话,同时会定期继续尝试与主服务器取得连接。如果备用服务器也连接失败,就会按照配置顺序尝试与下一个备用服务器连接。这种方式下,更新通知是一种轻量级的,一个机器上的数据更新,不会把整个数据传输出去,而只是通知一个ID,当远程的其他机器收到更新通知后,就会把对应ID的缓冲对象从本地的内存缓冲区中移除,以保证不会在缓冲区内出现错误数据。这种构造需要分别配置客户端和服务器,配置比较麻烦。

二详细的配置文件在web-Info/class目录下cache.ccf文件,配置与log4j的配置非常相似。

//内存缓存 jcs.default=DC

jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes

jcs.default.cacheattributes.MaxObjects=10000

jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache

 //时间限制

jcs.default.cacheattributes.UseMemoryShrinker=true

jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds=36000

jcs.default.cacheattributes.ShrinkerIntervalSeconds=60

jcs.default.cacheattributes.MaxSpoolPerRun=500

jcs.default.elementattributes=org.apache.jcs.engine.ElementAttributes

jcs.default.elementattributes.IsEternal=false

 //索引硬盘配置

jcs.auxiliary.DC= org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory

jcs.auxiliary.DC.attributes= org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes

jcs.auxiliary.DC.attributes.DiskPath=cache//配置缓存保存的地

jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=10000

 jcs.auxiliary.DC.attributes.MaxRecycleBinSize=100000

jcs.auxiliary.DC.attributes.maxKeySize=2000000

//如果你想配置多台并行的话

jcs.auxiliary.LTCP=org.apache.jcs.auxiliary.lateral.LateralCacheFactory

jcs.auxiliary.LTCP.attributes=org.apache.jcs.auxiliary.lateral.LateralCacheAttributes

jcs.auxiliary.LTCP.attributes.TransmissionTypeName=TCP

jcs.auxiliary.LTCP.attributes.TcpServers=192.168.1.182:8091,192.168.1.109:8091

jcs.auxiliary.LTCP.attributes.TcpListenerPort=8091

jcs.auxiliary.LTCP.attributes.PutOnlyMode=false

这里配置是在两台机器上实现并行缓存的192.168.1.182109上面,并且端口都为8091

最好加上jcs自己的组的管理体系,他实现的作用与负载均衡有的类似

jcs.system.groupIdCache=DC

jcs.system.groupIdCache.cacheattributes=org.apache.stratum.jcs.engine.CompositeCacheAttributes jcs.system.groupIdCache.cacheattributes.MaxObjects=10000

jcs.system.groupIdCache.cacheattributes.MemoryCacheName=org.apache.stratum.jcs.engine.memory.lru.LRUMemoryCache

还有那Client/Server式的缓冲,我没有涉及到。也就不说了

 类似资料: