首页 存档 技术 查看内容

Web缓存核心技术点需知 Web缓存核心技术点需知

2018-3-30 13:00 |来自: 互联网 227 0

摘要: Web缓存核心技术点需知 5.1 HTTP首部控制 5.2 基于新鲜度检测机制: 2.1 特征1:时间局部性 2.2 特征2:空间局部性 2.3 缓存的优点 2.4 哪类数据应该被缓存 2.5 哪类数据可缓存但不应该被缓存 2.6 缓存命中率决定缓 ...


Web缓存核心技术点需知


序:
该文共约9800字(6章),前5章建议阅读时长为8分钟。第6章为知识点整理,可后续检索回顾。
祝君愉快


近些年,互联网基础设备和技术迅猛发展,互联网玩法日新月异,稍不留神就Out。整体网民的素质也在不断提升的同时,对互联网的体验也提出了新的高度和要求,众所周知智能背后意味着复杂,体验好背后也意味着互联网的架构越复杂。利益当先的前提下,最好的优化就是缓存,缓存在整个互联网的发展过程中作用可想而知。尤其在中国如此蹩脚的网络下,南电信北联通,中间坑的都是付费的用户和企业。越来越多的证明表明,网站访问速度越慢,用户流失的越快,要想加快网站访问速度,基于此背景条件下,缓存和反向代理更显的尤为重要。

1. 完整请求流程中缓存设计

从互联网起始至今缓存都无处不在,从最前端的用户侧开始到服务器架构设计领域均在缓存的设计。
用户一次完整的访问简易流程图如下:



1.用户端

系统
基于DNS缓存: 缓解DNS解析压力,提高解析响应速度

浏览器
基于内容缓存: 根据已有规则与服务器交互过程中,非过期文件不再从服务器请求全新内容

DNS(CDN)
基于DNS:基于DNS的智能解析,将用户的请求解析至距离用户最近的CDN缓存服务器,图片,样式等静态和常期不变的资源交由CDN响应,缓解RealServer压力和高峰访问拥塞。


2.企业端

硬LB
请求经防火墙过滤后,传递至后端硬LB服务器,再根据不同场景分发至后端* 软LB*

软LB
软LB再次过滤拆分请求,动静分离,静态请求分离至静态集群,动态请求分发至应用集群。

NoSQL(Cache)
NoSQL:Redis,Memcache,ZeroMQ等NoSQL的出现大大缓解了前端直接穿透对数据库和分布式文件集群服务器的压力。静态文件读取方面,Squid,Memcache,Varnish等缓存率理想情况下更高达80%以上。

大型成熟的高可用网站拓扑可参考如下-摘自网络


2. 缓存特征点

并非所有的数据被缓存或需要缓存,缓存是为了解决20%数据被80%的人频繁访问的问题而生。数据如希望被缓存往往具备变化缓慢的特征。被缓存的数据往往具备如下特性:

2.1 特征1:时间局部性

缓存的数据往往被打有时间缀,具有定期失效的特征,过期后会从源服务器检验请求验证是否需要重新拉取数据。
某数据被访问后,该数据往往会再次在短时间内被访问到。

2.2 特征2:空间局部性

被访问数据的周边数据被访问的概率会比其它常规数据访问大很多,所以这些访问数据和其它周边有可能被访问的数据通过某种方式集中在一起,以提高数据的被访问速度,减少数据查找时长。
完成这类功能的工具往往称为Cache。

2.3 缓存的优点

缓存的优点无需赘述:
1. 节约带宽
2. 缓存后端服务器请求穿透压力
3. 降低时延,加速响应

2.4 哪类数据应该被缓存

  1. 热(区)数据:所谓热(区)数据就是指经常被访问到的数据,这类数据被缓存最有价值,缓存命中率高

2.5 哪类数据可缓存但不应该被缓存

  1. 用户账号密码信息等数据,该类数据不仅不应该被缓存,反而要被着重保护,这些年发生的撞库,密码破解等恶性事件,往往都是因为用户个人不当心或企业安全意味不足,导致用户敏感信息流失。

2.6 缓存命中率决定缓存有效性

缓存命中率=hit/(hit mixx)
hit表示缓存被命中,miss表示没有命中,也就是缓存项中没有对应的资源
文档命中率:从文档命中的个数进行衡量
字节命中率:从内容命中的大小(字节)进行衡量

2.7 缓存数据生命周期

数据被缓存数并非永久缓存。根据业务所需和服务器容量及用户行为,各类数据会定期被清理。如王宝强离婚事件,据说因此微博缓存用品横向扩展一倍服务器来响应该突发热点事件,但该热点事情结束后这批服务器是需要下架以节约成本,同时因为热点事件的结束,该时期的热点词及缓存数据将不再被缓存以做清理,该类清理往往需要手动清除,而对于静态文件图片,css等文件,则会设置定期清理,总结如下:

缓存清理策略:
1. 缓存项过期:缓存资源往往会被设置有效时长,过期自动清理或失效
2. 缓存空间用尽:缓存空间用尽时,会根据LRU(最近最小使用)算法清理缓存
3. 清理策略设置过长过短都不好,过长数据容易陈旧,过短起不到缓存效果

2.8 缓存处理步骤

Start接收请求解析请求查询缓存新鲜度检测构建响应报文发送响应报文记录日记End

2.9 缓存和普通数据读取的区别

缓存数据是K/V数据,即key/value,缓存的存储方式一般是以文件到的MD5码的前某些字符为键,做为存储目录,存储目录一般是多级的其值则可能是整个MD5码,也可能时MD5码减去key所用的字符

k/v存储的好处是检索速度速度快,具有幂等性,此处的幂等性指的是,无论查找多少次所消耗的时间都是一样的

3. 智能DNS解析(CDN)

“缓存最好的实现方式莫过于CDN”
各软件缓存功能实则已是用户请求的最后一环,要想尤佳的体验,CDN是无上之选,智能解析可以做到将用户的请求解析到离用户最近的缓存服务器,缓存命中则直接返回给客户端,若不命中,有可能请求离自己最近的缓存服务器,而不是直接请求真实的服务器,因为缓存服务器往往是形成一个网络

对于国内的分裂网络(电信,联通,移动),CDN可以判断用户来自于哪各运营商的网络,解析请求到相应网络的服务器主机,前提时需要提供web服务运营商需要在不同的的电信运营商部署服务器

GSLB:Globle Servive Load Balance 全局服务负载均衡
部署专用的一台主机,调度用户请求到离用户最近缓存服务器。
有全局也有就局部负载均衡,局部服务负载均很器作用是调度本地缓存服务器

4. 常见的缓存工具实现

squid

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部