总结 -05- 缓存
缓存的关键指标
缓存命中率
缓存是否有效依赖于能多少次重用同一个缓存影响业务请求,这个度量指标被称为缓存命中率。
如果查询一个缓存,十次查询九次能够得到正确结果,那么它的命中率是 90%。
影响缓存命中率的主要指标
缓存键大小
缓存可使用内存空间
缓存对象生成空间
缓存类型
代理缓存
反向代理缓存
多层反向代理缓存
内容分发网络(CDN)
CDN 同时配置静态文件和动态内容
通读缓存(read-through)
代理缓存,反向代理缓存,CDN 都是通读缓存
通读缓存给客户端返回缓存资源,并在请求未命中缓存时获取实际数据
客户端链接的是通读缓存而不是生成响应的原始服务器
旁路缓存(cache-aside)
对象缓存是一种旁路缓存,旁路缓存通常是一个独立的键值对存储
应用代码通常会询问对象换粗需要的对象是否存在,如果存在,它会获取并使用缓存的对象,如果不存在或已过期,应用汇链接主数据源来组装对象,并将其保存回对象缓存中以便将来使用
浏览器对象缓存
本地对象缓存
对象直接缓存在应用程序中
对象存储在共享内存中,同一台机器的多个进程可以访问它们
缓存服务器作为独立应用和应用程序部署在同一个服务器上
本地对象缓存构建发呢不是集群
远程分布式对象缓存
Memcached 分布式缓存对象缓存
Memcached 分布式缓存访问模型
分布式对象缓存的一致性 hash 算法
只是不求多,但求对掌握的知识掌握它的核心
学技术不仅学技术本身,更要学会技术背后的思想,学会技术的架构
消息队列、异步架构
队列:发布订阅模型、发布订阅模式(常用)
消息队列——提高写的性能,削峰填谷,失败隔离和自我修复,解耦
缓存——提高读的性能
负载均衡架构
请求如何分发
Http 重定向负载均衡:性能(二次 http)、安全(暴露 ip)
DNS 负载均衡:大型网站使用(淘宝),dns 解析出来的负载均衡服务器的 ip
反向代理负载均衡:小型公司使用,最多几十台服务器,因为反向代理服务器使用 http 协议,先拿到 http 请求、响应包才能继续下一步,包可能比较大(可能几 M),如果并发高,请求会堆积;7 层协议而
IP 负载均衡:4 层协议,不需要解析 http 包,只修改 tcp 包中的 ip;性能不会成为瓶颈,响应出口带宽成为瓶颈
数据链路程负载均衡:大型网站使用,IP 负载均衡改版(修改 mac 地址,服务器匹配 mac 地址),响应直接返回给客户端,不经过负载均衡服务器
Session 复制:仅适应少量服务器,为什么用集群,就是为了提高并发处理能力,并发量多的话服务器压力大,会压垮服务器
Session 绑定:相同的请求访问同一台服务器,hash 绑定,单点故障
利用 cookie 记录 session:每次请求带上 cookie,增加了网络开销;客户端可能清理 cookie
Session 服务器:redis
数据库集群
MySql 复制:从数据库不要同步 alert,不然表会锁住;从服务器不要写数据
MySql 一主多从复制:分摊负载、专机专用、便于冷备、高可用
MySql 主主复制:不能同时向两个服务器写数据,导致数据冲突
MySql 主主失效回复
Mysql 复制注意事项:
1、主主复制的两个数据库不能并发写入
2、复制只是增加了数据的读取并发处理能力,没有增加写并发能力和存储能力
3、更新表结构会导致巨大的同步延迟
4、主主、主从并没有解决存储能力
评论