写点什么

一期二班 - 吴水金 - 第五课总结

用户头像
吴水金
关注
发布于: 2020 年 11 月 08 日

什么是缓存?

存储在计算机上的一个原始数据复制集,以便于访问。

缓存是介于数据访问者和数据源之间的一种高速存储,当数据需要多次读取时,用于加快读取的数据。

通常使用 hash 表访问缓存中的数据。hash 表的时间复杂度为 O(1 )


缓存 Cache 和缓冲 Buffer 的区别?

Buffer 用于在高速设备和低速设备之间缓冲数据读取


缓存的关键指标

缓存命中率:如果一个缓存,十次查询有九次能够得到正确的结果,那么它的命中率为 90%。


影响缓存命中率的主要指标:

1.缓存键集合的大小

键集合越小,缓存命中率越高

2.缓存可使用的内存空间

内存空间越大,缓存的对象越多,命中率越高。

3.缓存对象生存时间

时间越长,重用率越高。


常见的缓存形式:


代理缓存

代理服务器上的缓存


反向代理缓存

反向代理上的缓存,用于响应用户请求。


多层反向代理缓存


CDN 内容分发网络


通读缓存

给客户端返回缓存资源,并在请求未命中时获取实际数据。客户端连接的是通读缓存而不是原始服务器。


旁路缓存

对象缓存是一种旁路缓存,旁路缓存通常是一个独立的键值对存储。

一个用代码通常会询问对象缓存需要的对象是否存在,如果存在,会使用缓存的对象,如果不存在,会连接数据源获取对象,并将对象保存在

旁路缓存以便将来使用。


远程分布式对象缓存

memcached 分布式对象缓存

share nothing 模式


一致性 hash 算法


各层次的缓存

客户端缓存:节省 100%资源,不需要请求服务器。

http 反向代理/cdn:节省 98%资源。

web 应用服务器本地缓存/分布式缓存:节省 75%资源。

http 反向代理:节省 66%资源。

web 服务服务器本地缓存/分布式缓存:节省 50%资源。

主数据存储:节省 0%资源。


合理使用缓存

不合理地使用缓存会使缓存成为系统累赘。

不能使用缓存地数据:

频繁修改地数据。数据读写比在 2:1 以上,缓存才有意义。

没有热点的访问。二八定律,80%的访问集中在 20%的数据上。LRU,最近,最久没有被访问的数据。

数据不一致与脏读。


缓存雪崩

缓存预热

缓存穿透:访问一个不存在的数据,即使不存在的数据也应该写入到缓存中。


Redis 缓存服务器

memcached 缓存服务器


计算机科学只有三件事最困难:缓存失效,命名事务,计数错误。--Phil Karlton


如何避免系统故障传递

读数据性能优化:缓存

写数据性能优化:消息队列

同步调用和异步调用

使用消息队列实现异步调用

生产者,消费者架构

点对点模型:消息只被消费一次

发布订阅模式:消息一次生产,多次消费。

消息队列能提供更好的伸缩性,能够实现消峰填谷,进行失败隔离和自我修复。

生产者和消费者相互独立,不会相互影响。

时间驱动架构 EDA

消息队列产品:kafka


发布于: 2020 年 11 月 08 日阅读数: 23
用户头像

吴水金

关注

初级架构师 2019.12.01 加入

热情开朗,乐于分享。

评论

发布
暂无评论
一期二班-吴水金-第五课总结