根据缓存和应用的耦合程度将其划分为Local Cache和Remote Cache。
Local Cache是指包含在应用之中的缓存组件,如Ehcache, Oscache.
Remote Cache指和应用解耦,在应用之外的缓存组件,如Memcached
Local Cache最大的优点是应用和Cache在同一进程内部,请求缓存非常快速,完全不需要网络开销,所以单应用,不需要集群,或者集群时Cache node不需要互相通知的情况下使用比较合适。
缺点:多个应用程序无法直接共享缓存,应用集群的情况下这个问题就更加明显(好像是废话= =)
springside wiki 写道
Cache的类别:
本地缓存:从最简单的Map到Ehcache单机版都属于一类。
分布式缓存:分布在不同JVM的Cache可以互相同步与备份,如JBossCache和Oracle那个天价的产品。
集中式缓存:最著名的代表是Memcache,Terracotta其实也属于透明的集中式架构。
建议Ehcache单机使用,因为Terracotta收购后在分布式缓存中必然侧重于TC,JGroup等广播通知方式已停止发展。
注意:显示声明的Cache项并不会默认从DefaultCache节点继承属性,必须重新声明或使用Ehcache内部的默认值。
本地缓存:从最简单的Map到Ehcache单机版都属于一类。
分布式缓存:分布在不同JVM的Cache可以互相同步与备份,如JBossCache和Oracle那个天价的产品。
集中式缓存:最著名的代表是Memcache,Terracotta其实也属于透明的集中式架构。
建议Ehcache单机使用,因为Terracotta收购后在分布式缓存中必然侧重于TC,JGroup等广播通知方式已停止发展。
注意:显示声明的Cache项并不会默认从DefaultCache节点继承属性,必须重新声明或使用Ehcache内部的默认值。
Memcached是一种集中式Cache,支持分布式横向扩展。
集中式架构:
1.节点均衡的网状(JBoss Tree Cache),利用JGroup的多广播通信机制来同步数据。
2.Maste-Slaves模式(分布式文件系统),由Master来管理slave,如何选择slave,如何迁移数据,都是由Master来完成,但是Master本身也存在单点问题。
应用点:
小对象的缓存(用户的token,权限信息,资源信息),小的静态资源缓存,SQL结果的缓存。