CDN(内容分发网络)如何工作?


37

以Akamai为CDN。据我了解,当客户端请求页面时,请求将转到Akamai中央服务器,然后根据客户端的位置选择Akamai边缘服务器,随后来自客户端的请求将直接发送到此边缘服务器。我的问题是:

当客户端请求一个网站(按名称)时,一旦DNS将名称解析为Akamai中央服务器的IP地址并将其传递给客户端,客户端将保留该IP地址,然后后续请求将如何处理直接转到Akamai边缘服务器的IP地址?

还是在使用CDN时必须由CDN服务器完成DNS解析本身?

像Google,Amazon,Facebook这样的大佬是否拥有自己的CDN服务器,还是依靠Akamai等第三方CDN提供商?说Google和Yahoo! 都使用Akamai CDN,然后使用Yahoo!的内容。和Google驻留在同一服务器上?这不是潜在的安全问题吗?

Answers:


27

您不只是使用CDN 托管整个站点,而只是使用您的内容

我刚刚意识到我回答了一个类似的问题:akamaihd.net是做什么的?

数据请求流程图片来自WikiMedia

因此,您的网站引用了http://akamai/myfile.ext。这将要求myfile.extakamaiakamai然后可以将HTTP重定向发送到实际的内容服务器。

现在,当最后一步被缓存时,很好,将来所有的请求都将发送到最近的内容服务器。

这是如何运作的?

让我们假设这个网站:

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

我从自己的网络服务器请求该网站。该.html文件未使用托管cdn。我的网络服务器的DNS也不是。

初始要求

因此,我的浏览器获取了该HTML文件并进行了解析。它找到参考图像并注意到它位于http://cdn/oliver.png。它请求该文件。

为此,它需要找到的IP地址cdn。在我们的示例中,该IP地址为10.10.10.10

使用该IP地址,它可以连接到cdn服务器并请求/oliver.png

地理位置

现在cdn意识到,“ 那个家伙来自德国! ”。因此,它没有向我发送我想要的照片,而是向我发送了HTTP重定向消息:

/oliver.png不在这里。它在10.10.33.33/oliver.png

所以我的浏览器会问10.10.33.33(希望离我更近)图片。

认真吗

我并不是说这是所有CDN的工作方式,但这只是一种方法。

您还可以实现一个DNS守护程序,该守护程序根据发送查询的人的位置返回不同的名称查找结果。
但是我怀疑这是在实践中完成的。但是也许我只是无法想象如何正确地进行设置。请参阅蓬松的答案,以了解如何使用。

谁运行CDN?

大多数全球参与者都以某种方式拥有自己的内容交付网络(或者我认为是这样)。一些提供商只是将某些服务转移到较大的CDN(例如Microsoft对MSDN下载的处理)。这可能会以某种方式触及您的第二个主题。

考虑到这一点,Microsoft在MSDN中提供了产品下载。然后由Akamai提供这些下载。如果可以确定该下载的URL,则可以直接下载该产品而无需与Microsoft联系。

那是安全问题吗?并非如此,因为所下载的内容仍受产品密钥保护。

但是其他数据呢?

如果您的数据与安全性相关,则它不是CDN资料。如果您不希望某些内容尽可能广泛地使用,请不要将其放入CDN中。


说该站点是somewebsite / file.txt。假设正在使用Akamai DNS。然后,来自客户端的第一个非常请求会转到某个网站还是将第一个非常请求本身转到Akamai(因为以某种方式,客户端使用的DNS知道正在使用Akamai CDN)?
p2pnode 2012年

也许我不了解HTTP重定向及其实现的功能,所以我的问题仍然是,客户端如何知道如何使用Akamai边缘服务器的IP地址,这样Akamai中央服务器就不必花钱了。全部..
p2pnode

@ p2pnode:我扩大了答案。希望它包含您想知道的内容。
霍斯特斯塔普勒

1
这是否会给性能带来重大影响?相反,所有的数据传输发生在一个单一的TCP流,正在使用多个数据流,更多的开销从握手,等等。
阿卡什

@Akash:通常,您不会对所有内容使用CDN ,而只会使用单个的大文件。因此,实际上,这不是问题。
Der Hochstapler,2012年

11

CDN的一种非常常见的方法是使用所谓的“ anycast”。它的工作方式是将您的分布式服务器与DNS并置,以这些服务器作为目标进行响应。例如,您可能在不同的托管设施中拥有三台服务器,并且它们各自的DNS都声称其IP地址是服务器的标准地址(称其为content.example.com)。每个DNS都配置为具有相同的全局IP地址,然后每个服务器的设施都使用BGP更新来使之生效,以便赢得到最近服务器的路由-因此,当您在上进行名称查找时content.example.com,最快/最近/ most可用的DNS使用其HTTP服务器响应请求。

这样,就不必再使用GeoIP技巧了,并且总是可以由最适合您的服务器为您提供内容-由于Internet的异质性,这可能与它的物理位置无关。

据我了解,Akamai至少部分以此方式工作。


5

也可以使用Origin Pull类型CDN。

Amazon Cloudfront能够使用此技术。

您设置了一个名为media.example.com的CNAME,该CNAME指向其分配的服务器名称,并将所有内容保留在服务器上。对于要通过CDN传送的图像和内容,请在URL中使用media.example.com。该请求将发送到其服务器网络,如果内容不可用,则其服务器将从您的服务器中提取内容。进入系统后,内容将分发到与需求最接近的服务器场,并保留在那里以分配给TTL。在TTL过期并且Cloudfront必须刷新它之前,您的服务器不再在缓存的内容上看到任何流量。


1

Akamai无法以这种方式工作。不同的CDN的工作方式不同,但是Akamai专门不对其Web服务器进行任播。

当NY的用户想要时www.acme.com,acme.com的名称服务器将重定向(“代理”)到Akamai名称服务器。Akamai名称服务器会根据其IP地址查看提出问题的计算机的位置,并返回最近/最佳的Akamai服务器要使用的IP地址www.acme.com


这个怎么运作?Akamai名称服务器直接接收来自用户的请求,还是接收来自代表Akamai名称服务器的用户DNS服务器的请求?因此,它将根据DNS服务器的位置而不是用户的位置进行地理定位吗?
odiszapc

0

有关Akamai CDN工作原理的重要摘要,请点击此处

简而言之:

  • CDN服务器具有指向Akamai的DNS服务器的CNAME记录。
  • 因此,客户端浏览器向CDN服务器发出的第一个请求是它的DNS是在Akamai的DNS服务器上查找的,该DNS服务器以接近用户的Akamai服务器的IP地址(称为“边缘服务器”)进行响应
  • 如果其他用户最近请求了这些Edge服务器,则它们可能会从本地缓存中提供静态元素,甚至不必回到服务器来获取资产的副本。
  • 缺少的元素或无法缓存的页面将通过Akamai网络路由到主机附近的另一台边缘服务器。该边缘服务器向主机站点发出实际请求,然后将它们通过网络传递回原始边缘服务器,然后从那里返回给最终用户。
  • 由于边缘服务器使用Akamai的专有协议进行内部通信并绕过瓶颈进行路由,因此流量可以比通过公共Internet更快地流动。

正如上面列出的博客文章所述,一些大公司使用自己的服务器来解析DNS,这可能会抵消使用CDN的某些好处。


-2

CDN适用于Anycast DNS。Anycast dns可在Anycast ip上使用。Anycast ip:在多个服务器上分配一个ip。当用户请求dns解析器时,该查询将由最近的服务器处理,并以最小的延迟提供来自服务器的数据。


通过什么方式可以改善现有的更全面的答案?
Chenmunka 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.