架构师训练营 - 第五周 - 作业 2

发布于: 2020 年 07 月 09 日

分布式缓存:这个应用场景非常大,尤其对性能要求较高的系统,比如我们公司这种发展中的电商系统

反向代理、负载均衡:这个golang版的实现过。

  1. 分布式缓存架构

  2. 缓存命中率:就是查询n次缓存,有多少次得到了缓存

  3. 影响命中率的3个因素

  4. 缓存的key:因为缓存键主要是Hash存储,所以缓存键重复概率要低

  5. 进程内存的大小:缓存能使用的内存越大,能容纳的缓存就越多

  6. 缓存的存活时间:缓存的存活越久,被重用的可能性就越大

  7. 缓存的分类

  1. 代理缓存:一般在客户端网络,比如公司出口网关、甚至比如浏览器缓存也算一种

  2. 反向代理缓存:一般架设在应用服务器前面,为客户端提供响应,比如NGINX、HaProxy等

  3. CDN内容分发网络:缓存静态文件,而且分布在全国各地

  4. 旁路缓存:让客户端自己先请求缓存,不存在再请求数据服务,客户端复杂了。

  5. 分布式对象缓存:在多台缓存服务器存放不同的缓存数据,减轻单台缓存服务器的压力

  6. 一致性Hash

  7. 由于分布式缓存架构,在扩容或单台崩溃时,可能带来缓存大批量失效的风险,从而造成缓存大量穿透,最终雪崩的场景,因此提出了一致性Hash的架构方案。

  8. 同时,一致性Hash可能带来服务器压力不均衡,所以通过要通过增加虚拟结点的情况来改善

  9. 验证一致性Hash算法是否均衡,要通过计算标准差的方案来衡量

  10. 最初由于一些缓存穿透,导致数据库压力过大,从而使系统各个部分因数据库宕机而崩溃。

  11. 缓存穿透的避免方式

  12. 把不存在的数据也进行缓存,但是要设置较短的缓存时长。

  13. 对于热点key,且数据不敏感的,也可以对请求数据库加锁,其它无缓存请求直接返回空。

  14. 缓存扩容相关时机及方案

  15. 异步处理,快速响应,提升用户体验,加大服务器吞吐量,但是结果需要异步回调,或轮询的机制,会比同步方案复杂一些

用户头像

A Matt

关注

还未添加个人签名 2018.05.11 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营-第五周-作业2