00:00
Hello,同学们,接下来我们带大家一起学习一下这个CDN相关的一些知识,CDN这块呢,我们就不带大家做实战案例了,因为这个现在各大云平台上CDN的这种产品层出不穷,也是百花齐放,呃,我们在实际的工作当中呢,基本上不会去自己去这个这个开发CDN相关的工作一定是拿过来买啊,除非你这个所处的工作呢,就是这个。CDN相关的产品的公司,比如说我现在呢,在这给大家摘出来在某招聘网站上的一份招聘需求,这就是CDN开发工程师相关的技能站,大家可以看一下啊,前面这些呢,都不需要说了,就是某一个云服务平台的这个CDN的呃研这个研发岗位啊,首先它要求就是对NG和oper的相关开发工作,那就是我们现现在正在学的这个NG。以及接下来要学的啊,然后在这呢,它需要的这些基本的这个要求,大家可以看啊。
01:00
这些不用说基本数据算法,然后网络层面相关问题解决能力,那这就涉及到了一些,呃,底层内核以及数据包相关的这些知识,这都是属于基础知识。呃,在后越往后边的工作里边呢,我们所用到的基础知识呢,会显得越为重要,呃,基本的Linux平台的这个cell编程啊,然后再有就是熟悉DNSHDDPHDTPS,这前三种协议呢,大家都应该比较熟了,对吧?那后边这个叫quick,这种协议呢,是谷歌提出来的,它是基于udp来实现的一套web数据传输的一套协议,他想要替换掉HTP协议。因为ADP协议是基于TCP连接的,因为TCP连接要做三次握手的操作嘛,啊,那么udp连接像DNS就是基于udp连接,它表达出来的好像是不可靠的网络,但是呢,K啊这套协议呢,实现的,呃,这种。约束限制呢,呃,能够达到数据包不丢失,数据在传输过程当中呢,也不会丢失啊,速度向可想而知,因为它不需要握手了嘛,直接向你目标地址发过去了,对吧?啊,那这几几种协议你得熟悉一下,然后这个编程语言Python goon啊,RUC这个啊,就是我们后边要学的啊,在做二次开发的时候,主要学的就是然后呃这个服务端,比如说和。
02:26
NGS再加1RED啊,Red一般来说做缓存的啊,NGS open这也是我们要讲的,呃,这是招聘需求,那你要做CDN相关开发工作的话,那就基本上就围绕着NGS来开始做文章了啊,那么CDN它究竟是啥呢?总的来说这一个CDN的研发过程啊,它总共分为三部分,或者现在的这种主流的。这个呃,CDN的产品也都是分为三部分,首先第一部分呢,就是DNS系统,这个DNS系统主要是负责域名解析的,对吧,这个大家大家都知道。
03:02
然后第二个呢。就是我们的web服务器。或者叫高性能的外部服务器。第三部分就是it系统。这套it系统呢,相当于我们的后端管理系统啊,啊,就是做一些增删改查的操作。首先我们先看这个DNS,它在这中间它起到什么作用,当我们的用户访问到呃一个站点的域名的时候,比如说呃上硅谷。At硅谷就是com,当他访问到这个域名的时候呢,会通过DNS服务器去解析出来一个IP地址。然后我们的机器,我们的客户端才可以通过这个IP地址去把请求打向真正的我们的服务器,拿域名是访问不到的啊,一定要有这IP,那在CDN网络当中,这个DNS它主要负责就是把域名解析成不同的IP地址。因为CDN叫全网的这种资源分发啊,或者叫资源分发网络,他分发的就是我们的资源,他希望把我们的一些资源呢,分发到全世界的呃,各个的节点上,然后以达到离用户的。
04:14
网络更进一步的目的,然后提高它的访问速度啊。那么最最开始的这一步呢,就是我们期望的这第一步,想要靠近用户,那么就需要在用户所处的网络环境当中就近给他,呃,搞一个节点出来,并且把我们的内容呢扔过去啊,这就是DNS在刚开始解析域名的时候获取的IP的这个这部操作,在这步操作当中,它主要是解析出来的IP地址,那么我们就一定要得先去配置嘛。是吧,那所以我在分发之前要配置好我当前这个这个这个所有的主机,然后呢,有多少台机器啊,上面同时有我们的多少同时有我们的内容,然后哪个这个机器离当前的这个用户最近,那这里边就涉及到了IP的这个匹配的这么一个操作,也就是我北京,那我最好是访问北京的服务器,上海访问上海的服务器,伦敦访问伦敦的服务器,对吧。
05:07
那么它就是通过IP的来源,然后呢,识别出来它的归属,然后把我们就近的这个机器呢,给它直接给它推过去就可以了,这在后边给大家讲的gip的时候,这里边会有这个呃,IP的这个这个这个识别的操作,那总之呢,在这DNS解析的环节,我们就可以得到离用户最近的一台web服务器了。那最近的这台外B服务器,它正常的应该提供一个正常的外部服务器所拥有的一切的操作,比如说我去处理HTTP的头,然后去完成一些GZP或者BR那种压缩啊,它和一个正常的外部服务器其实没有什么两样,那么它的它的这个区别就在于在这个外部服务器上呢,我们需要去分发内容,这我们和我们之前讲的这个静态资源分发是不是很像,只是我们在做资源静态分发的时候是通过了。
06:03
呃,一个小工具,然后呢,在集群里边去可复制,那这会儿如果你要是跨了呃很多的这个城市之后,这个网络,那么你就需要一套it的系统去完成这个内容的分发了,以及这个呃什么时候去分发,以及什么时候呃让它过期,然后在过期的这个环节里边,它不止是这个和客户端之间这种缓存的过期啊,是指当前这个存储的这个文件。它要过期,因为这个文件呢,它是也是有原服务器的地址的。如果你自己买一台这个,呃,也不是一台啊,你买一个这CDN的服务,它一定会要求你配置原服务器地址,那我们的it系统呢,会从这个原服务器地址去拉取你的数据,那你这里边的数据一定要发生了变化,这套it系统会把资源变更后的资源分发到所有的网络,具体的分发操作是在这套it系统里,那么以外部服务器为根基来部署或者是去承载这些静态的资源,以供用户的访问啊,这就是整套CDN系统的。
07:06
呃,技术架构其实他没啥难的,重点的内容在哪儿,其实就在外部服务器怎么去做优化,因为CDN服务器上。存储这些静态资源,它面临的就一定得是比较高的并发量啊,然后怎么去节省网络带宽,怎么能够提高访问的速度啊等等等等,这一系列的操作都是基于这台web服务器的。那现在最主流的外部服务器其实就是NG了,用的最多啊,包括很多CDN服务,它其实用的也是NG,极为有能力的,这些程序员呢,可以通过NG的源码去呃,做一些这种适应于CDN服务这种改造啊,其实也没有什么太多的,主要是面向于性能的提升啊,然后省去一些呃无效或者是用不着的一些判断,想让它达到更高的这个运行效率啊,这个。嗯,也是CDN的这个开发岗位需要掌握的这个技能,就是对源码的这个,呃,这个这个。
08:05
重写啊,重新这个去发布啊。这就是一套CDN系统,那么它的功能除了去简单去分发静态网页之外,我们在这看看这个啊,这是阿里云的CDN啊,大家可以看到啊,你买买的其实是流量,在云服务上呢,它以流量为计价单位来让我们去付费购买啊。你没必要自己去开发,你开发的话也远远高于这个价格的啊。然后这个你看啊,它基本上的功能啊,和正常的外部服务器其实没什么太多的区别,你看HTTP的这种加速啊,这个什么叫全链的内容分发。嗯,也就是说它支持这个上游服务器回源请求,支持HTTPS加密码,上游服务器是HTPS,它也支持啊,然后同时向下去,呃,这个响应数据的时候呢,也是支持的,那么就可以防防劫持防篡改了。然后还可以做到强制的HTPS的跳转,这也都是NG基本的功能,就你访问HTP的时候呢,我强制给你跳转到这个,呃,相应的HTPS的这个连接上,这在咱们基础课里边就给大家讲过了,对吧,NG个可以做到,然后这个一些高性能上啊,比如说这个,呃,这是硬件性能,然后这这也是硬件换了更高性能的这个SSD了,对吧。
09:22
然后可以去灵活的去配置这个,呃,缓存这个过期时间啊,自定义资源内容缓存过期时间支持什么什么对吧,然后还有这个自定义。请求头啊,往某往在你请求某个资源的时候呢,可以添加额外的头进去,比如说最重要的头,就是它当前访问的这个资源在哪台服务器上啊,有这么一个viiaa的标,这这个这个这个头的一个标记啊,这个一般来说都会在CDN的这个机器上啊,给我们写进来,也可以去制定一些额外的这个HTP的头啊,这个呢指的就是在上游服务器去。就是回原去回云服务器。
10:02
去这个拉取数据的时间啊,这个不能一直让用户访问当前这份内容,对吧,我可以配置一下多长时间去拉取一次更新的东西,当然这会儿呢,也可以去配置一些动态资源,让他来通过CDN去访问,但一般来说不推荐这么做啊,如果要是有真的有需要的话,其实也可以。就这配置12345全都给它,全都给它缓存了啊,对吧,然后每隔五分钟呢,去我的云服务器上那tocad上去拉一下这个前五页啊,这这这个前五页的内容这个也是可以做的啊。然后这个访问控制这个就比较简单了,像什么防,防止这个这个防盗连对吧,这咱讲过基本的这个健全啊,然后还有这个IP的黑白名单,这都是NG的基本功能。呃,什么性能优化这个其实他没有什么做太多的优化,就页面优化呢,它可以帮我们去去除。HTML页面里边这些这个空白空白符注释啊,然后你达到这个传输的时候,这个数据量稍微小一点啊,因为你已经分发出去了,那注释也不是给我们自己,那这也不是给这个,呃,这个我们用户看的是吧,你像我们用的JS一般用的这个迷你版里边就压根一个空格都没有,可就可以认为是这种页面压缩和优化啊,去掉了空格,去掉注释啥都没有,就全部都是代码。
11:22
然后这个智能压缩就基本上就是,呃,做这个这个GZB这种压缩了啊,这个过滤参数就减少这个HTML后边再跟什么什么参数,因为他跟完参数,他会认为这不是一个相同的文件。在一是在客户端这呃客户端的缓存,它不会缓存不同参数的这个页面,另外就是在服务器端呢,呃,他也可能会认为这是两个两个独立的文件,就是在问号之后的参数,他可以帮我们去掉,因为你这是静态资源,如果动态资源这肯定不能去啊。然后基本的日志管理啊,其他就没啥了,然后再看应用场景,我们通常可能会想到这东西就是给静态页面加速的,其实还不只是现在有很多的这个。
12:06
呃,视频点播,比如说我们看到的啊,你像现在在哔哩哔哩上对吧,像B站上的这些视频,其实它也是缓存到了不同的CDN服务器上的啊,不然你如果这个。数据存储在,呃这个。广州,那我身处在黑龙江,你去访问这份资源的话,延迟一定是极高的,对吧,这种内容内容分发吧,视频也可以分发过去,甚至可以做这个视频直播,这视频直播其实也是要缓缓存数据的,你看现在咱们看到抖音直播,B站上也有直播,对吧,它都有延迟,这个延迟呢。多的是几秒对吧,少的呢,他也得有那么呃两三秒是吧,这两三秒的延迟接受在这再帮他同步数据,同步到全网的节点上,在真正同步的时候,如果要是跨节点,本来在同步的时候过程啊,这个节点和节点之间就已经比较远了,那它还可以通过专有的这个网络。
13:04
去直连到这个对方的机房,然后你提高这个速度,当然那个呃,专线网络的这个,这个速度和这个价格它是成正比的,速度越快,那带宽越高,那个价格也就越贵,但如果有前端公司,这肯定也就不叫个事了。啊,视频点播这个视频直播也都可以,什么下载加速啊,网页加速,什么移动端加速这些基本上呃,都是基本的功能了。好,这就是CDN啊。
我来说两句