先看个官方定义:
内容分发网络(Content Delivery Network,简称cdn)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。
我们再来看看CDN的工作原理。
假设通过CDN加速的域名为www.a.com
,接入CDN网络,开始使用加速服务后,当终端用户(北京)发起HTTP请求时,处理流程如下:
- 当终端用户(北京)向
www.a.com
下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。 - LDNS检查缓存中是否有
www.a.com
的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。 - 当授权DNS解析
www.a.com
时,返回域名CNAMEwww.a.tbcdn.com
对应IP地址。 - 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。
- LDNS获取DNS返回的解析IP地址。
- 用户获取解析IP地址。
- 用户向获取的IP地址发起对该资源的访问请求。
这是阿里云官网的一个例子,简单来说就是,由于一个域名可以绑定多个IP,所以我们可以多搞几个服务器用来搭建一些缓存站,当用户发起请求的时候,通过DNS解析,查找离用户最近的边缘服务器IP返回,这样大部分请求都可以在通过缓存解决,小部分需要访问源站点。例如:淘宝的图片访问,有98%的流量都走了CDN缓存。只有2%会回源到源站,节省了大量的服务器资源。
可是,像淘宝这样产品,如果在用户访问高峰期,图片内容大批量发生变化,大量用户的访问就会穿透cdn,对源站造成巨大的压力。我们在看淘宝团队是怎么解决的之前,先来了解下淘宝图片的CDN架构是怎样做的。
淘宝的缓存分为三级:客户端本地、CDN L1、CDN L2。
淘宝的所有图片都储存在OSS中,OSS指的是对象存储服务,一种阿里云对外提供的云存储服务,简单来理解就可以认为是它把图片都放在服务器硬盘里存着。在缓存和源站资源之间,还有一层图片处理系统,叫img-picasso,就是对图片进行一些处理操作,比方说,一张图片你需要不同的尺寸或格式,你不必存多个版本图片,只需在读取的时候进行转换处理就可以了,大大减轻储存压力。
CDN的缓存分成2级,合理的分配L1和L2的比例,一方面,可以通过一致性hash的手段,在同等资源的情况下,缓存更多内容,提升整体缓存命中率;另一方面,可以平衡计算和IO,充分利用不同配置的机器的能力。
好了,在了解了淘宝的图片的一个CDN架构之后,我们来看看他们对于双十一这类高峰期的应对方案。
首先,我们先来分析下,高峰期会带来什么问题:
- 价格和商品发生大量变动,新图片更新数据库中图片URL,由于数据库字段发生改变,数据库方面的缓存也失效了,用户对商品的访问会走到数据库。
- 本地和CDN中原本缓存的图片失效了,用户的图片访问全部会回源到源站点,造成服务器压力过大,甚至会崩溃。
针对这两个问题,可以采取对应的解决办法:
- 既然数据库数据发生变化不好,那我们就保持图片原来的的URL不变(价格发生变化导致重新合成的图片)
- 提前预热图片到CDN,避免贯穿CDN导致源站崩溃
那不改变URL的图片更新是怎么做的呢?很简单,更新OSS中的图片,然后刷新CDN的缓存就可以了,这样用户再次访问图片时,就会回源到源站重新拉去新图片(高峰还需要提前预热到CDN)。
当然,在真正解决这些问题的时候,还有有一些问题需要解决,比如OSS不同机房的同步问题、图片尺寸和域名收敛问题、怎样快速清除多副本CDN缓存问题及域等,有兴趣的同学可以查看阿里巴巴对应的技术文章,很有学习的价值。
好了,以上就是我对CDN的见解和对淘宝缓存技术的总结。
参考资料:
阿里巴巴大淘宝技术:https://www.zhihu.com/question/36514327/answer/1604554133
原文链接:https://blog.csdn.net/weixin_52170399/article/details/124004778?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165934461816782248559192%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165934461816782248559192&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-30-124004778-null-null.nonecase&utm_term=%E6%90%AD%E5%BB%BAcdn
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/6803