CDN为什么这么快

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

CDN全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络。

CDN设计思路

避让:尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。

检测:通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时监测网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求。

分发:根据监测情况重新导向离用户最近的服务节点上。

CDN应用场景

  解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度和成功率。

  控制时延无疑是现代信息科技的重要指标,CDN的意图就是尽可能的减少资源在转发、传输、链路抖动等情况下顺利保障信息的连贯性。CDN所有的工作最后都是落在控制上面,所以CDN就像是网络中的CPU。

示例说明:

在网速一定的前提下,CDN就像网络中快递员小哥

image


而且CDN这个快递员很是聪明
TA不是在用蛮力瞎跑、乱撞
TA还承建了很多家快递点,就近快递(缓存)

TA善于优化快递路径(调度)
还会对包裹进行更合理的重新打包(协议优化)

CDN加速实现原理
基础架构

最简单的CDN网络由一个DNS服务器和几台缓存服务器组成:

当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。

CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回给用户。

用户向CDN的全局负载均衡设备发起内容URL访问请求。

CDN全局负载均衡设备根据用户IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据包括:根据用户IP地址,判断哪一台服务器距用户最近;根据用户所请求的URL中携带的内容名称,判断哪一台服务器上有用户所需内容;查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。基于以上这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址。

全局负载均衡设备把服务器的IP地址返回给用户。

用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

image


服务模式:

  简单地说,CDN是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件,而内容管理和全局的网络流量管理(Traffic Management)是CDN的核心所在。通过用户就近性和服务器负载的判断,CDN确保内容以一种极为高效的方式为用户的请求提供服务。

举例说明:

  国内访问量较高的网站、直播、视频平台,均使用CDN网络加速技术,虽然网站的访问巨大,但无论在什么地方访问都会感觉速度很快。而一般的网站如果服务器在网通,电信用户访问很慢,如果服务器在电信,网通用户访问又很慢。

  通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的cache服务器内,通过DNS负载均衡的技术,判断用户来源就近访问cache服务器取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度,如同提供了多个分布在各地的加速器,以达到快速、可冗余的为多个网站加速的目的。

  CDN服务最初用于确保快速可靠地分发静态内容,这些内容可以缓存,最适合在网速庞大的网络中存储和分发,该网络在几十多个国家的十几个网络中的覆盖CDN网络服务器。由于动态内容必须通过互联网来传输,因此要提供快速的网络体验。如今的CDN可谓是大文件、小文件、点播、直播、动静皆宜!

主要特点:

本地Cache加速,提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度,并大大提高以上性质站点的稳定性。

镜像服务消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量。

远程加速 远程访问用户根据DNS负载均衡技术 智能自动选择Cache服务器,选择最快的Cache服务器,加快远程访问的速度。

带宽优化,自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能。

集群抗攻击,广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种D.D.o.S攻击对网站的影响,同时保证较好的服务质量 。

关键技术:
image
内容发布:它借助于建立索引、缓存、流分裂、组播(Multicast)等技术

内容路由:它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程POP上均衡用户的请求,以使用户请求得到最近内容源的响应;

内容交换:它根据内容的可用性、服务器的可用性以及用户的背景,在POP的缓存服务器上,利用应用层交换、流分裂、重定向(ICP、WCCP)等技术,智能地平衡负载流量;

性能管理:它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。

适用范围:

image


一般来说以资讯、内容等为主的网站,具有一定访问体量的网站。

例如资讯网站、政府机构网站、行业平台网站、商城等以动态内容为主的网站。

例如论坛、博客、交友、SNS、网络游戏、搜索/查询、金融等。提供http下载的网站。

例如软件开发商、内容服务提供商、网络游戏运行商、源码下载等有大量流媒体点播应用的网站。

例如:拥有视频点播平台的电信运营商、内容服务提供商、体育频道、宽频频道、在线教育、视频博客等。

原文发布时间为:2018-06-28
本文作者:马一特
本文来自云栖社区合作伙伴“Java架构沉思录”,了解相关信息可以关注“Java架构沉思录”。

相关文章
|
存储 JavaScript 前端开发
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与文本生成:基于Transformer的文本生成模型
人工智能与文本生成:基于Transformer的文本生成模型
845 0
|
10月前
|
JavaScript 前端开发 开发者
React和Vue有什么区别?
React 和 Vue 都有各自的优势和特点,开发者可以根据项目的需求、团队的技术背景以及个人的喜好来选择使用。无论是 React 还是 Vue,它们都在不断发展和完善,为前端开发提供了强大的支持。
773 58
|
4月前
|
监控 搜索推荐 应用服务中间件
301重定向进阶指南:从原理到实战
本文深度解析301重定向的原理与应用,涵盖HTTP状态码本质、权重传递机制及浏览器处理流程。同时探讨多域名整合、国际化网站和移动端适配等高级场景,并详解Apache、Nginx、CDN层及编程语言实现技术。此外,提供SEO最佳实践,包括重定向链优化、链接权益最大化及监控分析方法。针对混合内容处理、大规模重定向管理和特殊案例给出解决方案,还展望了HTTP/2、搜索引擎算法演进对未来的影晌。文章强调团队协作的重要性,帮助构建健壮的重定向策略以确保网站平稳过渡。
256 18
|
10月前
|
架构师 Java 测试技术
一文搞透高并发指标(QPS、TPS、吞吐量等)
详解高并发场景下的QPS、TPS、RT及吞吐量等关键性能指标,帮助理解系统性能评估的核心概念。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文搞透高并发指标(QPS、TPS、吞吐量等)
|
11月前
|
数据采集 安全 数据管理
通信行业数据治理:如何实现高效、安全的数据管理?
在未来的发展中,通信行业的企业应加强数据治理意识,提高数据治理能力;同时,积极开展跨行业的合作创新,共同推动行业的繁荣与发展。相信在不久的将来,通信行业将迎来更加美好的明天。
|
机器学习/深度学习 算法 自动驾驶
【强化学习】什么是“强化学习”
强化学习是机器学习领域的一种重要方法,主要通过使用环境的反馈信息来指导智能体的行为,并且通过智能体收集的经验数据对自身策略进行优化。在强化学习中,我们通常用“智能体”来表示学习机器或者一个决策实体。这个智能体在某个环境中采取行动,然后收到环境的反馈信号(奖励或者惩罚),从而逐渐学习到一个最优的行动策略。在强化学习中,主要涉及到一些概念,如状态、行动、奖励、策略等等。状态指的是输入进入智能体算法的集合,行动指的是智能体做出的反应,奖励通常是指环境给予智能体的反馈信息,策略指的是智能体在某种状态下选择的行为。
458 0
【强化学习】什么是“强化学习”
|
XML 数据格式
HttpServletRequest的介绍和方法以及代码实战
HttpServletRequest的介绍和方法以及代码实战
727 0
|
Ubuntu Linux
【Linux基础】常用 apt 命令
在 Linux 系统中,特别是基于 Debian 的发行版(如 Ubuntu),apt(Advanced Package Tool)是一个用于处理软件包的强大工具。apt 提供了对软件包的搜索、安装、升级、删除等操作的命令行界面,使得用户能够方便地管理系统中的软件包。
296 13
|
Linux 开发工具 Perl
在Linux中,如何创建、删除和修改文件?
在Linux中,如何创建、删除和修改文件?