【翻译】CDN,是什么,为什么,怎么做

CDN — Content Delivery Networks

What, Why and How?

By:Anuradha Wickramarachchi

编译:冰青

因原文表述简练,为科普需要本人增添了部分内容,新增内容将以下划线标注出来

图片1

What?

What is a CDN? Well is a complex network focussed on delivering content. What content? pretty much everything you load from a popular web service would deliver content through a CDN. For an example, FaceBook, NetFlix and YouTube uses content delivery networks to serve the billions of users who requests data from their servers. The main idea behind a CDN is the distribution of content in a manner that improves spacial (location based) and temporal (access time based) localities.

是什么?

什么是CDN?CDN是一个着眼于内容分发的复杂网络,简称为“内容交付网络”。这里的“内容”类似于你在浏览某个热门网站时,网站给你呈现的所有东西(如图片,文字等),这些东西都是通过CDN发送给你的。例如Facabook,Netflix以及Youtube等运用内容交付网络来服务数以亿计的向中心服务器请求内容的用户。CDN背后的核心思想是通过合理的方式来分发内容以降低物理距离与网络距离带来的不便与延迟。

An example
Usually NetFlix installs redundant servers throughout the world at difference ISPs to server users. These servers are called Open Connect Appliances which keeps content locally based on access. Anything new that arrives at NetFlix core would be pushed into these so that the local users will be upto date with show catalogues.

一个例子

Netflix常常在全世界架设由不同服务商提供的冗余服务器来服务用户,这些服务器被称作Open Connect Appliances(开放网络服务器),他们将储存用户访问网飞的内容。同时,一旦有新的内容,网飞中央服务器将会把新内容推送到冗余服务器,用户能在首页目录中及时看到他们。

图片2

Why?

Think of the story of NetFlix or FaceBook. Huge number of users keep requesting content all around the world and obviously having a single huge server farm is not a solution due to many reasons.

为什么需要CDN?

设身思考下Netflix与Facebook的处境:大量来自世界各地的用户向你持续请求内容,在这种情况下,再大再厉害的单点服务器都可能存在以下问题:

1·Single Point of Failure (SPOF)

1、单点故障SPOF(即中央服务器宕机),尤其是DDOS攻击或大量流量集中访问时

2·Network Latency

2、网络延迟(比如中美之间的网络延迟)

3·Cost (ISPs have to jump through many BGs — Border Gateways, that connect different ISPs. This costs!!)

3、费用(网络供应商传输内容必须通过许多网关,这些网关又连向不同的供应商,这将是笔巨大的费用。就像过高速路要交钱一样。同时为了避免高延迟和丢包率造成的数据损坏,服务器一般会像客户端持续发放数据,这些数据会持续占用带宽)

4·Requires redundancy for fail safe

4、网络容错需要服务器有足够的冗余(即一个服务器出问题时还能调用其它服务器)

因此,为了避免单点服务器因为过多的访问量导致的不可预见的问题,中心服务器常和CDN供应商合作,我们以脸书的CDN供应商Akami为例。

Aakami

CDN能提供以下服务:

  • 通过预储存缓存网页内容,令全球用户能够及时的访问到网页与内容
  • 如果某个CDN服务器没有缓存内容,那么他可以向其他缓存了内容的CDN服务器调用资源(这将不同于传统的互联网要经过多个ISP与DNS丢包的问题,因为CDN服务器之间是平等的,结构化设置的)
  • 提高网站的流量负荷峰值,并分流主要节点(包括中心服务器与接收到过多请求的CDN服务器)的压力,使网页或内容即使受到每秒数百万的请求仍能让用户得以访问(即负载均衡)
  • 提高安全性,对于DDOS攻击,一是通过分流攻击压力,缓解攻击效果;二是基于已有设计区分(每个供应商都不同)非法流量与合法流量,拒绝非法流量访问

此外,CDN供应商的服务器还能收集用户的使用记录与流量资料,实现实时监控与个性化推送服务。

Furthermore, if you inspect the DOM (Document Object Model) of FaceBook, you can see the following.

此外,如果你检查脸书的DOM(文档模型),你能看见以下内容:

图片3

一个典型的CDN储存数据的模型

Images of FaceBook are usually rendered using the Akamai CDN. You can find more who uses Akamai here.

脸书常常使用Akami CDN来呈现内容(看Akami为那些客户提供了服务请点击

How?

CDN是如何工作的?(怎么做)

CDNs are mostly distributed systems that talk to each other. As per the definitionof a distributed system, the entire system appears to be one end point to anyone who reaches it.

CDN是一个高度分布式的系统,节点之间可以相互交流。根据“分布式系统”的定义,对于任何接入到这个系统的节点,分布式系统在他们看来都是单独的一个终端(即节点与网络是平等关系)。

Simplified Process

简要示意图

图片4

上图是CDN的一个简要工作原理示意图,包括以下内容

  • 用户在浏览器输入访问的域名,DNS服务器解析到CDN供应商服务器上
  • 根据流量管理,访问重定向到供应商的某一个CDN节点,反馈解析结果
  • 用户根据解析结果,访问相应的CDN节点,而非访问主服务器

再次以上图为例,如果没用开放网络服务器(即CDN服务器),那么用户要访问某一个页面时,访问请求就必须要经过许多ISP、网关等才能抵达,服务器反馈请求也需要再走一次相同的路径,那么将不可避免的造成延迟、丢包,以及大量的带宽消耗(服务器带宽是要花钱购买的)以保证访问得以进行。

Global Redirectors

The concept of global redirectors is important to discuss on CDNs. These are the ISP level or regional level redirects made to reach the closest server which has the requested content.

全球重定向服务

全球重定向服务的概念是讨论CDN避不开的内容,它指在有内容请求时,CDN供应商级别或者区域服务器级别的重定向将使用户的访问请求导向最近的可用CDN节点

Type www.google.com and you will be redirected to www.google.lk (since I’m writing from Sri Lanka). This is global redirection.

例如:当我们在搜索栏输入“bing.com”时,我们将会被重定向到“cn.bing.com”(因为从IP地址来看我们属于中国),而如果cn服务器宕机,我们则会访问bing.com主服务器,这便是全球重定向服务。

Why Open Connect Appliances

Why don’t ISPs have a single server rack to cache all the stuff, why CDNs push their own devices to ISP premises? Well if ISPs were to know what you requested they would have to open and see the content you requested over internet. Modern web enforces HTTPS, which makes this impossible. If they are to open your requests they would have to be a middle man which will again fail at browsers, because this will fail the SSL certificate validation. Therefore CDN issue their own appliance which does the task in a more secure and a reliable manner.

开放网络服务器的架设理由

如果服务器不会面对大量的流量访问,那为什么供应商不自己架设一个服务器来缓存内容,而仍然让CDN来执行此任务?

这是因为,如果数据传输加密不当(CDN服务商多会提供数据加密服务),内容直接通过ISP(网络服务供应商)传输,ISP将不可避免的获知用户向服务器发送请求的详细内容。那么ISP就存在拦截用户信息,向服务器发送伪造信息与向用户发送伪造反馈的可能,即“中间人攻击”现在网站多通过HTTPS来加强隐私,上述的情况将很难出现,因为如果ISP知晓了你向服务器发送的请求的详细内容,他们将成为“中间人”,这将令ISP传输的内容被浏览器所拒绝,因为他们无法通过SSL证书验证(即我们常见的提示——网站证书失效/不安全),存在欺骗用户的可能。也因为ISP直接传输请求存在上述问题,CDN供应商才得以更可靠、更安全的CDN设施来加密用户的请求,并通过重定向服务减少中间人攻击的可能性(多数数据只在用户和CDN节点间传输,仅个别数据由CDN发向中央服务器)。中间人攻击

This may sound like an annoying task for the ISP, to have some box at their premise. Well NOT!! This is because having such device will enable them to reduce the number of request that pass ISP and reach the WWW. This is a huge cost reduction. Eventually both the CDN and ISP are happy, so are we.

对于ISP来说,这听起来像是个很恼火的情况,因为有了很多条条框框的前提,让他们不能直接传输数据而必须通过CDN。其实正相反,这是因为有了CDN,CDN服务可以减少通过ISP到达WWW的请求数量,令ISP的带宽消耗大幅减少,这将节约一大笔资金,因此,ISP与CDN和用户都是受益者。ISP减少支出,CDN获得流量收入,用户得到更安全便捷的服务。

Thank you for reading. Hope you learned something new. Cheers! 🙂

谢谢阅读,希望能从中学到部分知识~乾杯!

参考文献:

  1. CDN — Content Delivery Networks:What, Why and How? Anuradha Wickramarachchi  Medium
  2. Man-In-The-Middle attack. Wikipedia 
  3. Aakamai CDN, Aakamai.com

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s