大到阿里,小到三线公司,缓存在大型分布式系统中的最佳应用

一、缓存概述
缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题 。提供高性能的数据快速访问 。
1、缓存的原理

  • 将数据写入/读取速度更快的存储(设备);
  • 将数据缓存到离应用最近的位置;
  • 将数据缓存到离用户最近的位置 。
2、缓存分类
在分布式系统中,缓存的应用非常广泛,从部署角度有以下几个方面的缓存应用 。
  • CDN缓存;
  • 反向代理缓存;
  • 分布式Cache;
  • 本地应用缓存;
3、缓存媒介
  • 常用中间件:Varnish,Ngnix,Squid,Memcache,redis,Ehcache等;
  • 缓存的内容:文件,数据,对象;
  • 缓存的介质:CPU,内存(本地,分布式),磁盘(本地,分布式)
【大到阿里,小到三线公司,缓存在大型分布式系统中的最佳应用】4、缓存设计
缓存设计需要解决以下几个问题:
缓存什么?
哪些数据需要缓存:1.热点数据;2.静态资源 。
缓存的位置?
CDN,反向代理,分布式缓存服务器,本机(内存,硬盘)
如何缓存的问题?
  • 过期策略
  • 固定时间:比如指定缓存的时间是30分钟;
  • 相对时间:比如最近10分钟内没有访问的数据;
  • 同步机制
  • 实时写入;(推)
  • 异步刷新;(推拉)
二、CDN缓存
CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等) 。国内网络异常复杂,跨运营商的网络访问会很慢 。为了解决跨运营商或各地用户访问问题,可以在重要的城市,部署CDN应用 。使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率 。
1、CND原理
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求 。
(1)未部署CDN应用前
大到阿里,小到三线公司,缓存在大型分布式系统中的最佳应用

文章插图
 
网络请求路径:
  • 请求:本机网络(局域网)——》运营商网络——》应用服务器机房
  • 响应:应用服务器机房——》运营商网络——》本机网络(局域网)
在不考虑复杂网络的情况下,从请求到响应需要经过3个节点,6个步骤完成一次用户访问操作 。
(2)部署CDN应用后
大到阿里,小到三线公司,缓存在大型分布式系统中的最佳应用

文章插图
 
网络路径:
  • 请求:本机网络(局域网)——》运营商网络
  • 响应:运营商网络——》本机网络(局域网)
在不考虑复杂网络的情况下,从请求到响应需要经过2个节点,2个步骤完成一次用户访问操作 。
与不部署CDN服务相比,减少了1个节点,4个步骤的访问 。极大的提高的系统的响应速度 。
2、CDN优缺点
优点(摘自百度百科):
本地Cache加速:提升访问速度,尤其含有大量图片和静态页面站点 。
镜像服务:消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量 。
远程加速:远程访问用户根据DNS负载均衡技术智能自动选择Cache服务器,选择最快的Cache服务器,加快远程访问的速度 。
带宽优化:自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能 。
集群抗攻击:广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种D.D.o.S攻击对网站的影响,同时保证较好的服务质量 。
缺点:
  • 动态资源缓存,需要注意实时性;
解决:主要缓存静态资源,动态资源建立多级缓存或准实时同步;
  • 如何保证数据的一致性和实时性需要权衡考虑;
解决:
(1)设置缓存失效时间(1个小时,最终一致性);
(2)数据版本号;
3、CND架构参考
大到阿里,小到三线公司,缓存在大型分布式系统中的最佳应用

文章插图
 
4、CND技术实践
目前,中小型互联网公司,综合成本考虑,一般租用第三方CDN服务,大型互联网公司,采用自建或第三方结合的方式 。比如淘宝刚开始使用第三方的,当流量很大后,第三方公司无法支撑其CDN流量,淘宝最后采用自建CDN的方式实现 。


推荐阅读