WWW是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载,导致客户访问延迟增大,WWW服务质量日益显现出来。缓存技术被认为是减轻服务器负载、降低网络拥塞、增强WWW可扩展性的有效途径之一,其基本思想是利用客户访问的时间局部性(Temproral Locality)原理,将客户访问过的内容在Cache中存放一个副本,当该内容下次被访问时,不必连接到驻留网站,而是由Cache中保留的副本提供。
Web内容可以缓存在客户端、代理服务器以及服务器端。研究表明,缓存技术可以显著地提高WWW性能,它可以带来以下好处: (1)减少网络流量,从而减轻拥塞。 (2)降低客户访问延迟,其主要原因有:①缓存在代理服务器中的内容,客户可以直接从代理获取而不是从远程服务器获取,从而减小了传输延迟②没有被缓存的内容由于网络拥塞及服务器负载的减轻而可以较快地被客户获取。 (3)由于客户的部分请求内容可以从代理处获取,从而减轻了远程服务器负载。 (4)如果由于远程服务器故障或者网络故障造成远程服务器无法响应客户的请求,客户可以从代理中获取缓存的内容副本,使得WWW服务的鲁棒性得到了加强。 Web缓存系统也会带来以下问题: (1)客户通过代理获取的可能是过时的内容。 (2)如果发生缓存失效,客户的访问延迟由于额外的代理处理开销而增加。因此在设计Web缓存系统时,应力求做到Cache命中率最大化和失效代价最小化。 (3)代理可能成为瓶颈。因此应为一个代理设定一个服务客户数量上限及一个服务效率下限,使得一个代理系统的效率至少同客户直接和远程服务器相连的效率一样目前缓存有本地缓存,集群缓存, 分布式缓存;
1.本地缓存:小应用使用,不需要多个tomcat的情况;数据存储在应用代码所在内存空间.优点是可以提供快速的数据访问;缺点是数据无法分布式共享,无容错处理.典型的Ecache
2.集群缓存:多台tomcat之间的缓存,需要保持缓存之间的同步,要看下缓存之间是怎么同步的。目前我司采取的方案,是更新了一个缓存,然后发起http 同步缓存。这样
缺点1:如果有很多台tomcat的缓存,需要全部同步,很难保证 所有的tomcat的缓存同步。
缺点2:如果有的api操作里面,有缓存操作,需要发起http请求,这是同步的,会阻塞api响应时间,集群越多,响应越慢!
放置:需要放置哪些很少变化的数据,如果变化数据很频繁的,最好是放到分布式缓存中去维护。
3.分布式缓存:所有tomcat服务器都来访问的内存系统。能够支持统一访问。
缺点:数据过多的话,响应慢。所以要仔细看下返回的数据是否过大。不过1000条以内没什么影响。
数据在固定数目的集群节点间分布存储.优点是缓存容量可扩展(静态扩展);缺点是扩展过程中需要大量配置,无容错机制.典型的,如Memcached;
分布式缓存的典型应用场景可分为以下几类: 1) 页面缓存.用来缓存Web 页面的内容片段,包括HTML、CSS 和图片等,多应用于社交网站等; 2) 应用对象缓存.缓存系统作为ORM 框架的二级缓存对外提供服务,目的是减轻数据库的负载压力,加速应用访问; 3) 状态缓存.缓存包括Session 会话状态及应用横向扩展时的状态数据等,这类数据一般是难以恢复的,对可用性要求较高,多应用于高可用集群; 4) 并行处理.通常涉及大量中间计算结果需要共享; 5) 事件处理.分布式缓存提供了针对事件流的连续查询(continuous query)处理技术,满足实时性需求; 6) 极限事务处理.分布式缓存为事务型应用提供高吞吐率、低延时的解决方案,支持高并发事务请求处理,多应用于铁路、金融服务和电信等领域.