缓存中间件-缓存架构的实现(上) (2)

我特意查询了一下百度,首页上的有关缓存架构的博客,一半都只是在围绕着缓存中间件阐述缓存架构,剩下的一般也往往在大分类上有所遗漏(如浏览器缓存,数据库缓存)。当然也有一些博客在专门的领域阐述得较为深入,或者层次的划分比较不错。故本博客只是在阐述现阶段我对缓存架构的认识(也借鉴了一些书籍,课程的缓存体系)。

浏览器缓存

浏览器缓存,也是很多时候被后端所遗忘的部分。因为这已经不属于后端的工作了,但这一定属于架构师或者相关技术负责的职责。当然还有一个原因是我做过专门的前端开发。

说白了,就是在浏览器保存一部分数据,当然这需要前端进行开发。

这里直接上图,大家可以看一下Cookie,LocalStorage,SessionStorage:

缓存中间件-缓存架构的实现(上)

PS:图片来自网络

优势

由于是浏览器缓存,位于整个web请求相应框架的client端,所以对业务提供方没有任何负载压力与影响。只是客户端的浏览器存在些许的存储占据与计算负载。

注意

Cookie等的存储容量是有限的,需要注意分配。

Cookie等的存储是明文的,不可以存储敏感数据,否则会存在安全隐患。

Cookie等需要注意存储时间时间的有效设置。

Cookie等存在一定的学习成本,与相关特性(如Cookie的域名设置问题,父域名无法读子域名的Cookie数据)。

Cookie等需要明确业务中有哪些数据适合放在这里,如域名等。

实际应用

在我之前负责的IOT项目中,页面往往存在大量的数据,如终端列表,传感器列表,监测点列表等。并且数据间存在一定数据关系,如需要通过现存的终端列表来获取对应传感器列表,又如通过传感器列表来获取对应报警列表等。

为了避免页面切换时,为了获取一个列表而需要多次请求(如为了获得已选定的终端列表的传感器列表,需要先请求终端列表),所以通过LocalStorage来存储终端列表。

CDN缓存

CDN,Content Delivery Network,即内容分发网络。

CDN是构建网络上的内容分发网络

CDN可以使得用户就近获取所需内容,避免网络拥塞,提高用户访问速度

CDN依靠部署在各地的服务器,通过镜像服务器实现内容同步,其包括负载均衡,内容分发,调度等模块。

优势

降低访问延迟。使得用户就近获取所需内容,避免过多路由造成用户访问延迟问题。

降低服务器压力。毕竟放在CDN服务器的内容,就不用到应用服务器获取了。

消除运营商差别。消除运营商之家互联的瓶颈造成的影响,使得所有用户获得同样的访问质量

集群抗攻击。广泛分布的CDN节点,可有有效避免DDOS等攻击。

缺点

同步缓慢。由于CDN是大量且分层的节点分布,所以数据的下发与同步会比较缓慢。

如果是使用收费服务,则需要一定支出。如果是自建CDN,则需要技术付出。个人推荐,不必要的话,还是直接采用CDN收费服务吧,性价比更高一些。

自身Web体系需要进行相应的调整。如CDN文件更新与服务器文件更新(版本号等手段)等问题。

关键技术

该部分内容,引自网易云课堂。

缓存

缓存代理软件:Squid

缓存算法决定命中率,源服务器压力,FTP节点存储能力

分发能力

分发能力取决于IDC(网络数据中西)能力和IDC策略性分布

负载均衡

负载均衡软件:Nginx

负载均衡(智能调度)决定最佳路由,响应时间,可用性,服务质量

基于DNS

DNS服务器软件:BIND

基于DNS的负载均衡以CNAME实现域名中专,智取最优节点服务

缓存点有客户端浏览器缓存,本地DNS服务器缓存

缓存内哦让那个有DNS地址缓存,客户请求内容缓存,动态内容缓存

支持协议

静动态加速(图片加速,https带证书加速)

下载加速

流媒体加速

企业应用加速

手机应用加速

就当扩展一下见识吧(囧)

实际应用

如果写过前端代码,会知道有的时候,我们采用的jQuery等通用JS,CSS等大多是使用公共的cdn地址。

有的公司,会将公司的一些公共JS,图片等静态资源(尤其是公司Logo等),放在CDN上。进行网页开发时,直接引用对应的CDN地址。

负载层缓存

负载层缓存一般是与负载均衡器相关的缓存,这里我就拿Nginx举例。

Nginx可以通过以下三种手段,实现缓存:

本身的缓存模块

转发请求至对应缓存服务器

可以通过lua模块,直接从外部缓存(如Redis等)获取缓存数据

接下来一一阐述

Nginx缓存模块

Nginx的http_proxy模块,可以实现类似于Squid的缓存功能.

Nginx对客户端已经访问的内容在Nginx服务器本地建立缓存副本,那么在一定时间内再次访问这些内容时,就不需要请求后面的应用服务器了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfxfw.html