(转)Ehcache作为分布式缓存的研究
ehcache支持两种拓扑结构,一种是Distributed Caching,另一种是Replicated Caching
Distributed Caching
这和一般意义上的分布式缓存非常类似,这一类型的缓存是有client-server之分的,application通过client向server端请求缓存数据,在server端,数据是散列到多个节点上的。具体而准确的拓扑结构见下图(该图正是Terracotta Server Array的拓扑结构,ehcache的分布式实现是依赖Terracotta Server Array实现的):

一方面:L1是客户端结点,基于Terracotta Server Array的ehcache集群是由L1和L2共同组成的,它们一起共享应用程序的状态和数据。L1相当于一级缓存,存储当前应用结点上的“hot-set”数据。L1各结点上数据可能是不一样的。
另一方面:L2作为二级缓存,将储存所有L1结点上的数据,作为所有缓存数据的一份完整拷贝。在L2上,所有数据会均匀散列到MirrorGroup上,从而成为典型的“分布式”缓存,同时,每个MirrorGroup会有一个active结点和0到多个standby(passive)结点,standby结点是active结点的备份,一单active结点当机,standby结点就将自动成为active节点,从而确保一个MirrorGroup的可靠性,也即所谓的“分区容错性”(Partition Tolerance) 。
应该说,Terracotta Server Array的拓扑结构在水平伸缩和可靠性上都是非常理想的,但是非常遗憾的是,Terracotta Server Array只在商业版的ehcache中提供,换言之,开源版本的ehcache是无法实现标准意义上的“分布式缓存”的。
Replicated Caching
和Distributed Cacheing相比,Replicated Caching并不具有太多的优势,特别是在scale out方面。Replicated Caching和应用服务器集群的session复制非常类似,其作用仅限于确保在集群环境下各应用结点的缓存数据保持一致。ehcache的缓存复制支持rmi,jms,cache server等多种方式。
初步结论
如果你需要在开源产品范围内寻找真正的分布式缓存,echache可能不是你想要到的,memcached可能是一个不错的选择。当然,限于时间问题,我对ehcache,特别是Replicated拓扑结构的caching研究地不是很深入,如果读者有关于如何基于开源版本的ehcache实现分布式集群的经验,欢迎指正。
(转)Ehcache作为分布式缓存的研究的更多相关文章
- EhCache RMI 分布式缓存/缓存集群
EhCache 系统简介 EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点. EhCache 的主要特性有: 快速.精干 简单: 多种缓存策略: 缓存数据有两级:内存和磁盘, ...
- 【开源项目系列】如何基于 Spring Cache 实现多级缓存(同时整合本地缓存 Ehcache 和分布式缓存 Redis)
一.缓存 当系统的并发量上来了,如果我们频繁地去访问数据库,那么会使数据库的压力不断增大,在高峰时甚至可以出现数据库崩溃的现象.所以一般我们会使用缓存来解决这个数据库并发访问问题,用户访问进来,会先从 ...
- mybatis中二级缓存整合ehcache实现分布式缓存
mybatis自带二级缓存,但是这个缓存是单服务器工作,无法实现分布式缓存.那么什么是分布式缓存呢?假设现在有两个服务器1和2,用户访问的时候访问了1服务器,查询后的缓存就会放在1服务器上,假设现在有 ...
- EhCache+Redis实现分布式缓存
Ehcache集群模式 由于 EhCache 是进程中的缓存系统,一旦将应用部署在集群环境中,每一个节点维护各自的缓存数据,当某个节点对缓存数据进行更新,这些更新的数据无法在其它节点中共享,这不仅会降 ...
- 5个强大的Java分布式缓存框架推荐
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的 缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了 ...
- Java分布式缓存框架
http://developer.51cto.com/art/201411/457423.htm 在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓 ...
- 5个强大的Java分布式缓存框架
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了5 ...
- EhCache 分布式缓存/缓存集群
开发环境: System:Windows JavaEE Server:tomcat5.0.2.8.tomcat6 JavaSDK: jdk6+ IDE:eclipse.MyEclipse 6.6 开发 ...
- EhCache 分布式缓存/缓存集群(转)
开发环境: System:Windows JavaEE Server:tomcat5.0.2.8.tomcat6 JavaSDK: jdk6+ IDE:eclipse.MyEclipse 6.6 开发 ...
随机推荐
- MATLAB新手教程
MATLAB新手教程 .MATLAB的基本知识 1-1.基本运算与函数 在MATLAB下进行基本数学运算,仅仅需将运算式直接打入提示号(>>)之後,并按入Enter键就可以.比如 ...
- ios 7.1 7.1.1 半完美越狱后 电脑訪问手机越狱文件夹的方法
7.1和7.1.1因为越狱不成熟,半完美越狱后电脑上无法訪问系统越狱文件夹,如var usr 等等. 今天有些意外地发现,能够在电脑上使用手机的越狱文件夹我手机 i4 7.1.1 联通 半完美越狱,没 ...
- JQuery UI Widget Factory官方Demo
<!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- Codeforces Gym 100637G G. #TheDress 暴力
G. #TheDress Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100637/problem/G ...
- 深度学习论文笔记-Deep Learning Face Representation from Predicting 10,000 Classes
来自:CVPR 2014 作者:Yi Sun ,Xiaogang Wang,Xiaoao Tang 题目:Deep Learning Face Representation from Predic ...
- [Canvas] Make Canvas Responsive to Pixel Ratio
Canvas is great for high performance graphics rendering but by default the results look blocky on ph ...
- fedora 20 注销
当系统只有一个用户和只有一个桌面环境时,Fedora 20将不会显示Log Out菜单. 如果你确实需要logout,可以通过执行gnome-session-quit命令来logout. 如果你确实需 ...
- Spark_Api_图解
- 强烈推荐240多个jQuery插件提供下载
jQuery 是继 prototype 之后又一个优秀的 Javascript 框架.其宗旨是—写更少的代码,做更多的事情.它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不及 的 ...
- [Java] HashMap、TreeMap、Hashtable排序
Java中对Map(HashMap,TreeMap,Hashtable等)的排序时间 首先简单说一下他们之间的区别: HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可 ...