缓存机制
缓存,是指将数据存储在相对较高访问速度的存储介质中,以供系统处理。
[解决问题]
一方面缓存访问速度快,可以减少数据访问的时间。
另一方面如果缓存的数据是经过计算处理得到的,那么被缓存的数据无需重复计算即可直接得到,因此缓存还起到了减少计算时间的作用。
[使用场景]
缓存主要用来存放读写比很高、很少变化的数据。如商品的类别信息、热门词的搜索列表信息、热门商品信息等等。
ag:
{
1、淘宝卖家浏览的商品集中在少部分 成交数多、评价良好的商品上;
2、百度搜索关键词集中在少部分热门词汇上;
3、只有经常登录的用户才会发微博、看微博,而这部分用户也只占总用户数目的一小部分。
}
[基本原理]
应用程序读取数据时,先到缓存中读取,如果取不到或者数据已失效,再访问数据库,并将数据写入缓存。
[三要素]
1、命中率
[说明]指请求缓存次数和缓存返回正确结果次数的比例。
ag:Mysql的Query Cache用来缓存和Qquery相关的数据。
经过一段时间的积累,命中率可达98%。采用FIFO更新策略。
2、缓存更新策略
FIFO[First In First Out] 优先清理最先进入缓存的元素
LFU[Less Frequently Used] 清理最少使用的元素
LRU[Least Recently Used] 清理最近最少使用的元素
3、缓存最大数据量
Memcache最大的内存存储空间(吞吐量)只有64M,如果64M的内存一旦爆满,Memcache会指定重启,并释放当前所有的内存,内存数据会被无情的丢失,不会保留。
[缓存分类]
1、CDN
2、反向代理
3、本地缓存
4、分布式缓存
/**
* CDN
*/
[说明]
CDN,全称是Content Delivery Network,内容分发网络,它的作用是:将数据部署在距离用户最近的网络服务商,用户的网络请求总是先到达他的网络服务商,在这里缓存网站的一些静态资源,就可以就近以最快的速度返回给用户。静态资源,如图片、文件、css、script脚本、静态网页等等。
[举例]
用户在浏览网站的时候,CDN会选择一个离用户最近的CDN边缘节点来响应用户的请求,这样海南移动用户的请求就不会千里迢迢跑到北京电信机房的服务器(假设源站部署在北京电信机房)上了。
[优势]
(1)CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;
(2)大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载。
[说明]
CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
/**
* 反向代理
*/
[说明]、
当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。
[机制]
请求,最先访问到的就是反向代理服务器,这里缓存网站的静态资源,无需将请求继续转发给应用服务器,就能直接返给用户。
当动态内容有变化时,通知内部通知机制,通知反向代理缓存失效。反向代理会重新加载最新的动态内容再次缓存起来。
[优点]
1、反向代理服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。