一次缓存选型的经历

项目里需要进行分布式,需要对缓存进行先型,条件:

1。开源

2. 支持分布式或集群

3. 使用JMS进行消息通知

在查询对比开源网上的缓存组件后发现OSCache,Ehcache,SwarmCache,Memcached支持分布式

OSCache:维护的是一个大型MAP,支持jms,JavaGroup进行集群服务器间的通讯(在使用中发现个问题:不能把一个缓存中不存在的数据移除掉,也许我使用不当。后来改了源码才做到)。听说它对JSP的缓存支持不错。

Ehcache:1.2版本开始支持集群,但默认的只有基于RMI的缓存同步。不过它使用简单。而且是作为Hibernate的组件发布的。里面的缓存使用很像hibernate思想(个人体会)

SwarmCache:通常用在应用的读操作要远远多于写操作,在这种应用里SwarmCache具有很高的性能。  SwarmCache内部使用JavaGroup来管理成员(其它主机)关系,以及进行分布式缓存通信

Memcached:memcached的集群也非常好,听说国外有200+的memcached集群,一台down掉根本不会引起其他机器down掉,只是这台的数据丢了,需要慢慢积累回来;而且支持多客户端,java、php、python、ruby可以共享数据,就把它当作数据库用。

因为第三条的原因我们选用了OSCache。后来发现单HASHMAP无法满足我们应用的开发。可我们不想把程序复杂化再加上需要修改OSCache的源码(我的想法因为城要维护是尽量不要修改开源组件源码)没有安全感,改用EhCache

最后:摘用oldyoungj的一个建议   “ 你的应用访问量比较大,对响应速度要求很高,对数据一致性要求一般时,用它,挡在数据库前面,非常爽(memcached是互联网公司开发的,正好满足这三个条件);如果应用不忙,用用ehcache就行了。”

你可能感兴趣的:(应用服务器,Hibernate,互联网,memcached,jms)