性能为王:微服务架构中的多级缓存设计

微服务架构中的多级缓存设计

提到缓存,想必每一位软件工程师都不陌生,它是目前架构设计中提高性能最直接的方式。这里举个例子:

image.png

Redis 缓存

假设应用程序将原始数据存储在 MySQL 数据库中。众所周知 MySQL 数据库会将数据存储在硬盘以防止掉电丢失,但是受制于硬盘的物理设计,即便是目前性能最好的企业级 SSD 硬盘,也比内存的这种高速设备 IO 层面差一个数量级,而以淘宝、京东这种电商为代表的互联网应用,都是典型的“读多写少”的场景,因此我们需要在设计上进行数据的读写分离,在数据写入时直接落盘处理,而占比超过 90% 的数据读取操作时则从以 Redis 为代表的内存 NoSQL 数据库提取数据,利用内存的高吞吐瞬间完成数据提取,这里 Redis 的作用就是常说的缓存。

当然,缓存可不只有用内存替代硬盘这一种形式,在分布式架构下缓存在每一层都有自己的设计,下面通过这个微服务的多级缓存架构图为主线进行讲解。

image.png

X 缓存多级缓存架构纵览

这张图从上到下包含四层,分别为:客户端、应用层、服务层以及数据层。

客户端缓存

X 商城客户端为浏览器,在浏览器层面我们主要是对 HTML 中的图片、CSS、JS、字体这些静态资源进行缓存。

image.png

浏览器缓存

以百度 Logo 图片为例,百度在 HTTP 通过 Expires 响应头控制静态图片的有效期。Expires 代表过期时间。当前百度 Logo 的过期时间为 2031 年 2 月 8 日 9 时 26 分 31 秒。在这个时间段内,浏览器会将图片以文件形式缓存在本地,再次访问时会看到“from disk cache”的提示,此时浏览器不再产生与服务器的实际请求,会从本地直接读取缓存图片。通过在浏览器端设置 Expires 可以在很大程度减少重复请求静态资源带来的带宽损耗,这在高并发 Web 应用中是基础而重要的设置。

应用层缓存

那 Expires 到底在哪里进行设置呢?对于浏览器来说它只是客户端,只负责读取Expires响应头,对于 Expires 要在应用层,也就是 CDN 与 Nginx 中进行设置。

CDN 内容分发网络

CDN 全称是 Content Delivery Network,即内容分发网络,是互联网静态资源分发的主要技术手段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值