我读过关于 CDN 的文章,但不知道它到底是干什么用的。
假设我有一个国际社交网络(文本和图像内容),并且来自不同国家的流量在增长,我使用 CDN 吗?
我从我读过的资料中得到的图片是它复制您的内容并将其放在分布在世界各地的许多服务器中,以便用户从最近的点获取它。
这是否意味着每台服务器都有我的 mysql 数据库和图像文件的副本?
这是使您的 Web 服务面向全世界的正确方法吗?因为你怎么能在世界各地建立服务器,联系每个国家的托管公司?
我读过关于 CDN 的文章,但不知道它到底是干什么用的。
假设我有一个国际社交网络(文本和图像内容),并且来自不同国家的流量在增长,我使用 CDN 吗?
我从我读过的资料中得到的图片是它复制您的内容并将其放在分布在世界各地的许多服务器中,以便用户从最近的点获取它。
这是否意味着每台服务器都有我的 mysql 数据库和图像文件的副本?
这是使您的 Web 服务面向全世界的正确方法吗?因为你怎么能在世界各地建立服务器,联系每个国家的托管公司?
内容交付网络通常用于静态媒体。有些 CDN 是 Push,有些是 Pull,这意味着您要么必须将内容推送到他们的服务器,然后他们将其复制到他们自己的服务器网络中,要么他们从您的站点拉取并使用地图告诉他们 cdn.domain.com -> yourdomain.com/media/. 静态媒体请求由 CDN 提供,如果它们不存在,则从源(您的服务器)提取。
如果源服务器出现故障,拉式 CDN 还可以缓存源(也包括动态页面)以保持站点的某些功能处于活动状态。但是,对于一个交互性很强的站点,这不会很有帮助。提供 5 分钟旧数据的新闻网站能够利用 CDN 来缓存原始数据,这比社交媒体网站要好一些,后者需要 5 分钟才能显示状态更新,这可能会影响你的成败。
CDN 通常是一个缓存,在其边缘拥有很少的智能。这些机器严格设置为缓存内容并快速提供服务。虽然 Akamai 确实支持 Edge Side Includes,但让他们真正做到这一点成本高昂且有些困难。静态内容通常是 CDN 将缓存的内容。
您的 mysql 数据和源站功能仍然存在于一个地方,但是,您的静态内容和可能的缓存页面将由 CDN 提供。为了从多个位置运行您的站点,您需要运行多个带有“主管”的服务器,该“主管”会将冲浪者发送到最近的服务器。您可以使用主机命名、DNS Anycast 或指挥盒来做到这一点。您仍然需要在不同的数据中心运行多个 LAMP 服务器。有可以处理多个位置部署的托管服务提供商,您仍然可以使用 CDN 来卸载您的静态内容。