高并发系统设计学习笔记(十四) CDN静态资源如何加速

目录

一、静态资源加速的考虑点

我们使用分布式缓存对动态请求数据的读取做了加速,但是在我们的系统中存在着大量的静态资源请求:

二、CDN的关键技术

1.如何让用户的请求到达CDN节点

2.如何找到离用户最近的CDN节点

三、课程小结


一、静态资源加速的考虑点

我们使用分布式缓存对动态请求数据的读取做了加速,但是在我们的系统中存在着大量的静态资源请求:

  1. 对于移动APP来说,这些静态资源主要是图片、视频和流媒体信息
  2. 对于Web网站来说,则包括了JavaScript文件、CSS文件、静态HTML文件等等。

一般来说,图片和视频的大小会在几兆到几百兆之间不等,如果我们的应用服务器和分布式缓存都部署在北京的机房里,这时一个杭州的用户要访问缓存中的一个视频,那这个视频文件就需要从北京传输到杭州,期间会经过多个公网骨干网络,延迟很高,会让用户感觉视频打开很慢,严重影响到用户的使用体验。 

静态资源访问的关键点就近访问 即北京用户访问北京的数据,杭州用户访问杭州的数据,这样才可以达到性能的最优。

在业务服务器的上层增加一层特殊的缓存,用来承担绝大部分对于静态资源的访问,这一层特殊缓存的节点需要遍布在全国各地,这样可以让用户选择最近的节点访问。缓存的命中率也需要一定的保证,尽量减少访问资源存储源站的请求数量(回源请求)。这一层缓存就是我们这节课的重点:CDN 


二、CDN的关键技术

CDN  Content Delivery Network/Content Distribution Network 内容分发网络。

CDN就是将静态的资源分发到位于多个地理位置机房中的服务器上,因此它能很好地解决数据就近访问的问题,也就加快了静态资源的访问速度

 搭建一个CDN系统需要考虑哪两点

  • 如何将用户的请求映射到CDN节点上;
  • 如何根据用户的地理位置信息选择到比较近的节点

1.如何让用户的请求到达CDN节点

需要依靠DNS来帮我们解决域名映射的问题,DNSDomain Name System,域名系统)实际上就是一个存储域名和IP地址对应关系的分布式数据库

比如你的公司的一级域名叫做example.com,那么你可以把你的图片服务的域名定义为“img.example.com”,然后将这个域名的解析结果的CNAME配置到CDN提供的域名上,比如uclound可能会提供一个域名是“80f21f91.cdn.ucloud.com.cn”这个域名。这样你的电商系统使用的图片地址可以是“http://img.example.com/1.jpg

下面我以www.baidu.com 这个域名为例给你简单介绍一下域名解析的过程 

  • 一开始,域名解析请求先会检查本机的hosts文件,查看是否有www.baidu.com 对应的IP;
  • 如果没有的话,就请求Local DNS是否有域名解析结果的缓存,如果有就返回标识是从非权威DNS返回的结果;
  • 如果没有就开始DNS的迭代查询。先请求根DNS,根DNS返回顶级DNS(.com)的地址;再请求.com顶级DNS得到baidu.com的域名服务器地址;再从baidu.com的域名服务器中查询到www.baidu.com 对应的IP地址,返回这个IP地址的同时标记这个结果是来自于权威DNS的结果,同时写入Local DNS的解析结果缓存,这样下一次的解析同一个域名就不需要做DNS的迭代查询了

经过了向多个DNS服务器做查询之后,整个DNS的解析的时间有可能会到秒级别那么我们如何来解决这个性能问题呢? 

在APP启动时对需要解析的域名做预先解析,然后把解析的结果缓存到本地的一个LRU缓存里面。这样当我们要使用这个域名的时候,只需要从缓存中直接拿到所需要的IP地址就好了,如果缓存中不存在才会走整个DNS查询的过程。

这里总结一下, 将用户的请求映射到CDN服务器上是使用CDN时需要解决的一个核心的问题,而CNAME记录在DNS解析过程中可以充当一个中间代理层的角色,可以把用户最初使用的域名代理到正确的IP地址上

2.如何找到离用户最近的CDN节点

 GSLBGlobal Server Load Balance,全局负载均衡)的含义是对于部署在不同地域的服务器之间做负载均衡,下面可能管理了很多的本地负载均衡组件。它有两方面的作用

  • 一方面,它是一种负载均衡服务器,负载均衡,顾名思义嘛,指的是让流量平均分配使得下面管理的服务器的负载更平均;
  • 另一方面,它还需要保证流量流经的服务器与流量源头在地缘上是比较接近的

GSLB可以通过多种策略来保证返回的CDN节点和用户尽量保证在同一地缘区域,比如说可以将用户的IP地址按照地理位置划分为若干个区域,然后将CDN节点对应到一个区域上,根据用户所在区域来返回合适的节点;也可以通过发送数据包测量RTT的方式来决定返回哪一个节点。 


三、课程小结

1.DNS技术是CDN实现中使用的核心技术,可以将用户的请求映射到CDN节点上

2.DNS解析结果需要做本地缓存降低DNS解析过程的响应时间

3.GSLB可以给用户返回一个离着他更近的节点加快静态资源的访问速度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值