企业级缓存系统varnish应用

来源:互联网 发布:草图大师for mac 编辑:程序博客网 时间:2024/06/05 08:37

场景

随着公司业务快速发展,公司的电子商务平台已经聚集了很多的忠实粉丝,公司也拿到了投资,这时老板想通过一场类似双十一的活动,进行一场大的促销,届时会有非常多的粉丝访问网站,你的总监与市场部门开完会后,确定活动期间会有平常10倍以上的访问请求,总监要求大幅增加网站容量,除了去扩容服务器之外,还有没有其他办法呢?

技术说明

如今,互联网应用规模不断扩大,应用不断增多,网络已经深入到我们生活的各个方面,给我们的日常生活带来极大方便,随着信息系统的业务扩展,网站用户增加,历史数据不断积累,业务不断增长,系统的响应速度、请求的处理能力开始下降,CPU和磁盘IO处理能力会成为瓶颈。

如果在有限的硬件投入前提下,提高系统性能就成了主要解决问题手段,为了提供高性能的web服务,可采用包括负载均衡、页面静态化、数据库集群、缓存等多种技术方案,其中,缓存方案是目前主流的性能优化方式,对于网站来说,有很多特定信息系统的请求都是重复冗余的,我们的系统经常在做重复的计算和传输着相同的内容。这也就意味着在有限的计算资源条件下,可通过缓存技术,大幅提高请求处理能力以及处理速度。

企业服务架构图

缓存介绍

缓存,又称加速器,用于加速运行速度较快的设备与较慢设备之间的通信。基于程序的运行具有局部性特征其能实现加速的功能:

缓存有效与否,是通过缓存命中率来衡量的。缓存命中,意味着在请求某资源时,在缓存中找到该资源,并响应给客户端。

缓存命中率的计算方式:hits/(hits+misses) (0-1)(命中的/命中的+没有命中的)

缓存是把之前访问到的数据及其周边的数据放置于具有更快速度的、效率更高的设备中来完成加速。使用缓存之后, 资源的请求与响应过程由client–>server–>client改变为client–>cache[–>server]–>client。若在缓存中没有查找到相应的资源,将会由缓存向server请求该资源,这一过程,会造成额外的开销,若换成命中率过低,则会造成资源的浪费。因此,提高缓存的命中率是必然的。

 

缓存系统的关键点

缓存之所以能够生效是程序的运行具有局部性特征:

时间局部性:一个数据被访问过之后,可能很快会被再次访问到;

空间局部性:一个数据被访问时,其周边的数据也有可能被访问到(比如:nginx定义一个缓存,首先要定义一个缓存路径和空间大小,当缓存空间满了,就会使用lru算法(最近最少使用算法),将最近最少访问的缓存数据给清理掉,那么剩下的就是访问最多的数据,也就是热点数据)

时效性:

缓存空间耗尽:LRU,最近最少使用;(Least recently used,最近最少使用)

缓存过期:到了缓存时间后失效(失效之后不一定会被删除,要看你怎样定义)

缓存命中率:hit/(hit+miss)

缓存的数据类型:

资源缓存:page cache ,static cache;

数据缓存:data cache;

 

浏览器的缓存机制

 

 

原创粉丝点击