J2Cache:开源中国平台的高效缓存解决方案

需积分: 50 10 下载量 86 浏览量 更新于2024-07-21 收藏 665KB PDF 举报
J2Cache是一个针对Java应用设计的两层缓存框架,它在开源中国社区中被广泛应用,尤其是在处理高并发场景下,如每天IP超过50万,PV超过300万,动态请求处理量达到2亿次的大型网站。系统配置包括高性能的主服务器和多个CDN节点,以提供快速响应和互动体验。 在OSChina的缓存策略中,Ehcache被选用作为主要的内存缓存解决方案,利用timeToLiveSeconds属性实现自动清除过期数据,同时支持程序和手动清除。Ehcache的特点在于其内存中的高速存储,支持两级缓存(内存和磁盘)以及多区域的数据结构,提供了缓存数据侦听接口,并兼容多种集群部署方式。 然而,在实际运行中,Ehcache集群方案遇到了挑战,比如高峰期重启可能导致缓存雪崩,单节点难以应对突发攻击,且在多节点环境中可能存在数据同步问题。这些局限性暴露了集中式缓存(如Redis、Memcached)的不足。 为了弥补这些缺点,J2Cache的设计理念是采用分层缓存策略。它将Ehcache作为第一级(L1)缓存,负责快速处理常用数据,而Redis则作为第二级(L2)缓存,用于更持久的数据存储和分布式缓存。通过这种方式,J2Cache可以利用Ehcache的高速性能处理频繁访问的数据,同时借助Redis的分布式特性解决大规模并发和数据一致性问题。 在数据读取流程上,J2Cache首先尝试从Ehcache获取数据,如果数据不在缓存或者已过期,再转向Redis或数据库进行查询。这样的设计旨在优化性能,减少对数据库的压力,并提高整体系统的可用性和可扩展性。 J2Cache是一个在高并发环境下优化缓存性能的实用框架,通过结合Ehcache和Redis,提供了一种灵活且有效的缓存解决方案,以适应不断增长的用户需求和技术挑战。在选择缓存系统时,会根据具体的应用场景和需求,权衡速度、容量、数据一致性和扩展性等因素。
2021-06-12 上传
J2Cache是OSChina目前正在使用的两级缓存框架(要求至少 Java 8)。第一级缓存使用内存(同时支持 Ehcache 2.x、Ehcache 3.x 和 Caffeine),第二级缓存使用 Redis(推荐)/Memcached。由于大量的缓存读取会导致L2的网络成为整个系统的瓶颈,因此L1的目标是降低对L2的读取次数。该缓存框架主要用于集群环境中。单机也可使用,用于避免应用重启导致的缓存冷启动后对后端业务的冲击。 数据读取: 读取顺序 -> L1 -> L2 -> DB 数据更新 1、从数据库中读取最新数据,依次更新L1 -> L2 ,发送广播清除某个缓存信息 2、接收到广播(手工清除缓存 & 一级缓存自动失效),从L1中清除指定的缓存信息 J2Cache配置: 配置文件位于core/resources目录下,包含三个文件: j2cache.properties J2Cache核心配置文件,可配置两级的缓存,Redis服务器、连接池以及缓存广播的方式 caffeine.properties如果一级缓存选用Caffeine ,那么该文件用来配置缓存信息 ehcache.xml Ehcache的配置文件,配置说明请参考Ehcache文档 ehcache3.xml Ehcache3的配置文件,配置说明请参考Ehcache文档 network.xml JGroups网络配置,如果使用JGroups组播的话需要这个文件,一般无需修改 实际使用过程需要将所需的配置文件复制到应用类路径中,如WEB-INF/classes目录。 J2Cache运行时所需jar包请查看core/pom.xml 测试方法: 1、安装Redis 2、git clone https://gitee.com/ld/J2Cache 3、修改core/resource/j2cache.properties配置使用已安装的Redis服务器 4、在命令行中执行mvn package -DskipTests=true进行项目编译 5、打开多个命令行窗口,同时运行runtest.sh 6、在 > 提示符后输入help查看命令,并进行测试