您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

作为一名程序员,你真正了解CDN技术吗?

时间:2019-11-18 10:19:35  来源:  作者:

来源公众号JAVA爱好者社区 ,

作者东升的思考

本文导读:

  • 物流仓库配送如何加速
  • 静态资源文件部署方式
  • 静态资源加速之CDN技术
  • 解析过程中的名词解释
  • 最后的总结

1、物流仓库配送如何加速

我们还是从生活中购物的例子来展开。

将时光倒回到几年前,在那时候我的老家县城里,如果你从京东App上购物下单,起码需要等上个几天时间,才能将商品送到你的手中。

因为他们的物流仓库中心当时并没有在县城里来建设,所以一般可能从地市或者省会(看做区域仓库)物流仓库去查找是否有库存,如果区域物流仓库还是没有库存,则可能会从北京物流仓库(看做中心仓库)发货,一旦中心仓库也无货,那就只能从厂商进货了(看做源站)。

但是,现在不一样了,不管你是身在一线城市还是在老家,从京东网站上购物(默认以自营商品为主)下单,基本隔天就能收到货了,快递小哥送货效率都是一样的。

这就是京东强大的物流优势,将物流仓库扩建到离老百姓最近的地方,使得用户购物体验得到了非常大的提升。

通过这个案例,我们就理解了商品送货的加速过程。

商品有普通商品,大件商品等,这些商品最开始都是备货到中心物流仓库,中心物流仓库可以认为是几乎是最全的商品仓库中心。

当区域物流仓库建设好之后,就可以将这些商品提前备货到区域仓库,进一步提高商品送达时间。

当仓库在县城里建设后,就可以将这些商品提前备货到县城仓库,只要仓库离你越来越近,你下单后不需要费那么大的周折,从区域或中心仓库发货了,甚至你都可以去当地仓库某个点上门自提了。

如下图所示:

作为一名程序员,你真正了解CDN技术吗?

 

县城仓库就是离用户最近的仓库,也就是在用户与中心仓库之间通过增加多级中间仓库,就近发货,加快送货速度,提升了用户体验。

2、静态资源文件部署方式

那么,如果在网络上,当你访问一个购物商城时,点击进入商品详情页,可以看到会有大量图片以及广告视频,这些都属于静态资源,那么这些静态资源用户是如何访问到的?

最开始,我们考虑部署个 Nginx 集群,每台机器上都会存储这些静态资源,可以通过某个服务将文件上传到其中一台机器,然后 rsync 方式分发到其他 Nginx 机器上。对于小的静态资源文件这么做没有问题。

但是,对于图片、视频这些资源可能从几M到几百M不等,是不建议放到 Nginx 集群上的,而且也不建议使用分布式缓存,分布式缓存本身也不建议存储过大的Key。假设你的确这么做了,把 Nginx 集群或者分布式缓存都部署在北京机房,当用户访问这些资源时,由于要经过多个骨干网络上的传输,会导致网络延迟高,给你在视觉上感觉就是图片无法加载,视频播放卡顿的现象。

此时,我想你也不会有兴趣在继续等下去了,对于电商网站来说用户就此流失了。

通常,我们可以将小的静态资源文件使用 Nginx 集群当做源站,而对于流媒体音视频数据,会使用单独的分布式存储作为源站。所谓源站,即你的静态数据原始存储的地方。为了达到高可用的、高稳定性的目的,结合企业成本考量,一般要部署成 BGP 多线机房。

BGP 机房示意图如下所示:

作为一名程序员,你真正了解CDN技术吗?

 

所谓的 BGP,它可以实现让网站在各运营商线路之间实现互联互通,做到所有互联运营商的用户访问网站都很快,结合用户网络选择最优质的网络链路。因此,BGP 机房带宽的成本更高。

BGP 机房带宽成本一般在80~400元/M,所以假设每 1M 流量按照 100元算,那么 1G 流量就是 10 万块的,如果是几十或者上百 G流量,这个成本可想而知了。

3、静态资源加速之 CDN 技术

在上面的案例中,我们知道了用户访问静态资源,会直接访问 BGP 源站,带宽成本是很昂贵的。一个网站用户会分布在全国各地,甚至是分布在全球,如何让用户更快的访问这些静态资源呢?

我们也可以借鉴物流仓库的例子来理解,跟物流仓库类似,当然是这些静态资源离用户越近,访问就越快了。由此,CDN 技术应运而生了。

什么是 CDN 技术?

CDN 的全称是 (Content Delivery Network/Content Distribution Network),即内容分发网络。CDN解决的问题是在网络中增加一层CACHE(缓存)层,将源站的资源分发到距离用户最近的网络"边缘"节点上,使用户就近访问内容,提高网站响应速度,避免网络拥塞,保证了用户访问资源的速度和体验。

增加 CDN 节点后,如下图所示:

作为一名程序员,你真正了解CDN技术吗?

 

CDN 的分发架构

跟物流仓库做个类比:中心仓库物流就是相当于 CDN 中心节点,区域物流仓库相当于 CDN 区域节点,县城物流仓库中心就相当于 CDN 边缘节点

CDN 分发架构示意图:

作为一名程序员,你真正了解CDN技术吗?

 

当前 CDN 技术应用是非常普遍的,有实力的公司,也会自建 CDN,而且有自己的CDN研发团队支撑,提供了更加稳定可靠的 CDN 服务。但是大多数公司,还是会选择专业的 CDN 厂商,如果你的服务部署在云上,可以选择阿里云、腾讯云提供的 CDN 服务。此外,还可以选择老牌的 CDN 厂商,如网宿和蓝汛。

CDN 工作原理

那么用户是如何访问到离他最近的 CDN 节点的呢?

我们还是用一张图来整体理解下,更加直观:

作为一名程序员,你真正了解CDN技术吗?

 

上述这张图解决了两个问题:

  • 访问域名如何映射到 CDN 地址的
  • 如何找到离用户最近的 CDN 节点

接下来,我们根据上面两个问题,结合图示来详解下这个流程。

1. 访问域名如何映射到CDN地址

当你通过浏览器访问 static.example.com 域名时,假设这就是个静态域名,并且做了 CDN 静态资源加速。

1)首先会经过本地 DNS 解析器,查看下本机 /etc/hosts 文件是否存在域名对应的IP,如果找到,直接使用该 IP 发起请求。否则,执行步骤2)。

2)由于本地 DNS 服务器解析,如果在本地 DNS 缓存中找到域名对一个IP,则直接用该 IP 访问。否则,继续步骤3)。

3)本地 DNS 服务器会向根域名服务器发起请求,根域名服务器返回顶级 DNS 域名服务器地址,让你去它那里查找。

4)本地 DNS 服务器会向顶级 DNS 域名服务器发起请求,.com 顶级域名服务器返回权威 DNS 域名服务器地址,让你去它那里查找。

5)本地 DNS 服务器继续向 example.com 权威 DNS 域名服务器发起请求,权威 DNS 域名服务器一看这个域名我能解析,发现是有做过CDN加速域名配置,它会 CNAME 到 static.xxx.example.cdn.com 域名。

到此,其实我们通过访问静态域名 static.example.com 经过一番波折,终于找到了 CDN 域名地址。

如果你不需要找离用户最近的节点,通过 static.xxx.example.cdn.com 域名就可以找到正确的 IP 地址了。

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

结合上图,继续解析如果找到距离用户最近的 CDN 节点。

1)本地 DNS 服务器会将 static.xxx.example.cdn.com 会向第一层 GSLB 全局负载均衡发起请求,第一层全局负载均衡会根据用户所在运营商网络分析,比如移动运营商,返回 CNAME 到如 static.yd.example.cdn.com 域名地址。

2)本地 DNS 服务器会继续向第二层 GSLB 全局负载均衡发起请求,第二层全局负载均衡依据 DNS 地理位置判断,返回 SLB CDN 负载均衡地址。

3)本地 DNS 服务器从返回的多个 CDN 节点 IP 中,可以通过本地简单轮询的方式去选择一个 CDN IP 访问。

此时,最终通过 GSLB 全局负载均衡找到的这些 CDN 节点,就是离用户最近的 CDN 节点了。

什么是 GSLB?

GSLB(Global Server Load Balance),即全局负载均衡,它的含义是对于部署在不同地域的服务器之间做负载均衡。一方面可以让流量均衡负载到它下面的服务器上,另一方面能根据地理位置判断,找到离用户最近的服务器。

找到了离用户最近的 CDN 节点,并不一定能直接从该 CDN 节点上获取对应的资源,如果资源不存在,会继续从上级区域或中心 CDN 节点查找,如果都不存在,最终就会回源到源站获取资源,然后设置 CDN 缓存失效时间。

一般对于一些小的静态资源文件,存储在源站,由 CDN 节点主动拉取方式来访问的。

对于大的音视频流媒体文件,可以通过 CDN 厂商提供的接口提前将资源写入到 CDN 某一个节点上,再由 CDN 内部机制将资源分发到其他 CDN 节点上。

但是,即使主动同步资源,也是存在延时的,最终可能会导致回源,而回源带宽成本又是很大的。所以,我们在使用 CDN 的时候就有必要关注 CDN 命中率和源站带宽情况。

4、解析过程中的名词解释

CNAME( Canonical Name ):

它可以将一个域名解析到另外一个域名。

举个例子:

当你使用 docs.example.com 去访问一些资源时,希望通过 docs-xyz.example.com 也能访问相同的这些资源,你可以在 DNS 解析服务商添加一条 CNAME 记录,将 docs-xyz.example.com 指向 docs.example.com,添加后,所有访问 docs-xyz.example.com 的请求都会被转发到 docs.example.com 域名。

CNAME 域名:

接入 CDN 时,在 CDN 厂商控制台添加完加速域名后,会得到一个 CDN 给你分配的 CNAME 域名, 需要在你的 DNS 解析服务商添加 CNAME 记录,将自己的加速域名指向这个 CNAME域名,这样该域名所有的请求才会都将转向 CDN 的节点,达到加速效果。

DNS (Domain Name System)

域名解析服务。

将域名解析为网络上可识别的IP地址。服务器之间认识的都是IP,但用户习惯记忆的都是域名,所以域名与IP地址之间关系是一对一的。它们之间的转换工作,就称为域名解析,由专门的解析器来完成域名解析,可参见上述图中的 DNS 解析过程。

5、最后的总结

大家可能觉得作为一名工程师,离上述提到的 CDN 技术很遥远,忽略 CDN 技术的重要性,好像都是运维干的事情,与我何干。这个想法是错误的,咱们的思维不能太过于局限,如果你做一些直播、视频相关技术,多多少少肯定能接触到这块的技术。

你有没有考虑过抖音、快手上的短视频的整个流程,A城市用户上传视频后,经过转码分发后,B城市用户很快就能看到了,视频播放也是非常流畅,这其中也是得益于 CDN 分发技术的应用。

本文通过引入物流仓库的例子与 CDN 技术做个类比,对于 CDN 分发架构有了感官认识。

同时对 CDN 解析工作原理做了进一步剖析,大家通过 CDN 工作原理分析的那张图好好理解一下,里面包含了 DNS 解析的详细过程,DNS GSLB 是如何查找离用户最近节点的。

CDN 是各大系统的门面,更擅长缓存静态数据、图片、流媒体数据。CDN 作为一种特殊的缓存,它的命中率和高可用性也是我们需要重点关注的。



Tags:CDN   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
说起 WordPress 优化加速来可以说是个经久不衰的话题了,包括明月自己都撰写发表了不少相关的文章。基本上到现在为止明月的 WordPress 优化方案已经固定成型了,那就是 WP Supe...【详细内容】
2021-11-02  Tags: CDN  点击:(49)  评论:(0)  加入收藏
今年 6 月 17 日下午,在线服务普遍中断。在澳大利亚,它影响了该国三大银行、国家邮政服务、国家储备银行和一家航空公司。距离澳大利亚更远的地方,停电影响了香港证券交易所和...【详细内容】
2021-07-05  Tags: CDN  点击:(87)  评论:(0)  加入收藏
对于CDN这个家伙,我们已经不陌生了。图像、文件下载、直播和点播、游戏、应用程序等等,只要是互联网上的内容,都可以通过CDN来加速,保障网络的稳定性,提升用户的体验。 CDN就像一...【详细内容】
2021-04-07  Tags: CDN  点击:(244)  评论:(0)  加入收藏
大家新年好呀,今天是辛丑年正月初七,祝福今日开工的朋友们顺顺利利!今天是CDN 3期,跟大家聊聊运用P2P技术的CDN——PCDN。当遇到视频点播、直播这些拥有较大流量的业...【详细内容】
2021-02-19  Tags: CDN  点击:(178)  评论:(0)  加入收藏
一个通用型的CDN,如果要服务广域范围内的用户,那必然要在一个广大的区域内部署服务节点。那么,一个很重要的问题就来了,就是如何将用户的访问导向到最优节点上。最优的含义有两...【详细内容】
2020-12-14  Tags: CDN  点击:(122)  评论:(0)  加入收藏
流媒体服务器的性能可以从抗抖动能力、拥塞率和卡顿率等方面进行分析。当用户访问的频率过高或者并发的数量超过流媒体服务器所能承受的范围时,必须考虑通过限流来保证接口的...【详细内容】
2020-12-09  Tags: CDN  点击:(133)  评论:(0)  加入收藏
随着近年直播、视频、游戏、电商等大流量业务的高速增长,传统CDN也面对着与日俱增的进化压力,除了最开始的“引导”、“最近邻”等基础功能,“高可用”及“智能化”也成为了CDN...【详细内容】
2020-12-07  Tags: CDN  点击:(101)  评论:(0)  加入收藏
LocalCDN是一个Web浏览器扩展,它模仿Content Delivery Networks以改善在线隐私。它拦截流量,在本地找到静态资源,然后将其注入环境。所有这些都是自动发生的,因此不需要事先配...【详细内容】
2020-10-21  Tags: CDN  点击:(129)  评论:(0)  加入收藏
由于CDN要求您通过其数据网导入所有的内容,因此一些流媒体提供商发现他们需要使用多个CDN来到达不同的地区。这意味着管理不同的系统、分散的流媒体以及添加更多的连接来传输...【详细内容】
2020-10-20  Tags: CDN  点击:(78)  评论:(0)  加入收藏
阿里云全站CDN加速是今年重磅推出的新产品,阿里云全站CDN加速融合了动态和静态资源加速技术,有效全面提升整个网站的访问速度和用户体验。如果你的网站备案了,建议你开通尝试,给...【详细内容】
2020-10-13  Tags: CDN  点击:(203)  评论:(0)  加入收藏
▌简易百科推荐
以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。 文档地址: https://www.yuque.com/bjjnts/jxd/bo1oszusing System;using System.C...【详细内容】
2021-12-28  Wednes    Tags:HttpClient   点击:(1)  评论:(0)  加入收藏
阿里云与爱快路由安装组网教程一、开通好阿里云轻量服务器之后在服务器运维-远程连接处进行远程 二、进入控制台后在root权限下根据需要安装的固件位数复制下面命令。32位:wg...【详细内容】
2021-12-28  ikuai    Tags:组网   点击:(1)  评论:(0)  加入收藏
HTTP 报文是在应用程序之间发送的数据块,这些数据块将通过以文本形式的元信息开头,用于 HTTP 协议交互。请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应...【详细内容】
2021-12-27  程序员蛋蛋    Tags:HTTP 报文   点击:(5)  评论:(0)  加入收藏
一 网络概念:1.带宽: 标识网卡的最大传输速率,单位为 b/s,比如 1Gbps,10Gbps,相当于马路多宽2.吞吐量: 单位时间内传输数据量大小单位为 b/s 或 B/s ,吞吐量/带宽,就是网络的使用率...【详细内容】
2021-12-27  码农世界    Tags:网络   点击:(3)  评论:(0)  加入收藏
1.TCP/IP 网络模型有几层?分别有什么用? TCP/IP网络模型总共有五层 1.应用层:我们能接触到的就是应用层了,手机,电脑这些这些设备都属于应用层。 2.传输层:就是为应用层提供网络...【详细内容】
2021-12-22  憨猪哥08    Tags:TCP/IP   点击:(35)  评论:(0)  加入收藏
TCP握手的时候维护的队列 半连接队列(SYN队列) 全连接队列(accepted队列)半连接队列是什么?服务器收到客户端SYN数据包后,Linux内核会把该连接存储到半连接队列中,并响应SYN+ACK报...【详细内容】
2021-12-21  DifferentJava    Tags:TCP   点击:(10)  评论:(0)  加入收藏
你好,这里是科技前哨。 随着“元宇宙”概念的爆火,下一代互联网即将到来,也成了互联网前沿热议的话题,12月9日美国众议院的听证会上,共和党议员Patrick McHenry甚至宣称,要调整现...【详细内容】
2021-12-17  王煜全    Tags:Web3   点击:(14)  评论:(0)  加入收藏
一、demopublic static void main(String[] args) throws Exception { RetryPolicy retryPolicy = new ExponentialBackoffRetry( 1000, 3);...【详细内容】
2021-12-15  程序员阿龙    Tags:Curator   点击:(22)  评论:(0)  加入收藏
一、计算机网络概述 1.1 计算机网络的分类按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);按照网络使用者:公用网络、专用网络。1.2 计算机网络的层次结构 TCP/IP四层模...【详细内容】
2021-12-14  一口Linux    Tags:网络知识   点击:(31)  评论:(0)  加入收藏
无论是在外面还是在家里,许多人都习惯了用手机连接 WiFi 进行上网。不知道大家有没有遇到过这样一种情况, 明明已经显示成功连接 WiFi,却仍然提示“网络不可用”或“不可上网”...【详细内容】
2021-12-14  UGREEN绿联    Tags:WiFi   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条