缓存,是目前架构设计中,提升性能最直接的方法。
数据会存储在硬盘上,受限于硬盘的读写读写速度,就有了缓存,来提升数据的读写速度。
尤其是像电商应用,是典型的读多写少的应用,在设计上,进行数据的读写分离。在写入操作上,直接将数据写入硬盘中,在数据读取时,则使用以redis为代表的内存型数据库来进行数据提取。利用内存的高吞吐特性,来瞬间完成数据操作。
多级缓存-客户端缓存:
主要是浏览器端的缓存,对网页的静态文件,css,js,图片等静态内容进行缓存。当下次访问网页时,直接从本地电脑中加载相关文件,不会实际与服务器产生交互请求。可以减少重复请求静态资源带来的带宽损耗。这在高并发的web应用中是基础且重要的设置。
多级缓存-应用层缓存:
CDN缓存
使用DNS(内容分发网络)技术,将资源进行缓存,减少源服务器的访问,从而提升访问速度和效率。
以上图为例,比如有个网站是部署在北京的服务器上,现在有上海用户进行访问,则请求会从部署在上海的CDN服务器上进行查询,如果查询到需要的数据,则直接放回给上海的用户,如果没有查询到数据,则从北京的源数据节点上返回数据,并将数据存储在上海的CDN节点上,再将数据返回给用户。
这样做的目的是降低北京源数据机房的带宽压力。
不过自行部署CDN服务器,是需要很大代价的,小型互联网公司一般不会这么做,更多的会采用阿里云、腾讯云、华为云,这样的大厂提供的CDN服务器进行付费租用。
在CDN服务器上,不光可以设计缓存的内容,还可以设置响应头等信息,比如缓存过期时间等。