缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走( 四 )


那如何保持应用服务器中数据缓存信息的同步呢?
例如: 之前缓存的用户数据等,这个时候通常会开始使用缓存同步机制以及共享文件系统或共享存储等 。在享受了一段时间的访问量高速增长后,系统再次变慢 。
缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

文章插图
 
开始数据库调优,优化数据库自身的缓存,接下来是采用数据库集群以及分库分表的策略 。
分库分表的规则是有些复杂的,考虑增加一个通用的框架来实现分库分表的数据访问,这个就是数据访问层(Data Access Layer,DAL) 。
  • 缓存同步机制:每台web服务器,都会是保存一份缓存文件,那数据之间就需要缓存的同步机制来完成 。
  • 共享存储:共享存储是指两个或多个处理器共用一个主存储器的并行体系结构,像redis 。
  • 共享文件系统:两台机器之间的文件系统能够更加紧密地结合在一起,让一台主机上的用户可以像使用本机的文件系统一样使用远程机的文件系统 。像Samba和NFS 。
后期该阶段可能会发现之前的缓存同步方案会出现问题,因为数据量太大,导致现在不太可能将缓存存储在本地后再同步,这样会造成同步的时间延迟从而增大响应时间、数据不一致性,数据库耦合缓存 。
于是分布式缓存终于来了,将大量的数据缓存转移到分布式缓存上 。
如果使用共享文件系统或共享存储有啥问题?
  • 共享存储:多个服务访问一个存储,那么容易造成单例性能不足的问题和 。如果是并发读写可能会导致缓存和数据不一致问题 。
  • 共享文件: 多个服务压力太大,因文件I/O开销大 。性能会导致下降 。最终 至此,系统进入了无级缩放的大型网站阶段,当网站流量增加时,应对的解决方案就是不断添加Web服务器、数据库服务器、以及缓存服务器 。此时,大型网站的系统架构演变为图所示 。
 
缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

文章插图
 
纵观网站架构的发展历程,缓存技术往往就是解除烦恼的灵丹妙药,这再次证明了什么是缓存为王 。
客户端缓存的实施方案客户端缓存相对于其他端的缓存而言,要简单一些,通常是和服务端以及网络侧的应用或缓存配合使用 。
在互联网应用中,根据应用区分有二大类 。
  • B/S架构:页面缓存和浏览器缓存
  • 移动应用:APP自身所使用的缓存 页面缓存 页面缓存是什么?
    页面缓存有两层含义:
  • 客户端将页面自身对某些元素或全部元素进行缓存 。简称离线应用缓存
  • 服务端将静态页面或动态页面的元素进行缓存,然后给客户端使用 。简称页面自身缓存 。
页面缓存是将之前渲染的页面保存为静态文件,当用户再次访问时可以避开网络连接,从而减少负载,提升性能和用户体验 。
随着单页面应用(Single Page Application,SPA)的广泛使用,加之html5支持了离线缓存和本地存储,大部分BS应用的页面缓存都可以举重若轻了 。
在HTML5中使用本地缓存的方法,示例代码如下:
localStorage.setItem("mykey","吒吒辉")localStorage.getItem("mykey","吒吒辉")localStorage.removeItem("mykey")localStorage.clear()
什么是单页面应用?
SPA是在 Web 设计上使用单一页面,利用 JAVAScript 操作 Dom 的技术实现各种应用 。此模式下一个系统只加载一次资源,之后的操作交互、数据交互是通过路由、ajax来进行,页面并没有刷新 。
【缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走】常见的路由形式如:http:.//xxx/shell.htm1#page1 。
一般在Vue下使用很明显 。像商城活动页、登录页这种都是很好的SPA落地实践 。


推荐阅读