FCon7折倒计时最后一周:日程已上线70%!查看详情>>> 了解详情
写点什么

从起步到爆发,UPYUN 云 CDN 架构演进之路

  • 2015-12-03
  • 本文字数:3063 字

    阅读完需:约 10 分钟

云 CDN,是一种依托强大云计算平台而构建的先进的流量分配网络,可有效解决 Internet 网络拥挤的状况,提高用户访问网站等应用服务的响应速度,使内容传输的更快速更稳定,同时提高服务可用性,并改善互联网上的服务质量。如今,CDN 已经成为目前构成互联网基础的环节之一。移动互联网也让它的角色变得更为重要。它所带来的加速效果,在今天以速度构成的用户体验中,可以说直接影响着企业的用户认同度,速度慢则会导致用户的流失。而在对 UPYUN(又拍云) 来说,CDN 能做的远不止加速这么简单。CDN 与云的结合使得 CDN 能够提供更加丰富的服务,它为企业带来的功能也更具价值,UPYUN 把这种全新的服务定义为新一代的 CDN 加速服务。

2010 年之前,中国移动的网络基础设施还未大规模兴起,中国联通和中国电信的节点基本上可以覆盖到全国的用户,区区的 60 个节点基本上就可以做到全国覆盖了。从 2010 年开始,中国移动的网络基础设施开始实现大规模覆盖,用户数量有了大规模的增长,因此网络加速需求开始呈现逐年旺盛的态势。然而传统的 CDN 服务 2000 年诞生开始,直到 2010 年,技术并没有得到很大的提升。由于当时 CDN 服务无法满足 UPYUN 大部分的工作需求,因此 UPYUN 开始思考并着手构建自己的云 CDN 服务。在 2015 年之前,UPYUN 对外宣称的品牌形象始终停留在提供“存储”服务的阶段,一直到 2015 年,UPYUN 才将自己对外的品牌形象设为“云服务”,其主打产品为“云 CDN”服务。UPYUN 的云 CDN 系统早在 2010 年就开始研发,一直到 2015 年,总共经历了 4 年的研发周期。在这四年期间,基本上每年都会有一次技术上的迭代。

2010 年,起步阶段:

2010 年,UPYUN 的云 CDN 节点数量只有 35 个,处于刚刚起步的阶段,基本和业内持平。前端的边缘节点使用 LVS 来进行负载均衡,下面每一个节点布设 5-10 台服务器,服务器应用系统采用 Nginx 和 ATS 系统。由于对于一个 CDN 系统来说,无法避免的两个功能是流量统计和内容规则的推送与配置,因此早在 2010 年开始 UPYUN 就针对 Nginx 系统进行了大量的设计开发:使用 C Modules 去做业务功能的插入。

图 1.2010 年,UPYUN 云 CDN 架构(源自 UPYUN 黄慧攀)

从整体架构的角度来看,从 2010 年起,UPYUN 就开始使用三层架构:

1. 边缘层,包括 40 个节点左右。

2. 中转层,包括 4 个节点。中转层不仅使得前端用户在回源时便于寻找更优的路线到达源站进行内容的拉取;同时还便于合并节点与路线,无需每个边缘节点都直接回归源站,从而避免源站的带宽堵塞;并且随着节点规模增大,中转节点可帮助源站分担压力,利于源站压力的缩减。

3. 数据中心层,该层使用 Nginx 和 ATS 应用系统,并向下连接 UPYUN 云存储系统。因此,整个的数据缓存有三层:数据中心缓存,中转层缓存以及边缘层缓存。

2013 年,基础建设阶段:

2013 年,UPYUN 由原来的 C Modules 改为使用 Lua 来开发业务模块,并在系统中引入 Redis 集群来开发整个公网的 Push 推送规则,所有的用户规则配置都集中在用户中心里面,并通过 Redis 将所有规则推送至边缘层,边缘层的每个节点只需到 Redis 中心获取域名的访问规则即可,无需通过 Nginx 与数据中心进行任何交互。

图 2.2013 年,UPYUN 云 CDN 架构(源自 UPYUN 黄慧攀)

2013 年,UPYUN 的主要工作都放在了原有的系统完全改进:即用 Lua Modules 去改写整个 C Modules。这件事成功地使得 UPYUN 面对大量客户化定制需求时,能将原有一个月的开发调试周期缩短为只有一周,系统部署也变得简单灵活了。

2013 年,UPYUN 不仅在软件方面有一个大的飞跃,在硬件方面也由原有的 40 个边缘节点增加为 60 个节点,中转节点也由原有的 4 个增加为 8 个,数据中心由原有的 1 个变为了 2 个。

2014 年,爆发阶段:

2014 年对于 UPYUN 来说是业务大规模拓展与增强的一年。其中主要增强的是整个系统中的中转节点这一层。由于在第一代云 CDN 系统和第二代云 CDN 系统中,所需面对的只有云存储系统一个,但在 2014 年,UPYUN 开始尝试向外延更更多的云 CDN 服务,这势必需要连接到客户的源上,并进一步连接到原系统的 Lua 上去,所以 UPYUN 研发团队在中转层中多添加了一层”Nginx + Lua Modules”逻辑控制,这样做的目的主要是为了判断其域名对应的是客户的源还是 UPYUN 的数据中心。当然在其中还会涉及很多功能细节:例如多源站可以支持热备、云群负载以及多个线路的优化等功能。其中多线路优化是指支持判断不同的边缘节点以及所连接的中转节点之间究竟是什么线路,客户源站是什么类型的运营商(电信、联通还是移动),甚至可以将客户源站配置为海外源站。总而言之,UPYUN 会根据客户源站的情况进行特殊路由的设置,只需用户进行自主选择即可,该功能将于 2015 年 12 月对外发布。

图 3.2014 年,UPYUN 云 CDN 架构(源自 UPYUN 黄慧攀)

2014 年也是 UPYUN 的云 CDN 在基础设施上爆发的年份。截止于 2014 年,云 CDN 的边缘节点达到了 130 个,中转节点达到了 16 个,这 130 个边缘节点所能够提供的带宽能够达到 1T,即物理服务器的网络处理能力可以达到 1T 的带宽。

2015**** 年,国际化推进阶段:

2015 年,整个 UPYUN 云 CDN 的基础研发已经达到了稳定成熟的状态,并逐步开始进行国际化推进。一方面,UPYUN 公司将工作重心放在了大客户的定制开发和客户对接的工作上来;另一方面, UPYUN 正式开始为国际网络加速进行铺设。首先第一站就打通了从香港到浙江的光纤链路,并成功地针对中国内地的客户进行网络加速。例如在 2015 年 11 月由 UPYUN 承办的两场香港演唱会的大陆直播网络加速服务,首先需要考虑的就是如何把香港的内容快速地推送到内地,目前可以做到仅仅 30 毫秒的延迟就能将香港的内容推送到浙江的用户源站。

图 4.2015 年,UPYUN 云 CDN 架构(源自 UPYUN 黄慧攀)

随着香港的光纤链路的成功建立,接下来 UPYUN 又着手建立欧美的核心节点,一个节点位于美国的洛杉矶,另一个位于法国,这三个国际节点的落地基本形成了 UPYUN 云 CDN 的国际加速骨干网络。与此同时,UPYUN 还准备于 2016 年在三个国际节点的基础上完成节点星形网络的扩张。迄今为止台湾和新加坡节点建设均已取得不小的进展,而这两个地区正是以香港核心节点为基础的;美国也铺设了 3 个边缘节点,这 3 个边缘节点将首先通过美国骨干节点,再与中国大陆取得通信;欧洲节点扩张工作也将于明年初启动。迄今为止,UPYUN 已经拥有 7 个国际加速节点,3 个国际骨干节点。

2016**** 年,第二次爆发阶段:

2016 年, UPYUN 将此定义为第二次爆发阶段。在这一年,UPYUN 将会持续进行软件层面建设,其中一个比较大的目标就是建立专属的 DNS 调度系统。由于现阶段的 DNS 的主要目的为智能地区调度,该智能调度的技术架构需要进行一个二次铺点的计划——即在同一个省份或线路中会布设多个机房提供服务,为了兼顾到高效率的负载均衡控制,UPYUN 计划于明年开发专属的 DNS 系统。

图 5.2016 年,UPYUN 云 CDN 展望(源自 UPYUN 黄慧攀)

关于 DDoS/CC/WAF 等安全防护方面,UPYUN 也将会做更大的技术投入和资源投入。UPYUN 的 CTO 黄慧攀称,一旦用户受到了大规模的攻击,UPYUN 会有专人前去与客户进行沟通,并在 10 到 20 分钟内排查具体原因,受到攻击的体量,帮助客户判断是否持续保障服务还是暂停服务。

结语:

从 2010 年到 2015 年,短短几年间,UPYUN 的云 CDN 产品经历了从无到有、从小到大、直到迈向国际化舞台的过程,离不开技术在背后的强力支撑,以及整个团队不断总结、思考的态度以及探索的精神。UPYUN 云 CDN 的技术架构演进之路,对于当今不断创新、不断转型的互联网行业也是很好的启示。

2015-12-03 19:062713

评论

发布
暂无评论
发现更多内容

大小公司产品经理岗位对比

Kr

2020 全球 JS 调查报告新鲜出炉

蓝色的秋风

typescript Vue 大前端 React React Native

Flutter技术在会展云中大显身手

京东科技开发者

小程序flutter, 跨平台 云服务 移动开发

CSS15 - 界面样式&垂直对齐

Mr.Cactus

html/css

大厂面试官竟然这么爱问Kafka,一连八个Kafka问题把我问蒙了

五分钟学大数据

大数据 kafka

网络故障排除工具,你用过哪些?

创业失败启示录|校园微生活之快叫外卖

阿萌

28天写作 创业失败启示录 青城

日语复习Day01【~あげく(に)】

IT蜗壳-Tango

程序员 七日更 日语语法 情景句型

如何使用maven 轻松重构项目

田维常

maven

智能building之二 智能单体建筑

张老蔫

28天写作

28 天带你玩转 Kubernetes-- 第七天(玩转 Dockerfile)

Java全栈封神

Docker Kubernetes k8s Dockerfile 28天写作

Python 循环语句

赵开忠

28天写作

面试官:你说一下对Java中的volatile的理解吧

Java 编程 面试 多线程

1月|日更挑战活动说明

InfoQ写作社区官方

七日更 热门活动

JVM故障诊断和处理工具

Silently9527

Java JVM jvm调优

CSS14 - 元素可见性

Mr.Cactus

html/css

大厂面试题:你知道JUC中的Semaphore、CyclicBarrier、CountDownLatch吗

Java鱼仔

Java 面试 并发 JUC

Mysql报表下载为什么出现了重复的数据?

三石

MySQL性能优化 28天写作 mysql重复数据

LeetCode题解:105. 从前序与中序遍历序列构造二叉树,递归+使用索引,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

我们设计的是微服务还是小单体应用

xcbeyond

微服务 方法论 DDD 28天写作

夜莺二次开发指南系列

ning

开源 监控 滴滴夜莺 夜莺监控 运维平台

京东RPA:以企业数字化转型为驱动的机器人流程自动化解决方案专家

京东科技开发者

RPA 企业信息化 数字化运维

MySQL查询——连接查询

程序员的时光

程序员 28天写作

读书笔记:《激荡三十年》上

lidaobing

28天写作 激荡三十年

自动驾驶和疫苗的相似之处——浅谈自动驾驶基本架构(28天写作 Day7/28)

mtfelix

自动驾驶 28天写作

最近很火的京东、天猫超市飞天茅台抢购是怎么回事,从原理流程给你们分析一波

谙忆

精选算法面试-数组II

李孟

面试 算法 数组 28天写作

贸易战的本质是什么?

JiangX

经济 28天写作 制造 美国 贸易战

我给职场新人提个建议

石云升

创业 28天写作 职场新人

谈谈SpringFramework与IoC依赖查找

Java架构师迁哥

「大厂攻略」打开线程 | 进程 | 协程的大门

我是程序员小贱

面试 操作系统

  • 扫码添加小助手
    领取最新资料包
从起步到爆发,UPYUN云CDN架构演进之路_架构_董志南_InfoQ精选文章