架构师训练营第 5 周:技术选型 (一)
一. 实现一致性 hash 算法
复制代码
二. 学习总结
(一). 分布式缓存架构
缓存是介于数据访问者和数据源间的一种高速存储,当数据需要多次读取时,用于加快读取的速度。缓存数据一般使用 hash 表进行存储。
1. 缓存的关键指标
缓存命中率
缓存键集合大小
缓存可使用内存空间
缓存对象的生命时间
2. 通读缓存
代理缓存,反向代理缓存,CDN 缓存都是通读缓存
通读缓存给客户端返回缓存资源,并在请求未命中缓存时获取实际数据
客户端连接的是通读缓存而不是生成响应的原始服务器
3. 旁路缓存
通常是一个独立的键值对(key-value)存储。应用代码通常会询问对象缓存需要的对象是否存在,如果存在,它会获取并使用缓存的对象,如果不存在或已过期, 应用会连接主数据源来组装对象,并将其保存回对象缓存中以便将来使用。
4. 一致性 hash 算法
5. 不合理的缓存使用场景
频繁修改的数据
没有热点的访问
数据不一致与脏读
6. 缓存雪崩
当缓存服务崩溃的时候,数据库会因为完全不能承受如此大的压力而宕机,进而导致整个网站不可用。
7. 缓存预热
在缓存系统启动的时候就把热点数据加载好。
8. 缓存穿透
持续高并发的请求某个不存在的数据,因为缓存没有保存该数据,所有的请求都会落到数据库上,会对数据库造成很大的压力,甚至崩溃。一个简单的对策是将不存在的数据也缓存起来(其 value 值为 null),并设
定一个较短的失效时间。
(二). 消息队列/异步架构
1. 两种模型
点对点模型
发布订阅模型
2. 消息队列对好处
实现异步处理,提升处理性能
更好对伸缩性
削峰填谷
失败隔离和自我修复
解偶
(三). 负载均衡架构
1. 负载均衡类型
HTTP 重定向负载均衡
DNS 负载均衡
反向代理负载均衡
IP 负载均衡
数据链路负载均衡
2. 负载均衡算法
rr
wrr
随机
最小连接
源地址散列
3. 应用服务器对 session 管理
session 复制
session 绑定
使用 cookie 记录 session
session 服务器
评论