#每天一个知识点#
开发者都应该懂的缓存系统
从前端到后端的各个环节都有数据缓存!上图说明了在典型架构中我们缓存数据的位置。
沿着架构流程有多个缓存层级。
🔹 1. 客户端:HTTP响应的内容可在浏览器中进行缓存。我们首次通过HTTP请求数据,并在HTTP头部返回一个过期策略;我们再次请求数据,客户端会首先从浏览器缓存中获取数据。
🔹 2. CDN:CDN缓存静态Web资源,客户端可以从附近的CDN节点获取数据。
🔹 3. 负载均衡器:负载均衡器也可以缓存资源。
🔹 4. 消息中间件:消息中间件首先将消息存储在磁盘上,然后消费者根据自己的策略从消息中间件中获取数据。根据保留策略,数据在Kafka集群中缓存一段时间。
🔹 5. 服务层:服务层中有多个缓存层。如果数据不在CPU中缓存,服务将尝试从内存中获取数据。有时,服务具有二级缓存来存储磁盘上的数据。
🔹 6. 分布式缓存:像Redis这样的分布式缓存可以将数据存储在内存中。它提供了比数据库更好的读写性能。
🔹 7. 全文搜索:我们有时需要使用全文搜索,如Elastic Search,进行文档搜索或日志搜索。同时,在搜索引擎中建立数据的副本索引。
🔹 8. 数据库:即使在数据库中,我们也有不同级别的缓存:
- WAL(预写日志):在构建B树索引之前,数据首先写入WAL
- Bufferpool:分配给查询结果缓存的内存区域
- 物化视图:预先计算查询结果并将其存储在数据库表中以获得更好的查询性能
- 事务日志:记录所有事务和数据库更新
- Replication log:用于记录数据库集群中的复制状态
开发者都应该懂的缓存系统
从前端到后端的各个环节都有数据缓存!上图说明了在典型架构中我们缓存数据的位置。
沿着架构流程有多个缓存层级。
🔹 1. 客户端:HTTP响应的内容可在浏览器中进行缓存。我们首次通过HTTP请求数据,并在HTTP头部返回一个过期策略;我们再次请求数据,客户端会首先从浏览器缓存中获取数据。
🔹 2. CDN:CDN缓存静态Web资源,客户端可以从附近的CDN节点获取数据。
🔹 3. 负载均衡器:负载均衡器也可以缓存资源。
🔹 4. 消息中间件:消息中间件首先将消息存储在磁盘上,然后消费者根据自己的策略从消息中间件中获取数据。根据保留策略,数据在Kafka集群中缓存一段时间。
🔹 5. 服务层:服务层中有多个缓存层。如果数据不在CPU中缓存,服务将尝试从内存中获取数据。有时,服务具有二级缓存来存储磁盘上的数据。
🔹 6. 分布式缓存:像Redis这样的分布式缓存可以将数据存储在内存中。它提供了比数据库更好的读写性能。
🔹 7. 全文搜索:我们有时需要使用全文搜索,如Elastic Search,进行文档搜索或日志搜索。同时,在搜索引擎中建立数据的副本索引。
🔹 8. 数据库:即使在数据库中,我们也有不同级别的缓存:
- WAL(预写日志):在构建B树索引之前,数据首先写入WAL
- Bufferpool:分配给查询结果缓存的内存区域
- 物化视图:预先计算查询结果并将其存储在数据库表中以获得更好的查询性能
- 事务日志:记录所有事务和数据库更新
- Replication log:用于记录数据库集群中的复制状态
展开

评论
1