首页| 资源下载
登录| 注册

您现在的位置是: 首页 >  技术阅读 >  我为看一张图片,跨过了 2600 公里!

我为看一张图片,跨过了 2600 公里!

时间:2023-02-09

大家好,我是小林。

我写技术文章画的图片是保存到 GitHub 的,没别的原因,就是因为免费,但是 GitHub 访问的速度大家都懂的,访问的速度很慢。
所以我会用 CDN 来加速图片的访问,也就是我的图床的方案是 GitHub + jsdelivr CDN,使用很简单,只需要把域名地址替换一下就行。
那为什么访问 GitHub 会很慢呢?
GitHub 离国内就近的服务器是在新加波,距离我这有 2600 公里,也就是说,访问 GitHub 上的一张图片,一个数据包就要走 2600 公里这么远
而且,互联网从逻辑上看是一张大网,但实际上是由许多小网络组成的,每个网络络中还存在许多的路由器、网关,数据每经过一个节点,都要处理一下,在二层、三层解析转发,这也会消耗一定的时间,带来延迟。
把这些因素再放到全球来看,地理距离、运营商网络、路由转发的影响就会成倍增加,也就是访问 GitHub 慢的一个原因。
那我是怎么知道 GitHub 服务器在哪的呢?
很简单,ping www.github.com 后,就会显示出服务器的 ip 地址,然后把 ip 地址用百度搜索,就能查到该服务器是在哪里的了。
图片资源是静态资源,所以要解决访问慢的问题,就可以用 CDN 加速。
在我加上 jsdelivr CDN 后,GitHub 的图片就会被缓存到 CDN 服务器上,而深圳正好就有一台 jsdelivr 的 CDN 服务器。
这样我访问 GitHub 图片不用再大老远跑去新加波的服务器,而是遵循就近访问原则,直接访问离深圳的这台 CDN 服务器,大大加快了访问速度。
这次,我们就来好好聊一聊 CDN
开车啦!

什么是 CDN?

CDN 的全称叫 Content Delivery Network,中文名叫「内容分发网络」,它是解决由于长距离而网络访问速度慢的问题。
怎么做到的呢?
简单来说,CDN 将内容资源分发到位于多个地理位置机房中的服务器上,这样我们在访问内容资源的时候,不用访问源服务器。
而是直接访问离我们最近的 CDN 节点 ,这样一来就省去了长途跋涉的时间成本,从而实现了网络加速。
CDN 能加速什么类型的内容?
CDN 加速的是内容资源是静态资源
所谓的「静态资源」是指数据内容静态不变,任何时候来访问都是一样的,比如图片、音频。
与之相反的「动态资源」,是指数据内容是动态变化的,每次访问都不一样,比如用户信息等。
不过,动态资源如果也想被缓存加速,就要使用动态 CDN,其中一种方式就是将数据的逻辑计算放在 CDN 节点来做,这种方式就被称为边缘计算。
CDN 是怎么从源服务器获取资源的呢?
CDN 加速策略有两种方式,分别是「推模式」和「拉模式」
大部分 CDN 加速策略采用的是「拉模式」,当用户就近访问的 CDN 节点没有缓存请求的数据时,CDN 会主动从源服务器下载数据,并更新到这个 CDN 节点的缓存中。
可以看出,拉模式属于被动缓存的方式,与之相反的 「推模式」就属于主动缓存的方式。
如果想要把资源在还没有用户访问前缓存到 CDN 节点,则可以采用「推模式」,这种方式也叫 CDN 预热。
通过 CDN 服务提供的 API 接口,把需要预热的资源地址和需要预热的区域等信息提交上去,CDN 收到后,就会触发这些区域的 CDN 节点进行回源来实现资源预热。

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

找到离用户最近的 CDN 节点是由 CDN 的全局负载均衡器(Global Sever Load Balance,GSLB负责的。
那 GSLB 是在什么时候起作用的呢?在回答这个问题前,我们先来看看在没有 CDN 的情况下,访问域名时发生的事情。
在没有 CDN 的情况下,当我们访问域名时,DNS 服务器最终会返回源服务器的地址。
比如,当我们在浏览器输入 www.xiaolin.com 域名后,在本地 host 文件找不到域名时,客户端就会访问本地 DNS 服务器。
这时候:
  • 如果本地 DNS 服务器有缓存该网站的地址,则直接返回网站的地址;

  • 如果没有就通过递归查询的方式,先请求根 DNS,根 DNS 返回顶级 DNS(.com)的地址;再请求 .com 顶级 DNS 得到 xiaolin.com 的域名服务器地址,再从 xiaolin.com 的域名服务器中查询到 www.xiaolin.com 对应的 IP 地址,然后返回这个 IP 地址,同时本地 DNS 缓存该 IP 地址,这样下一次的解析同一个域名就不需要做 DNS 的迭代查询了。

但加入 CDN 后就不一样了
会在 xiaolin.com 这个 DNS 服务器上,设置一个 CNAME 别名,指向另外一个域名 www.xiaolin.cdn.com,返回给本地 DNS 服务器。
接着继续解析该域名,这个时候访问的就是 xiaolin.cdn.com 这台 CDN 专用的 DNS 服务器,在这个服务器上,又会设置一个 CNAME,指向另外一个域名,这次指向的就是 CDN 的 GSLB。
接着,本地 DNS 服务器去请求 CDN 的 GSLB 的域名,GSLB 就会为用户选择一台合适的 CDN 节点提供服务,选择的依据主要有以下几点:
  • 看用户的 IP 地址,查表得知地理位置,找相对最近的 CDN 节点;

  • 看用户所在的运营商网络,找相同网络的 CDN 节点;

  • 看用户请求 URL,判断哪一台服务器上有用户所请求的资源;

  • 查询 CDN 节点的负载情况,找负载较轻的节点;

GSLB 会基于以上的条件进行综合分析后,找出一台最合适的 CDN 节点,并返回该 CDN 节点的 IP 地址给本地 DNS 服务器,然后本地 DNS 服务器缓存该 IP 地址,并将 IP 返回给客户端,客户端去访问这个 CDN 节点,下载资源。

这次就说到这啦,我们下次见!

推荐文章

  • 如何在Win 2003中安全的释放内存
  • 设置Win 2003的本地策略应用
  • 如何配置Win 2003的DNS服务器
  • WIN XP/2003系统服务备份与保护
  • 如何在win 2003中得到登陆密码
  • 如何在Win 2003环境中设置一个Web服务器
  • 如何设置Win 2003的本地策略
  • 谈P2P电影服务器(最经济方案)
  • 如何用Windows 2000 Server充当软路由
  • Unix还是Windows?操作系统选择因素

两个鬼故事如何给软件起名啪啪啪动漫视频起个园林公司名子大全176迷你世界激活码你是我的荣耀百度网盘大型网游排行榜云初薄晏卿免费阅读甘起名女孩姓名旅行网站起名属猪姓李男孩起名瓷都免费起名测名打分创意类公司起名程姓起名烽火中文台湾直播交警电话是112还是122回到爱开始的地方win7office盘锦水游城跳皮筋的玩法高中起点升本科报名玉女心经刑警荣耀女宝贝取名起名大全免费女孩起名能用麒麟的字吗名字大全取名起名大全九流闲人无弹窗门头起名字测试打分结果男猪宝宝起名用字少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化