Ehcache还是Memcached的抉择(二)

 

Liferay中使用的是Ehcache, 这个缓存框架不错,性能很好(参见上篇与memcached对比的文章),在Liferay中封装的也不错,很容易使用。

可最近在项目中遇到一个问题,那就是需要有多个系统共同访问某个(某些)数据表,这种需求在一些与遗留系统进行整合的项目中也经常会有。整合是没有问题,但是在这种情况下,缓存就成了一个很大的问题。

大家都知道,缓存有三个作用范围:事务、应用、集群。事务级缓存在session中有效;应用级缓存在多个session中可共享,因此尽可能只在read only型应用中使用,而集群缓存就需要在各个节点上进行缓存同步(Ehcache方案)。

但是这些都是在同一个应用的前提条件下的,如果是多个应用在数据层整合,那么任何一个范围都有可能出现问题。尤其是Ehcache,是一个in process的缓存方案,受Spring管理,每个Web App的缓存相互独立(抛开ClassLoader Share),基本上不可能实现多应用缓存共享。即使使用消息中间件进行监听,也不是一个完美的解决方案。

那么回过头来,再看看曾经被我抛弃的memcached。

因为是Client/Server结构的,通过采用二级hash算法进行缓存服务器分配、缓存数据的读写;整个缓存体系中,一个key对应的value只保存在惟一的一个服务器上;而且,memcached server是deamon方式运行的,因此无论对于什么应用,只要用相同的memcached client进行配置,就能共享缓存。

怪不得很多大网站都在使用这个缓存框架,虽然其绝对性能要比ehcache慢。

看来,需要将Liferay MDD的缓存也转到memcached上了。简单估计了一下,工作量应该不大,争取这周搞定;

另外,在Ehcache的计划中,1.6版本也会采用与memcached类似的Cache Server方式来实现分布式缓存了。

等不急了,先倒向Memcached吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值