如何更好的利用CDN资源

sidneyu,腾讯专家工程师,资深CDN技术专家。从事CDN研发10年,负责腾讯自建和云CDN业务的整体技术架构和运营,在海量服务方面经验丰富。

提起CDN,大家一定立即想到图片,下载,视频等静态内容的分发和就近接入等加速应用。今天的互联网应用场景下,通过CDN承载的内容越来越多,CDN已经成为了一项不可或缺的网络基础设施了。

腾讯CDN上运营的带宽总量已经超过30Tbps,储备的带宽超过60Tbps,占到业务产生的总体带宽量的八成以上。根据我们在腾讯云和内部业务的运营数据,全国范围内使用CDN可以把用户到机房的“平均光缆长度”降低到200KM以内。试想,如果没有CDN,全国的用户都到同一个机房来访问,数据平均要经过1000KM+才能够抵达用户手中,除了用户的访问速度会变慢以外,对于运营商的网络负载会增加数倍,以现在的网络基础设施是一定承担不了的。

为了承担海量的数据分发需求,我们建设了超过600个超过百Gb的边缘节点,分布在全国各个地区和运营商,保证用户可以同省访问到CDN的资源。相比集中式的IDC服务,CDN的资源能够为用户提供非常大的网络质量优势。那么站点和应用服务来说,如何更有效的利用这些资源?除了传统的静态类内容分发以外,CDN还能做点些什么?这篇文章从腾讯视频服务的实践经验来说明一下CDN如何更好的支持到业务。

腾讯视频是一个综合型的服务,用户可以通过多种方式来访问,除了视频播放以外还有检索等多个功能。首先来看看传统的服务架构:

这个是一个典型的动静分离的服务架构,其中影片检索,用户登录等动态功能不能够缓存,需要集中的来处理;而网站的影片页面,播放页面和封面图片等可以通过CDN来提供就近的服务。实际上早先的大部分腾讯的服务都是通过类似的方案来提供的。

如果需要增加新的独立功能,我们通常会申请一个新的域名,独立部署来进行服务,各个功能点的开发,部署,运营等工作都可以独立来进行,互不干扰。但是也有一个额外的问题,功能点多起来以后,网站的域名数增多,每个功能点都需要做运营商分布,网络优化,负载均衡和灾备等;用户访问每个功能都需要连接一个单独的域名,分别解析和建立连接。到了SSL/HTTP2的时代,这个问题变得更加严重,每个域名都需要分别部署ssl服务,需要投入重复的运营工作,用户的访问代价也更大。

首先的问题是,动态的这一部分工作可否移到CDN来做呢?答案是肯定的。通过CDN来接入动态的内容,可以提供更快,更安全的服务质量,同时提供更方便,更快捷的运营能力。

链路优化

用户通过CDN边缘节点就近接入,获得了第一跳的最佳访问质量;而后CDN服务器通过全国的节点和跨运营商专线资源组成一个数据传输网络,在这个网内,我们可以通过智能路由算法基于实时的网络情况找到一个接入点和源站之间的最佳中转方案;CDN的网络可以保证用户,尤其是接入状况不太好的用户获取到最佳的接入方法,例如小运营商用户和移动客户端的用户。而这部分用户才是对质量抱怨最多的用户。

由于CDN解决了用户接入和路由的问题,源站服务器可以部署在单个运营商,甚至可以仅部署在腾讯云的网内,仅需要关心容量,不需要刻意考虑接入点分布的问题;节省运营精力的同时获取到更好的接入质量。

负载均衡和故障屏蔽

源站采用集群服务的情况下,由于请求全部通过CDN来进行接入,因此可以很方便的对源站进行负载均衡控制。我们在CDN上可以通过简单配置来实现丰富的负载均衡策略,例如轮询,服务器权重,基于用户ID或者地址的会话保持,等等;并且还可以进行方便的进行定制。同时单个服务器发生故障时,CDN还可以支持自动向可用服务器进行重试,从而实现故障屏蔽的同时保持用户无感知。

监控和问题定位

用户接入到CDN以后,请求都是在受控的服务器上中转,通过CDN实时监控和日志分析,我们可以立即掌握到服务的负载,请求书,以及源站的访问延迟等信息。同时当用户访问失败的情况下,可以通过访问链定位到问题节点。我们也可以通过自定义HTTP规则把部分用户定位到单独的服务器进行访问,对于新版本的灰度发布和现网问题排查都很方便。

网络安全

当前互联网上,对于业务站点的安全攻击层出不穷。入侵问题,拒绝服务攻击等对源站的稳定服务造成了巨大的威胁。通过使用CDN服务,可以把源站隐藏起来,因此针对业务的攻击会直接导向CDN的网络上。对于DDoS攻击,最简单的手段最有效:比拼容量。 DDoS攻击的定义是,攻击者通过发送大量的请求超过业务的服务能力,从而使得正常用户无法访问;然而CDN具备海量的服务能力和非常大的节点分布,目前我们遭遇到最大的ddos攻击大约是500Gbps,而我们单个业务的访问量最大已经超过了6Tbps,两者不在一个数量级。通过CDN的海量服务能力,我们可以把恶意请求过滤在门外,把真正的用户请求放进来。

!

协议栈加速和数据压缩

CDN优化中间非常关键的一个环节是协议栈单边加速。过去一段时间我们对于协议栈单边加速进行了相当多的探索,也取得了相当不错的进展;不过这里单独说一下针对动态内容的部分。首先是可以单独为信令类型的重要数据在协议层面提高传输优先级,保证及时送达;另外,CDN服务器之间的传输两端都是受控的,因此我们可以采用双边加速,进一步提高传输的质量和稳定性。同时服务器之间采取共享字典压缩,节约传输需要的带宽。

现在,站点上的静态内容,动态内容都通过CDN来服务;能不能够结合起来一起看呢?这个就是要提到的全站加速的概念了。仍然以腾讯视频站点作为例子,我们一起来看一下新的主要架构:

在这个架构下,动态的内容和静态的内容域名都采用v.qq.com单个域名来提供服务,CDN对于静态的内容进行缓存,同时对动态内容进行加速。用户只需要访问单一域名,建立一条连接,就可以得到完整的功能,节省了多次解析和建立连接带来的额外开销。尤其是引入了http2协议的情况下,多个请求可以并发的处理,相比单纯的链路加速,这里还能够进一步提高用户的性能。

后面腾讯云上对于动态加速和全站加速会有对应的产品,感兴趣的同学可以关注一下。

原文链接:

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

虾说区块链-44-分布式系统CAP原理

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。 ? 区块链-分布式系统-CAP原理: 区块链技...

2019
来自专栏散尽浮华

linux系统下对网站实施负载均衡+高可用集群需要考虑的几点

随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧。在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和...

1819
来自专栏IT技术精选文摘

分布式系统一致性保障方案总结

引言 在互联网系统中,理想的情况下,肯定是希望系统能够同时满足“一致性”、“可用性”和“分区容忍性”。 但是基于熟悉的CAP定律也好,还是BASE理论, 我们知...

24310
来自专栏码神联盟

云时代 | 云主机服务器概述、优势及如何选择

近年来,有关云计算的信息、产品和概念,正充斥着互联网的每个角落,在互联网+的背景之下,云技术的出现更是让许多企业的业务数据向云计算靠拢。 1什么是云主机服务器?...

3548
来自专栏EAWorld

微服务架构下的数据一致性保证(一)

大家好,今天我给大家分享的题目是微服务架构下的数据一致性保证。 ? 今天分享第一篇,主要内容包括: 1.传统使用本地事务和分布式事务保证一致性。 2.传统分布...

2965
来自专栏搜云库

保证分布式系统数据一致性的6种方案

在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要...

7746
来自专栏腾讯技术工程官方号的专栏

如何更好的利用CDN资源

导语 随着互联网规模的爆炸式增长,CDN成长为重要的基础设施。如何更好的利用好CDN在全国丰富的资源点为用户提供更好的服务? 这篇文章介绍了CDN在动态内容和全...

2186
来自专栏北京马哥教育

原创投稿 | 如何选择虚拟化方案与软件?

乐乐快跑,马哥门徒,马哥教育原创作者联盟成员,专注于运维领域知识分享,强于知识体系构建。 各位朋友大家好,今天我给大家说说实现虚拟化的方案与软件以及怎么选择哪...

2605
来自专栏SDNLAB

Hyper—基于虚拟化的Docker engine

编者按:毋庸置疑,Docker在开源技术圈里是一个现象级的存在。随着Docker的兴起,整个行业都在经历一场从“虚拟化”到“容器化”的变革,而这个变革实际上是一...

3847
来自专栏SDNLAB

进击的Docker网络

Docker容器近来几乎在IT行业的所有领域频频出现,网络领域也不例外。在2016 DockerCon大会上,Docker公司以及其合作伙伴正在采取措施,让Do...

2905

扫码关注云+社区