架构师训练营 - 学习总结 - 第五讲
缓存:用来多次读取,加快读取速度
缓冲:高速设备读写低速设备时加一层,用于加快访问速度。
缓存无处不在
CPU缓存、操作系统缓存、数据库缓存、JVM编译缓存
CDN缓存、代理与反向代理缓存、前端缓存、应用程序缓存、分布式对象缓存
缓存一般使用hash表
key:value形式,对key取hashcode,取模存储。
缓存的关键指标:
缓存命中率,查询时命中缓存的比例。
三个因素,key集合大小,缓存空间大小,缓存生存时间
缓存类型:
放置位置:
代理缓存,反向代理缓存,内容分发网络(CDN)
访问方式:
通读缓存,旁路缓存
本地对象缓存
本地对象缓存分布式集群 例: jboss cache。此方案很快淘汰了 ,因为同步占用了太多网络带宽和CPU,影响性能。
现在是
远程分布式对象缓存
例:Memcached,集群之间无感知,share nothing。
分布式系统核心技术:路由,伸缩
路由:使用哪一台服务器
伸缩:增减服务器怎么不影响当前使用
一致性hash算法
不合理使用缓存:
频繁修改的数据,没有热点的数据
常见场景
数据不一致和脏读(小技巧:提示用户发布的信息要审核),缓存雪崩,缓存预热,缓存穿透
负载均衡
1,HTTP重定向负载均衡
问题:两次HTTP请求,性能差。暴露内网服务器IP。
2,DNS负载均衡
问题:应用服务器宕机时无法及时生效,后面还是要接一级代理分发服务器。
3,反向代理负载均衡
问题:http协议较重,请求反应慢,代理服务器成为瓶颈。
优化:改为使用IP负载均衡,
再进一步优化:数据链路层负载均衡,返回响应数据不再通过负载均衡服务器。这还是现在大型网站常用的,负载均衡三角模型。
负载均衡算法:
轮询、加权轮询、随机、最少连接、源地址散列
session管理方法
1,session复制,已淘汰
实现:将session复制同步到所有服务器。
问题:集群规模受限制。网络压力大。
2,session绑定,已淘汰
实现:会话粘滞,根据IP地址源地址散列。
问题:应用升级时服务器关闭无法处理,无法高可用。
3,利用Cookie记录session,生命力强现在还有使用的。
实现:用户端记录一个Cookie每次请求时携带。互联网发展早期常用,对服务器开发要求低。
问题:多发一个cookie,占用带宽。
4,session服务器,当前最常用方案
实现:用共享session服务器存储session。
分布式数据库
主从复制
一主多从
主主复制
评论