`
Disney2002
  • 浏览: 53937 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
关于JCS
«‹›»
JCS是Jakarta的项目Turbine的子项目。它是一个复合式的缓冲工具。可以将对象缓冲到内存、硬盘。具有缓冲对象时间过期设定。还可以通过JCS构建具有缓冲的分布式构架,以实现高性能的应用。 对于一些需要频繁访问而每访问一次都非常消耗资源的对象,可以临时存放在缓冲区中,这样可以提高服务的性能。而JCS正是一个很好的缓冲工具。缓冲工具对于读操作远远多于写操作的应用性能提高非常显著。

JCS的特性
«‹›»
JCS除了简单的将对象缓冲在内存中以外,还具有几个特性,以适应企业级缓冲系统的需要。这些特性包括时间过期、索引式硬盘缓冲、并行式的分布缓冲等。
内存缓冲
«‹›»
JCS现在支持两种内存缓冲算法LRU和MRU。通常都是使用LRU算法。 org.apache.stratum.jcs.engine.memory.lru.LRUMemoryCache 使用内存缓冲区需要定义缓冲区大小,当超过缓冲区限制时,会将缓冲内容抛弃掉。如果有配硬盘缓冲,则将挤出来的缓冲内容写入硬盘缓冲区。
时间过期
«‹›»
JCS对于缓冲的对象,可以设定缓冲过期时间,一个对象在缓冲区中停留的时间超过这个时间,就会被认为是“不新鲜”而被放弃。
索引式硬盘缓冲
«‹›»
一方面,为了避免缓冲区过大,撑爆虚拟机的内存,另一方面又希望能够缓冲更多的对象,JCS可以将超出缓冲区大小的对象缓存到硬盘上。配置上也比较方便,只需要指定缓冲临时文件的存放目录位置。硬盘缓冲将缓冲对象的内容写到文件上,但是将访问索引保存在内存中,因此也能够达到尽可能高的访问效率。
并行式的分布缓冲(Lateral)
«‹›»
通常,将对象缓冲在内存中,一方面提高了应用的性能,而另一方面却使得应用不可以分布式发布。因为假设一个应用配置在两台服务器上并行运行,而两台服务器单独缓冲,则很容易导致两个缓冲区内容出现版本上的不一致而出错。一个机器上修改了数据,这个动作会影响到本地内存缓冲区和数据库服务器,但是却不会通知到另一台服务器,导致另一台上缓冲的数据实际上已经无效了。并行式的分布缓冲就是解决这个问题。可以通过配置,将几台服务器配成一个缓冲组,组内每台服务器上有数据更新,会横向将更新的内容通过TCP/IP协议传输到其他服务器的缓冲层,这样就可以保证不会出现上述情况。这个的缺点是如果组内的并行的服务器数量增大后,组内的数据传输量将会迅速上升。这种方案适合并行服务器的数量比较少的情况。
Client/Server式的缓冲(Remote)
«‹›»
客户/服务端式的缓冲集群。这种方式支持一个主服务器和最高达到256个客户端。客户端的缓冲层会尝试连接主服务器,如果连接成功,就会在主服务器上注册。每个客户端有数据更新,就会通知到主服务器,主服务器会将更新通知到除消息来源的客户端以外的所有的客户端。每个客户端可以配置超过一个服务器,第一个服务器是主服务器,如果与第一个服务器连接失败,客户端会尝试与备用的服务器连接,如果连接成功,就会通过备用服务器与其他客户端对话,同时会定期继续尝试与主服务器取得连接。如果备用服务器也连接失败,就会按照配置顺序尝试与下一个备用服务器连接。这种方式下,更新通知是一种轻量级的,一个机器上的数据更新,不会把整个数据传输出去,而只是通知一个ID,当远程的其他机器收到更新通知后,就会把对应 ID的缓冲对象从本地的内存缓冲区中移除,以保证不会在缓冲区内出现错误数据。 这种构造需要分别配置客户端和服务器,配置比较麻烦。
配置方法
«‹›»
JCS的好处之一,就是应用在开发的时候,可以不用去构思底层的缓冲配置构架。同一个应用,只需要修改配置,就可以改变缓冲构架,不需要修改应用的源代码。配置方法也比较简单,就是修改配置文件cache.ccf。这个文件放置在WEB-INF/classes目录下。配置格式类似log4j的配置文件格式。下面介绍一下使用各种缓冲结构的配置方法。
内存缓冲
«‹›»

#WEB-INF/classes/cache.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 上面配置了默认缓冲属性。一个应用中,由于对象类型的不同,可能会使用多个缓冲区,每个缓冲区都会有一个名字,如果在配置文件中没有指明特定的缓冲区的属性,所有的缓冲区都会根据默认属性来构建。上面的内容,指明缓冲区的大小为存放1000个对象,内存缓冲器使用LRUMemoryCache对象。可选的还有MRUMemoryCache,应该可以自定义新的内存缓冲区。1000个缓冲对象这个容量,是指每个缓冲区都缓冲1000个,而不是指所有缓冲区总容量。以上配置,就可以让应用运行起来。
时间过期
«‹›»
如果需要引入时间过期机制,则需要加上 jcs.default.cacheattributes.cacheattributes.UseMemoryShrinker=true jcs.default.cacheattributes.cacheattributes.MaxMemoryIdleTimeSeconds=3600 jcs.default.cacheattributes.cacheattributes.ShrinkerIntervalSeconds=60 这里指明对象超过3600秒则过期,每隔60秒检查一次。
索引式硬盘缓冲
«‹›»
索引式硬盘缓冲是辅助缓冲的一种,使用时需要做以下事情

#定义一个硬盘缓冲区产生器(Factory),取名为DC

jcs.auxiliary.DC=org.apache.stratum.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory jcs.auxiliary.DC.attributes=org.apache.stratum.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes jcs.auxiliary.DC.attributes.DiskPath=g:/dev/jakarta-turbine-stratum/raf

#这里其实就是指明了缓冲文件存放到那里去。

然后,做以下修改 jcs.default=DC 这样,所有未特别指定属性的缓冲区都会自己使用一个硬盘缓冲区,缓冲文件会以缓冲区的名字来命名。存放在指定的目录下。
横向式的并行缓冲
«‹›»
并行式的配置如下 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.10.129:1121,192.168.10.222:1121 jcs.auxiliary.LTCP.attributes.TcpListenerPort=1121 jcs.auxiliary.LTCP.attributes.PutOnlyMode=false 这里的配置是在41,129,221三台机器上实现并行缓冲的。 大家都在1121端口上监听,同时与另外两台机器连接。如果连接失败,就会等待一个时间后再连接一次,直到连接成功为止。三台机器中任意一台的缓冲区发生更新,比如put和remove动作,就会把更新传递给另外两台。
单独指明某个缓冲区的属性
«‹›»
如果,针对某个缓冲区,比如叫做TestCache1,需要单独配置属性,可以如下配置。 jcs.region.testCache1=DC,LTCP jcs.region.testCache1.cacheattributes=org.apache.stratum.jcs.engine.CompositeCacheAttributes jcs.region.testCache1.cacheattributes.MaxObjects=1000 jcs.region.testCache1.cacheattributes.MemoryCacheName=org.apache.stratum.jcs.engine.memory.lru.LRUMemoryCache jcs.region.testCache1.cacheattributes.UseMemoryShrinker=true jcs.region.testCache1.cacheattributes.MaxMemoryIdleTimeSeconds=3600 jcs.region.testCache1.cacheattributes.ShrinkerIntervalSeconds=60
system.GroupIdCache
«‹›»
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 这可能是JCS自己的组管理体系上的缓冲区。

Client/Server式的缓冲(Remote)
«‹›»
这种构架需要单独配置客户端和服务端

相关条目
«‹›»

    * Cache
    * jakarta

外部资源
«‹›»
JCS官方站点
分享到:
评论

相关推荐

    一个简单jcs实例,一看就会的程序

    Java Cache System(JCS)是一个开源的、基于内存的分布式缓存系统,主要用来提高应用程序的性能和...通过深入学习和实践,你可以掌握更多关于JCS的高级特性,如缓存同步、事件监听、缓存压缩等,以提升你的应用性能。

    jcs.rar_JCS_Java Caching System_jcs java

    Java Caching System(JCS)是一个高性能的、可扩展的分布式缓存系统,主要用于提高基于数据库的Web应用程序的性能。JCS是用Java语言编写的,它的设计目标是减少对数据库的访问频率,通过存储经常访问的数据在内存中...

    jcs-1.3资源包

    **JCS(Java Cache System)1.3 资源包详解** JCS(Java Cache System)是一款开源的、高性能的缓存系统,主要用于提高应用程序的性能和响应速度。它通过将常用数据存储在内存中,避免了频繁的数据库访问,从而提升...

    Jcs1.3.Jar

    **JCS(Java Caching System)1.3.jar** JCS(Java Caching System)是一个开源的、基于内存的分布式缓存系统,主要用于提高应用程序的性能和可伸缩性。JCS是Apache软件基金会下的一个项目,其核心设计目标是为Java...

    JCS 实践

    **JCS实践详解** JCS,全称Java Caching System,是一个基于Java开发的分布式缓存系统,旨在提升应用程序的性能,特别是在高读取、低写入场景下。JCS不仅提供基本的内存缓存功能,还具备丰富的高级特性,如内存管理...

    jcs缓存所需要的包

    JCS(Java Caching System)是Apache软件基金会开发的一个开源的、分布式的对象缓存系统,主要用于提高应用程序的性能和可伸缩性。它通过存储经常访问的数据到内存中,减少了对数据库或其他资源的访问,从而加快了...

    jcs 所需jar包 共3个

    标题中的"jcs 所需jar包 共3个"指的是Java Caching System(JCS)所需的三个核心组件。JCS是一个开源的内存缓存系统,用于提高应用程序的性能和响应速度,它通过将数据存储在内存中,避免了频繁的数据库访问。这三份...

    JCS简介

    ### JCS 简介及关键技术点 #### 一、JCS 概述 JCS(Jakarta Caching System)是Apache Jakarta项目下的一个子项目,最初为Turbine项目的一部分,旨在为Java应用程序提供一个高效且灵活的分布式缓存解决方案。通过...

    jcs 教程 缓冲

    Java Caching System (JCS) 是一个开源的缓存解决方案,它主要用于提高应用程序的性能,尤其是在处理大量数据库查询时。JCS通过将常用数据存储在内存中,避免了频繁访问数据库,从而减轻了数据库的负载。在【描述】...

    JCS1.3开源的缓存架构

    **JCS(Java Caching System)1.3 开源缓存架构详解** JCS(Java Caching System)是一个开源的、高性能的缓存框架,它主要用于提高应用的性能和响应速度,通过将常用数据存储在内存中,避免了频繁地访问数据库或...

    jcs缓存处理

    **JCS(Java Caching System)详解** JCS(Java Caching System)是Apache软件基金会的一个开源项目,它提供了一种高效、灵活的缓存解决方案,特别适用于Web开发中的数据缓存需求。JCS的核心目标是提高应用程序的...

    JCS所需的资源包 concurrent.jar

    Java Concurrency Service (JCS) 是一个开源的Java缓存系统,由Apache软件基金会开发,旨在提高应用程序的性能和效率。`concurrent.jar` 文件是JCS的核心组件,包含了实现并发和缓存管理的类库。它依赖于Java的并发...

    JCS简介及文档

    JCS缓存入门及简介

    jcs-elpa.github.io:jcs-elpa主页的官方仓库

    "jcs-elpa主页的官方jcs-elpa"进一步确认了这个仓库是jcs-elpa项目的官方存在,用户可以通过这个平台获取关于jcs-elpa的最新信息和资源。"链接:"后面可能省略了一个实际的网址,用户可以访问该网址来浏览和使用jcs-...

    本地缓存(一)ehcache/jcs/cache4j/jcs的性能测试与使用场景分析

    本文将主要探讨本地缓存的几个常见实现,包括Ehcache、JCS(Java Caching System)和Cache4j,并进行性能测试,同时分析它们各自适用的使用场景。 首先,Ehcache是一个广泛使用的开源Java缓存解决方案,它提供了...

    昆仑海岸 JCS大量程系列超声波物位变送器使用说明书.PDF

    昆仑海岸 JCS大量程系列超声波物位变送器使用说明书PDF,昆仑海岸 JCS大量程系列超声波物位变送器使用说明书

    JCS-018立时加工中心主轴箱及(sw+说明书+cad)cad图纸毕业生设计书.zip

    《JCS-018立式加工中心主轴箱及CAD设计详解》 在机械工程领域,加工中心是集高效、精密和自动化于一体的先进设备,主要用于复杂零件的批量生产。"JCS-018立式加工中心"是其中一种典型代表,其主轴箱作为核心部件,...

    JCS-018立时加工中心主轴箱及(sw+说明书+cad).rar

    《JCS-018立式加工中心主轴箱及设计资料详解》 立式加工中心(Vertical Machining Center,简称VMC)是现代机械加工领域广泛应用的一种高效自动化设备,主要用于进行多面、多工序的精密零件加工。JCS-018型号的立式...

    触屏键盘国产jcs手机地图全

    【标题】"触屏键盘国产jcs手机地图全"揭示了这一内容主要涉及的是针对中国国产手机,特别是那些具备触屏和键盘功能的设备,提供全面的JCS手机地图服务。这里的“JCS”可能指的是某款特定的地图应用或者导航系统,它...

Global site tag (gtag.js) - Google Analytics