CDN:分享cdn内容分发网络实战技巧
【温馨提醒】文章内容仅供参考,海外服务器租用\托管方案,请咨询YINGSOO客服,24小时免费电话400-630-3752
【热门主机】境外服务器租用丨韩国高防服务器丨越南服务器丨日本服务器
【热搜问题】海外云服务器哪家好?
给大家分享下关于 cdn 的东西,总共分为 2个大部分:原理、详解。
首先说一下 cdn 的基本原理部分,主要分 4 块来描述:cdn 的由来、调度是怎么做的、缓存是什么、关于安全。
什么是cdn?
这是一个做过 cdn 之后的拓扑图,里面有几个概念需要明确一下:
origin server: 源站,也就是做 cdn 之前的客户真正的服务器;
User: 访问者,也就是要访问网站的网民;
edge server: cdn 的服务器,不单只“边缘服务器”,这个之后细说;s/(单)只/指/;
Last mile: 最后一公里,也就是网民到他所访问到的 cdn 服务器之间的路径。
我们平时所使用的dns服务器,一般称之为Ldns,在解析一个域名的时候,一般有两个情况,一种是域名在dns上有记录,另一种情况是没有记录,两种情况的处理流程不一样。
当你访问163这个域名时,如果Ldns上有缓存记录,那它会直接将ip地址直接给你。如果没有缓存记录,它将会一步步向后面的服务器做请求,然后将所有数据进行汇总交给最终的客户。
当你访问163这个地址时,实际上如果本身没有内容的话,它要去后面拿数据,这个过程术语叫递归,它首先会向全球13个根域服务器请求,问com域名在哪,然后根域服务器作出回答,一步步往下,这个过程较复杂,如果大家感兴趣可去查相关资料,在这就不一一赘述。
dns调度
肯定很多人好奇是如何进[美国主机]行调度和进行定位的?
其实也是通过Ldns的具体地址来进行的,比如,看图,假设你是一个广东电信客户,那你所使用的dns服务器去做递归的时会访问到某一个cdn厂商的gRb,全球的一个调度系统,他就能看到来自于哪个Ldns。假设如果用户和Ldns使用同一个区域的服务器,他就会间接认为用户也是广东电信的。
再举个例子,比如说北京联通的用户,它使用dns地址,一般自动给它分配的是北京联通的服务器,这个服务器去做递归的时候,调度服务器就会看到这个请求是来自北京联通的Ldns服务器,就会给它分配一个北京联通的服务器地址,然后让来自北京联通的用户直接访问北京联通的服务器地址,这样来实现精准的区域性调度。
从这个调度理论上看,我们可以发现一个问题,就是假设用户所使用的Ldns地址和你是同一个区域,那么这个时候我们的调度才有可能是正确的。但是举个例子来说,如果你是北京联通的用户,可是使用的是广东电信的Ldns的话,就会让gRb系统误以为你是广东电信的客户,这样就会错误的调度过去。
之前有一次我在小区里上网,由于我的路由器有问题,我设了202.106.0.20的北京联通的dns服务器地址,后来出差去深圳,访问比较大的网站发现比较慢,经过分析,才发现原来我设的dns地址是北京联通的,而我在广东和深圳使用的网络都是电信接入的,但是分配给我的是北京联通的地址,那我用电信的线路访问北京联通的地址,势必就会很慢。
因为刚才讲到的dns调度机制存在一定问题,所以在某些场合下我们会使用第二种调度机制,叫Http的调度。
了解http协议的人知道,在http协议中有一个叫302跳转的功能,它的实现并不是说你访问一个URL,然后马上吐给你想要的数据,而是吐给你一个302返回信令,这个信令头部会告诉你,有一个location目标,这个location就是告诉你下一步将要怎么做,[日本物理服务器]而具体调度是通过location来实现的。
即便我所使用的dns和我不在一个区域,但当我访问http server的时,这个server是由cdn公司提供的。客户访问server的时,虽说通过dns方式无法拿到客户的真正ip地址,但是如果你访问的是http server,他一定能直接看到客户的真实ip,利用这种方法可以进行调度的纠偏,可以直接返回给你一个302,然后location里面携带一个真正离你最近的cdn server。
这种调度方式,优势是准确,但是也存在弊端,它需要有一次tcp的三次握手建连,他不像dns那样直接请求一个数据包过去给一个反馈就oK了,他需要一次tcp的三次握手建连。
第二个是你如何访问到http的服务器?如果你之前是通过dns调度过去的,实际上前边的那个dns也是省不了,在国内是没有办法做anycast的,也就是没有办法来直接访问一个众所周知的大的ip来进行,所以,一般情况下都是通过dns来进行第一次调度,然后用http来进行第二次纠偏。这种情况下大家可以想象,如果你下载一个大文件,比如说电影,但你访问的是一个页面小元素,比如说这个图片只有几k,那么,实际上你调度的时间就已占用了很大的成分。实际上,这种302调度是一种磨刀不误砍柴工的方案,如果你后面有很多工作要做,比如要下载一个电影时间会很长,那你调度准确,即使花一点时间调度也是值得的。但是如果你后续访问一下就完了,那么你这样调度就没有太大意义。
除了dns调度和http的302调度以外,其实还有一种调度方式,叫http dns调度,它的原理是通过一个正常的http请求,发一个get的请求,然后再请求里面以参数的形式携带一个我要解析的域名,然后服务器那边去通过数据库查询,查询之后又通过http的正常响应,把这个你要请求的ip通过http协议给你,这种协议有一个特点就是必须双端都支持,因为这种模式是非标准的。没有任何一个RFc文档说,你的客户端或者你的操作系统本公司,就可以间接知道你的这个Locodns是从哪里来的,然后间接给你进行一个定位。以这个图为例,他实际上第一跳是跳到网速地址,第二跳是分配了网速的一个平台,这个平台又分开其他的ip给最终的客户。
cache系统——缓存系统
除dns调度以外,在cdn里还有一个非常大的重头戏就是cache系统,也就是缓存系统。它用于把那些可以缓存住的东西,缓存到cdn的边缘节点,这样当第二个人去访问同一节点,同一具体电影或mp3时就不用再经过cdn链路回到真正的源站去拿数据,而是由边缘节点直接给数据。
在cache系统里囊括了很多的技术,比如,用空间换时间的这种高效的数据结构和算法,多级缓存以热度来区分,前端是ssd后面是机械硬盘等等。很多的细节就不说了,如感兴趣的可之后交流。
对于cache系统来说,有两种不同的工作状态。第一种工作状态就是所谓的命中(hit),第二种就是没有命中(miss)。如果命中了,直接通过检索找到磁盘或内存上的数据,把这个数据直接吐给客户,而不是从后面去拿数据。这样的话就起到一个很完美的加速效果。
第二种是在miss时,其实,miss的时候跟hit唯一的区别就是,当我发现我的本机上没有这个资源,我会去我的upstream(上游)去拿数据。拿完这个数据,除了第一时间给客户,同时还会在硬盘上缓存一份。如果这个硬盘空间满了,会通过一系列置换方法,把最老的数据、最冷的数据替换出去。
提到了upstream,不是原始服务器,原因是因为当客户访问到cdn节点的时,他发现上面没有数据,并不是直接从原始服务器上去拿,而是经过他的另一个cdn节点,然后通过middlemell的方式去进行一些数据传输。然后upstream这一层,从原始服务器拿数据,通过一系列的加速手段,快速的把数据投递给我们的边缘节点,再把这个数据给最终客户。在过程当中upstream和downstream这两层都会把数据缓存一份。通过这种树形结构,比如说多个边缘节点,然后汇总到一个或者几个副层结点,这样的话可以逐渐的实现流量的收敛。
提到cache的具体技术,我相信这里的很多朋友都是同行业的,有人会说其实这没有什么难的,你只要有网络、有运维人员就可以了。其实我并不这样认为,因为你如果想把它做好的话其实很难,比如,我列出的很多技术你有没有在考虑?
举几个例子来说,你有没有做网卡的的多队列和cpU的亲和性绑定?你有没有做磁盘的调度算法改进?另外,你存储的时候还是用还是?等等都是有讲究的。包括内核的调优包括架构和cpU的绑定,cpU的多级缓存的使用,然后你的处理你使用,还是用标准的的这种机制。再比如说编译的程序时使用的去编译还是用英特尔的,然后你再做很多的调用。比如说一个很简单的字符串拷贝,那你是用,你还是用汇编去写,你还是用什么方式等等很多细节。
关于高性能这一块,还有很多的研究,如大家感兴趣的话,可以之后跟我进行进一步的沟通。我想表达的一个观点就是说,看上去做cdn很简单,入门确实也简单,但是要真正想做好很难。
安全问题
在没有做cdn之前你的网站很有可能会遭受到各种各样的攻击。那么攻击一般分成两种,第一种叫蛮力型攻击,量大的让你的带宽无法抗住最后导致拒绝服务,另外一种是技巧性攻击。
作为cdn来讲,就已经将你的原始服务器的ip进行了隐藏。这样当一个攻击者去访问你的域名的时,实际上访问的并不是你真正的服务器。当他访问的是cdn的节点,就没有办法把cdn的节点打倒,换句话说,即使有能力把cdn的比如10g的节点或者是40g的大节点全部打倒,但由于cdn本公司等很多的细节。
路径的优化,实际上,我们可以把它抽象成是一个求最短路径最优解的思路去解决真实的问题。当你从a点到b点需要传输数据的时,往往会经过一个c点,比直接从a到b更快。在互联网里有个三角原理,和地理位置的原理有一定区别的。虽说有一定的相关性,但还是有区别的,有可能从a经过c到b会比a直接到b更快。
在数据传输的时,需要去考虑很多综合因素,目前为止,包括阿克麦也很难做到完全系统自动化去做链路选择和切换。在调度的时,很多公司都有专门的团队管流量调度的。很多的系统可能只起到支撑和参考的作用,而真正需要决策的还是人。因为你需要考虑的元素太多了,比如说要考虑你的带宽成本、带宽节点冗余量、服务器承载能力,要考虑你的客户敏感度哪些该切哪些不该切等很多细节。
传输层的优化刚才讲到了是tcp优化,在现今的互联网里,tcp优化是可以带来最直接客户体验感的一种实现方式。
美国服务器为何会被众多站长青睐
美国服务器一直都是服务器租用市场上的爆款[传奇微端服务器],无论是从配置还是稳定性、价格方面都是有比较明显的优势的。这也是为什么美国服务器会被众多站长青睐的主要原因。
美国作为发达国家,在机房环境上以及技术人员的水平上都是毋庸置疑的,在机房的维护人员配置上的合理性以及规章制度的完善下,美国机房都是可以随时排除各种故障,有效保障用户的机器能够正常高效的运行的。
下面小编将重点说一下美国主机的优势。
优势一:带宽资源充足
无论是做游戏还是视频播放器业务,对于带宽资源上的需求都是比较大的。相对于国内带宽,美国带宽在价格上相对优惠,并且还具备有无限流量的套餐,带宽在使用上的稳定性也是比较好的。美国主机带宽普遍都是100M以上的独享带宽。很少有带宽比较低配的主机。
优势二:线路优势
在线路上,大部分的美国主机采用的是国际BGP线路,在使用上会比一般的主机线路要更稳定一些,相对于其他区域的主机,美国主机还具备有直连国内的CN2线路,国内用户通过CN2[YINGSOO美国服务器提供种类有多少]线路进行访问时也会更通畅更快速一些。
优势三:适用业务范围广
美国主机的配置还是比较多样化的,可以满足不同行业的需求,无论是游戏行业还是外贸行业还是金融网站行业使用美国主机都是一个不错的选择。无论是在稳定性上还是价格上,美国主机都是明显的优势的。
YINGSOO电话:400 630 3752
热门文章:【扬州服务器】【服务器服务商】【云专线云专线接入】【云防御高防cdn】【货比三家不吃亏】【国内虚拟主机适合哪种类型的网站】【防御服务器主机】【国外服务器加速】【香港云主机租用不得不知的三大问题】【小程序服务器租用】【入局联通混改】【服务器安全防御】【免备案高速服务器哪个最快】【主机托管机房选址】【诺基亚】【香港cn2线路带宽5M和10M区别】【云计算技术与实践年度盛会】【组装服务器报价以及选择情况】【什么是安全通服务器】【小说站】【香港vps是什么】【IDC机房带宽】【云服务器和普通服务器的区别】【绿谷云数据中心】【100万服务器】【seo主机】【为什么很多服务商都有40g高防服务器】【虚拟化技术对比】【云计算与云存储】【静态cdn加速仅仅只能加速吗】
主机那个好 香港?9年香港云服务器租用业务运营经验,1200家企业客户共同选择;香港宽频,PCCW机房核心合作伙伴,连续3年香港云服务器租用,24小时在线服务.
https://www.yingsoo.com/products/cloud-hk.html
9年香港最好的主机业务运营经验,连续3年香港最好的主机业务名列前茅.香港宽频,HKT机房核心合作伙伴,1200家企业客户共同选择,24小时在线服务
https://www.yingsoo.com/products/cloud-hk.html
版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。