Week_05 总结

用户头像
golangboy
关注
发布于: 2020 年 10 月 25 日

这周的信息量有些大,有些知道,有些不知道,有些又模棱两可。这段时间,因为个人的原因,时间投入有些不够,后续会充实每一篇总结与作业,加油!!!

这周教学内容主要讲技术选型,大体分为三个层面:

  • 分布式缓存系统的架构

  • 缓存与缓冲的区别:一种是多次读取,加快访问速度;另一种是高速与低速存储器之间的协调适配器

  • 缓存一般是通过key找出对应的value,多用hash表实现

  • 缓存系统中的关键指标是缓存命中率。影响因素有

  • 键所表示的范围的大小,范围越大,命中率就可能低

  • 缓存系统可用的内存空间,空间大,缓存的对象就多,命中的可能性就大

  • 缓存对象的生命周期,缓存时间越长,命中可能性越大

  • 缓存分类,从用户端到服务端,依次有:

  1. 代理缓存,即用户本地的缓存(浏览器对象缓存)

  2. 反向代理缓存,服务端的反向代理服务器。反向代理服务器可以通过多层代理,加快系统响应

  3. 内容分发网络CDN,由网络运营商提供,将一些静态数据放入CDN,加快边缘访问速度

  4. 远程分布式对象缓存

  • 从逻辑上来分:

  • 通读缓存 read-through,缓存中未命中则透过缓存,从服务器读取

  • 旁路缓存,是独立的存储,先查缓存是否存在,如果不存在,则从服务器获取,并进行缓存

  • memcached

以富客户端的方式,通过hash计算,进行缓存实例的寻址,这种方式能实现线性伸缩。

  • 一致性hash算法:

  • 是一种路由算法,通过计算进行寻址,寻址空间为0~2^(32-1)。

  • 解决缓存系统动态伸缩时,缓存失效或者数据迁移范围大的问题。

  • 虚拟节点,解决缓存系统各节点负载失衡的问题

  • 存储介质中访问时延

内存 -- 1000倍 --> ssd -- 5倍 --> 网络(同数据中心)--200倍-->hdd

  • 缓存为啥能提升性能

  • 读内存跟快

  • 不需要中间计算,只需要进行hash,cpu消耗低

  • 缓解了磁盘,网络,数据库等压力,使其能更快的响应

  • 系统优化必备:技术简单,性能提升显著,场景多

  • 什么情况下应该使用缓存

  • 读多写少的系统,使用缓存才有意义,读写为2:1以上

  • 存在热点数据,否则在被访问之前就被挤出了缓存

  • 数据不一致与脏读,缓存失效时,需要重新加载,需要业务容忍一定时间不一致的问题

  • 缓存使用中的问题

  • 缓存血崩

  • 业务数据大到一定程度,缓存系统down机时,数据库不能承受压力而导致数据down机。这种情况不能简单通过重启缓存和数据库进行恢复

  • 缓存预热

  • 系统启动时,预先加载一些通用的信息,对缓存进行预热

  • 缓存穿透

  • 持续高并发的请求不存在的,导致这些并发请求压到数据库,造成压力,甚至崩溃

  • redis vs memcache

  • redis数据结构丰富

  • 多路复用异步io,性能好一些

  • 有主从复制,支撑高可用

  • 支持集群模式

  • 基于消费者生产者模式的消息队列架构

  • 

  • 负载均衡架构

用户头像

golangboy

关注

还未添加个人签名 2018.09.18 加入

还未添加个人简介

评论

发布
暂无评论
Week_05 总结