Week5- 总结
分布式缓存的架构
1.什么是缓存
缓存:存储在计算机上的一个原始数据复制集,以便于访问 - 维基百科
用途:用于加快读取速度
2.缓存cache和缓冲buffer的区别
1)缓存cache:系统两端处理速度不匹配时的一种折衷策略
2)缓冲:缓和压力,系统两端处理速度平衡
3.缓存的用途:
CPU缓存
操作系统缓存
数据库缓存
JVM缓存
CDN缓存
代理与反向代理缓存
应用程序缓存
分布式对象缓存
4.缓存数据存储(HASH表)
5.缓存的关键指标
缓存命中率
6.影响缓存明州的主要指标
1)缓存键集合大小:键数量越少,缓存效率越高
2)缓存可使用内存空间:理论上,内存空间大,缓存的对象多,命中率就高
3)缓存对象生存时间:对象缓存的时间越长,缓存对象被重用的可能性就越高
7示例
代理缓存:像客户端缓存
反向代理缓存:像服务端缓存
多层反向代理缓存:同理反向代理缓存,只不过是再不同的层上都加一层缓存
内容分发网络(CDN):CDN托管反向代理服务
CDN同事配置静态文件和动态内容:动态部分访问前端服务器,静态部分访问云服务
8通读缓存:未命中后,通读缓存给客户端返回资源,在请求未命中时通读缓存去获取实际数据
旁路缓存:应用查询的缓存未命中时,去数据源获取实际数据,再将实际数据保存在缓存中
9浏览器缓存:webstorage
10本地对象缓存
1)对象缓存在应用程序内存中
2)对象存储在共享内存,同一台机器的多个进程可以访问他们
3)缓存服务器作为独立应用和应用程序部署在同一服务器上。
11本地对象缓存构建分布式集群
12远程分布式对象缓存
13memcached分布式对象缓存
Memcached本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现Memcached的分布式存储
虚拟节点的一致性哈希算法
让节点分布更均匀
13各种介质的访问延时
14技术栈各个层次的缓存
14 缓存为什么能显著提升性能
1)缓存通常来自内存比磁盘上访问数据块
2)缓存数据的最终结果形态,不需要中间计算,减小cpu的资源消耗
3)缓存降低数据库,磁盘,网络的负载压力,是这些io设备获得更好的性能
15缓存的优势
1)技术简单
2)性能提升显著
3)应用场景多
16合理使用缓存
不合适的数据访问特性不适合用缓存,比如说命中率因为访问特性低4,多了个缓存相当于多了操作加慢了系统处理效率
1)频繁修改数据: 读写比例在2:1以上好
2)没有热点的访问:内存宝贵有限,需要遵循28定律
3)数据不一致和脏读:数据不一致导致业务偏差
4)缓存雪崩:缓存丢失或不可用,导致压力冲垮应用
5)缓存预热:预加载
6)缓存穿透:恶意攻击,不存在的数据
17redis vs memcached
redis 支持复杂的数据结构
redis支持多路复用异步i/o高性能
redis支持主从复制高可用
redis原生集群与sharenothing集群模式
18redis集群:16384个桶,redis节点彼此互联
消息队列与异步架构
1.同步调用与异步调用:异步效率高,不阻塞应用线程,回调调用
2.消息队列构建异步调用架构
1)消息生产者
2)消息队列
3)消息消费者
3.发布订阅模型
4.消息队列的好处
1)实现异步处理,提升处理性能
2)更好的伸缩性
3)削峰填谷
4)失败隔离和自我修复
5)解耦
5事件驱动架构EDA:也是一种解耦
6主要的MQ:rabbitmq,activemq,rocketmq,kafka
负载均衡架构
1.http重定向负载均衡:根据负载均衡服务器返回的ip,直接访问
2.反向代理负载均衡
3.IP负载均衡:第二层 改变tcp源地址目标地址
4.链路层负载均衡:改mac地址 ,虚拟ip对应
5.负载均衡算法
1)轮询
2)加权轮循
3)随机
4)最少连接
5)源地址散列
6.应用服务器集群的session管理
1)session复制:互相复制,一致性不好管理,淘汰
2)session绑定:机器挂了,可用性降低
3)利用cookie记录session
4)session服务器
mysql复制
1.主从复制: 只有一个主处理写请求
2.主多从复制:多个从,不同的地方使用数据
分摊负载,专机专用,便于冷备,高可用
3.主主复制:只有一个主处理写请求
评论