CDN 工作原理及其在淘宝图片业务中的应用
CDN 工作原理
分发网络(Content Delivery Network,简称CDN)是一种分布式网络,旨在通过在不同区域的边缘节点服务器群来缓存和传递内容,从而加快用户访问速度,其工作流程大致如下:
1、域名解析:当终端用户发起HTTP请求时,首先向本地DNS服务器发出域名解析请求,如果本地DNS缓存中有记录,则直接返回给用户;如果没有,则向授权DNS查询。
2、调度系统:授权DNS解析后,会返回一个CNAME记录,指向阿里云DNS调度系统,该系统为请求分配最佳节点IP地址。
3、节点响应:用户获取到最佳节点IP地址后,直接向该节点发起请求,如果节点已缓存所需资源,则直接返回给用户;否则,节点会回源站请求资源,并缓存到本地后再返回给用户。
这种机制确保了用户能够快速获取到所需的内容,同时减轻了源站的负载压力。
淘宝图片业务背景
在淘宝平台上,商品的主图对消费者的购物决策有着重要影响,长期以来,商品价格的变化需要商家手动更新图片,这不仅影响了价格的准确性和及时性,还增加了商家的操作成本,为了解决这些问题,淘系技术部-鹿班团队尝试通过技术手段自动计算新的价格并合成图片,然后更新商品主图。
淘宝图片空间和CDN架构
淘宝的图片访问链路有三级缓存:客户端本地、CDN L1和CDN L2,所有图片都持久化存储到OSS(对象存储服务)中,真正处理图片的是img-picasso系统,它负责从OSS读取文件、对图片尺寸进行缩放和编解码等操作,CDN的缓存分为两级,通过一致性hash等手段合理分配L1和L2的比例,以提升整体缓存命中率和平衡计算与IO。
层级 | 描述 |
客户端本地缓存 | 优先检查客户端是否已有图片缓存,若有则直接使用 |
CDN L1缓存 | 若客户端无缓存,则从CDN L1获取图片 |
CDN L2缓存 | 若CDN L1也无缓存,则从CDN L2获取图片 |
图片空间回源 | 若CDN L2仍无缓存,则从OSS拉取图片源文件进行处理 |
频繁换图带来的技术挑战
当商品价格发生变化时,系统会自动合成新图片并更新商品中心中的图片URL,这会导致两个问题:一是CDN及手机淘宝原本缓存的图片内容失效,用户访问时需回源到img-picasso;二是交易的核心应用(如购物车和商品中心)的缓存也失效,导致对商品DB的访问压力增大。
解决方案
为了应对上述挑战,淘宝采取了以下两种解决方案:
1、改图保持图片URL不变:当图片内容发生变化时,只更新OSS中的内容并刷新CDN缓存,而保持图片URL不变,这样可以避免商品链路的缓存失效。
2、提前预热图片到CDN:在访问高峰到来之前,将图片提前预热到CDN,以避免CDN缓存失效对源站造成压力。
手机淘宝与阿里云CDN的合作
手机淘宝在短视频、图片等多个场景下都会用到CDN内容分发网络,手机淘宝技术和阿里云CDN技术有非常多的共建合作,特别是在IETF QUIC加速产品方向上,QUIC协议基于UDP设计,具有更低的连接和传输延迟,以及极佳的弱网性能,通过XQUIC库与CDN QUIC加速产品的配套使用,手机淘宝在短视频场景下实现了分片下载耗时优化20%、卡顿率整体优化10%的效果。
常见问题解答(FAQs)
1、为什么有时候手机淘宝上的图片加载很慢?
这可能是由于多种原因造成的,比如网络环境不佳、DNS解析问题、CDN节点未命中等,如果遇到这种情况,可以尝试切换网络环境或联系客服寻求帮助。
2、淘宝是如何确保图片加载速度的?
淘宝通过CDN内容分发网络来加速图片的加载速度,CDN会在不同区域的边缘节点服务器群缓存图片资源,当用户请求时,可以从最近的节点获取图片,从而大大提高了加载速度,淘宝还会根据实时流量情况动态调整CDN节点的资源分配,以确保最佳的加载性能。
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/62013.html