当前位置: 首页 > 编程日记 > 正文

CDN全站加速助力企业云上升级

[2018云栖大会南京分会飞天技术汇专场,阿里巴巴高级技术专家魏晋带来题CDN全站加速助力企业云上升级的演讲。主要内容是结合实际客观案例详细解读全战加速产品如何对动静态业务进行的加速,结合安全WAF等其他运营产品,对如何构建适合大部分业务场景下的打包服务的问题进行详细的分析。
数十款阿里云产品限时折扣中,赶快点击这里,领券开始云上实践吧!
视频回顾请点击
以下是是精彩视频内容整理:

全站加速应用场景

全站加速主要包括一下几个场景:
•企业官网:由于各大官网都有各种类型的登陆页面,所以包括了动静态的资源。
•ERP系统WEB版:比如用户的一些表达类的查询,对每一个用户查询出来的结果会根据用户的请求不断的改变,所以其包含了很多动态的资源。
•票务网站:与ERP系统WEB版类似。
•API加速:现如今API加速在很多的APP应用中是很重要的一部分,所以API加速相对来说应用比较广泛。
•页游手游。

加速组成原理

_1

实际上全站加速与CDN的加速原理有些类似,传统的CDN加速是静态的加速,静态加速比较实用的一点就是我们基于的一个认识是网络的传输速度没有本地磁盘的传输速度快,或者说网络带来的吞吐没有本地磁盘那么大,所以传统的静态加速一般都是通过提高命中率来进行加速的。这样一来当用户的请求访问到CDN的边缘节点时,边缘节点对这个内容有缓存,那么就可以直接从本地缓存中发送给用户,这样用户的请求就直接发到了距离用户比较近的边缘节点,如此一来也可以解决跨网的问题。
但是动态加速可能会不有所不同,因为每一个请求都需要回到用户的原站,然后还需要将用户原站的内容再一次返回给用户,所以必需要经过整个链路。所以要通过传统的缓存方式是很难进行动态内容的加速的。所以在全站加速产品里面,动态内容加速的核心部分主要有两个部分,第一个部分就是智能的选路;第二个部分就是传输协议的优化离不开网络的探测以及数据模型的处理。其次还有选路算法,其中比较经典的算法是最短路径算法。一旦有了路径以后更好的传输协议在解决局部网络协议传输效率上有明显的提升。
常见的提高传输能力的方法有TCB优化的一些技术,其原理是如何使我们的窗口开始就能够开的比较大,或当出现拥塞的时候,我们如何根据一些by case场景使拥塞恢复的时间更短。比如跨海这样的长链路的情况下,那么一个TCP的建联与前面的RTT一定是一个建联的请求。也就是说,当一个小的请求缺少一个RTT也就相当于少了两三百个MIS,这在一个长链路的应用下其实是非常有效的,因为它能够极大地降低了首包的延迟。核心的技术就是传输的管道化,在CDN网络内部想要把传输的管道建好,就相当于把高速公路铺好,我们只需要把数据传入到管道即可。
CND产品功能与服务

全站加速产品的功能与服务主要包括三个方面:
1)传输加速:这与传统的CDN加速是相同的,但这个产品里面有几个比较重要的特色,他要考虑动态内容又要考虑静态内容,所以一个便捷的动静分离的规则是存在于全站加速产品里面的。也就是说,用户一旦接入全站加速以后,比较典型的类似GPG、HTMR我们默认为是静态文件,其他的我们认为是动态文件,采用的完全是不同的加速策略。其中一些公用的加速策略包括压缩传输,在内部的时候能不能采用一些好的压缩算法。因为压缩的数据量越小,它的延迟就会更低。此外还包括一些内部的专线/隧道,这在解决跨海的链路的质量问题的是非常有效果的,因为防火墙的策略和国家的一些政策法规,其实CDN是构建在IDC内部或者是一些运营商的机房内部的。所以ABTN也就是阿里巴巴的骨干网,它在网络质量上是比普通的公网有保证的。
2)稳定均衡:这是产品的一个重要的特性,因为我们对用户做了大量的测试,不管是内部还是外部的用户,我们一直在不停的调整我们的策略。其中负载均衡策略有一些典型的案例,比如说有一些用户可能需要不同的运营商,其策略也是不同的,比如电信的用户要回电信的原站,再比如如果有两个原站A和B,用户开始登陆时到达的是A原站,那么如果希望A用户后学所有的交互信息都回A原站,因为原站内部的数据库之间没有做好,这时候就需要CDN来完成。
智能选路是动态CDN里面的一个核心技术,在CDN网络里面,怎样能够及时发现运营商之间的拥塞与网络上的异常,及时选择一条好的链路然后避免拥塞是很重的问题。拥塞避免有很多不同的方式,对于网络上的拥塞,服务器的方面的拥塞,由于结点突发的量比大,虽然网络较好的但是服务器的处理能力却不够了。解决这些问题的一个核心的想法就是多径重试,对于选路的时候会选择若干条最优的路或次优的路。然后在实际传输服务的时候会选择最优的,如果最优的出现异常的时候,会有其他的方式通过次优的路再传,这样能保证在回原的过程中不会因为某一条路径造成用户访问的失败。
3)安全防护:这部分主要是和其他的CDN技术和云产品合作的,其中包括HTTPS (2)。访问控制这部分主要是鉴权防断链的一些策略,IP访问的控制以及一些黑白名单的一些控制,这些都是继承了CDN本身的功能。排队回源在全站加速产品中是不受限制的。

产品

1)接入快捷
2)稳定可靠
3)智能加速
4)内容安全
在基础能力上全站加速与CDN现有的结点的覆盖规模是复用的,所以在全范围内大概有1200+个节点,其在海外也有近60到70个节点,基本上国内可以做到市级级别的覆盖,大中小城市、各运营商本地覆盖离用户更近。带宽储备大约有80T+,所以可以从容面对突发流量,为持续增长的业务保驾护航。单节点缓存容量也已经达到1P+,能够为用户提供更好的缓存命中率、更高速的缓存,有效地提升用户访问速度。

_2

优化体验

_3

图一是阿里巴巴内部监控系统里面一个体验优化的效果,是一个典型的使用隧道来解决国内国外访问时防火墙拦截的问题。如果用户原站在国内访问在国外,这时就会被国际防火墙拦截,所以我们内部会使用IP隧道的方式,开启隧道后,后面的查杀率就比较低了。图一中红线表示不使用CDN加速,蓝线是有熵的CDN提供的一个全站加速产品,橙色线是阿里提供的全站加速服务。
_4

由图二可以看到,在全球加速范围内,我们的性能是比较稳定的,基本上没有出现太大的波动。请添加链接描述](http://click.aliyun.com/m/50079/)

转载于:https://blog.51cto.com/11778640/2117548

相关文章:

【组队学习】一月微信图文索引

一月微信图文索引 一、组队学习相关 周报: 【新周报(049)】Datawhale组队学习Datawhale组队学习周报(第048周)Datawhale组队学习周报(第047周)Datawhale组队学习周报(第046周&…

CSP 2019-09-1 小明种苹果 Python实现+详解

试题 代码 # N,M分别表示树的棵树和疏果轮数 N,M [int(i) for i in input().split()]leftTrees 0#最后所有树树上的苹果总数 reduceMaxIndex 0#疏果个数最多的苹果编号 reduceMaxSum 0#上面那棵树的个数reduceMaxSum 0 reduceMaxIndex 0 leftTrees 0 for i in range(N)…

Easyui 让Window弹出居中与最大化后居中

easyui1.3.2版本,window的弹出不会居中了。而dialog是会居中的,我们必须为为window的open事件做扩展 代码如下:只要加入以下代码即可.如果你是看了MVC项目系列的,把他放到jquery.easyui.plus.js里面就可以了 //让window居中 var easyuiPanelOnOpen func…

电子学会青少年编程等级考试Python一级题目解析11

Python一级题目解析 题目 (1)下列哪个不是Python的保留字?( )【2020.06】 A. ifB. orC. doD. for (2)下面哪一个不是Python的保留字?( )【2021.06】 A. …

单例和多例的区别

为什么80%的码农都做不了架构师?>>> 需要明白以下几个问题: 1. 什么是单例多例;2. 如何产生单例多例;3. 为什么要用单例多例4. 什么时候用单例,什么时候用多例; 1. 什么是单例多例: 单例&#…

CSP 201909-2 小明种苹果(续)Python实现+详解

试题 代码 # N表示苹果树的棵树 N int(input()) T, D, E 0, 0, 0 # 所有树剩果总数 # 发生苹果掉落的苹果树总数 # 相邻三棵树发生苹果掉落的组数 treeMatrix [] # 存放所有数的数果疏果信息 for i in range(N):treeRow list(map(int, input().split()))treeRow treeRow…

hdu1176

hdu1176 f(x,t)max{ f(x-1,t-1) , f(x,t-1) , f(x1,t-1) }; left(5-t)>0?(5-t):0; right(5t)<10?(5t):10; for left to right <-- i resmax{f(maxt,i)}; #include <stdio.h> #include <string.h> #define mmax(x,y,z) (x)>((y)>(z)?(y):(z))?(…

spring体系

2019独角兽企业重金招聘Python工程师标准>>> 一、spring从体系架构上分为 1. 基本组件框架组合&#xff1a;Spring Framework 2.专项领域应用组件&#xff1a;Spring Portfolio 这个Spring Portfolio主要应用满足于特定的的应用场合&#xff1a;包括了spring Securi…

电子学会青少年编程等级考试四级题目解析07

一、题目&#xff1a;数字反转 Jaime想去城堡探险&#xff0c;在城堡门口遇到了小猫&#xff0c;Jaime必须答对小猫提出的问题才能进入城堡。 小猫出题啦&#xff1a;找到一个四位数&#xff0c;该四位数的各位数字翻转&#xff08;个位变千位&#xff0c;十位变百位&#xf…

如何连接本地mysql+设置无密码登录

如果嫌麻烦&#xff0c;可以设置密码为空&#xff0c;下次登录就不需要密码了。

【GDI+】 线段 文字 定位的问题(二)

继续&#xff1a; 经过上文的分析&#xff0c;似乎可以得到类似这样的想法&#xff1a; 由此 分为左右两侧进行区分绘制&#xff0c;应该就可以获得想要的结果了~ 转载于:https://www.cnblogs.com/loveclumsybaby/p/3440314.html

电子学会青少年编程等级考试Python一级题目解析10

Python一级题目解析 1、题目 下面代码的执行结果是&#xff08;&#xff09; a 123456789 b "*" print("{0:{2}>{1},}\n{0:{2}^{1},}\n{0:{2}<{1},}".format(a,20,b))A. *********123,456,789 ****123,456,789***** 123,456,789*********B. **…

ES6基础之Array.fill函数

引子 关注「时事」的同学都会注意到&#xff0c;ES6和TypeScript是时下「投资」的热门。作为一位老同学&#xff0c;我也注意到这一点&#xff0c;不断收集一些小东东&#xff0c;以备不时之需。 正题 本文中记录的是ES6为Array增加的fill()函数。其功能是&#xff0c;用户可以…

CSP 202006-1 线性分类器 python实现+详解

试题 代码 # 读入m,n m, n [int(i) for i in input().split()]# 创建字典存放已知点 dict {} for i in range(m):line input().split()x, y, t linex, y int(x), int(y)dict[(x, y)] t# 逐条线地去判断每一个点 # 创建两个集合&#xff0c;一个存放坐标代入公式后大于零…

Java堆内存分配与回收策略

java主要在堆上分配内存&#xff0c;而Java堆又分为新生代(YoungGen)和老年代(OldGen)两个部分&#xff0c;新生代又再分为Eden区和Survivor区两部分&#xff0c;本文根据java堆的划分&#xff0c;描述hotspot的内存分配策略。 GC垃圾收集分类 Minor GC: 发生在新生代中的垃圾…

清华学长带你从宏观角度看递归

分享嘉宾 赵子一&#xff0c;Datawhale成员&#xff0c;清华大学研究生在读。 分享视频 见公众号“组队学习” 分享内容

关于loader加载的东西必须是继承sprite

如果不是继承sprite转载于:https://www.cnblogs.com/wonderKK/p/3440616.html

CSP 202006-2 稀疏向量 python实现(非满分)(待更新)

试题 代码 &#xff08;1&#xff09;30分代码 # 读取n,a,b # n表示向量u,v的维数&#xff0c;a&#xff0c;b分别表示u&#xff0c;v的非零值个数 n, a, b [int(i) for i in input().split()]# 创建两个二维队列存放u,v的信息 List1 [] List2 [] for i in range(a):line …

Java泛型总结

0. 概述 泛型是Jdk1.5引入的特性。泛型是Java程序员最常用且最容易被忽视的知识之一。许多Java程序员只是使用泛型类。但不考虑其工作方式&#xff0c;直到出现问题。 1 术语 用示例进行描述。ArrayList<E>类、ArrayList<Integer>类&#xff1a; 整个称为ArrayLi…

首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持

首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持 https://tech.sina.cn/digi/nb/2018-05-15/detail-ihapkuvm0295695.d.html 上海市徐汇区人民检察院依法以破坏计算机信息系统罪对全市首例利用智能路由网关设备进行流量劫持的犯罪嫌疑人章某批准逮捕。 经查&#xff0c;2018年…

电子学会青少年编程等级考试Python案例10

案例&#xff1a;彩虹 1、作品 2、代码 背景图片&#xff1a;蓝天白云.png import turtleturtle.Screen().setup(803, 648) turtle.Screen().bgpic("./蓝天白云.png")pen turtle.Pen() pen.speed(10) r 330 size 10 colors [#ff0000, #ff7f00, #ffff00, #00ff0…

CSP 201912-2 回收站选址 python实现+详解

试题 代码 # 读入点的个数 n int(input())# 创建字典&#xff0c;键为点的坐标&#xff0c;值为true&#xff0c;存放所有点 dict {} for i in range(n):x, y [int(m) for m in input().split()]dict[(x, y)] true# 创建字典&#xff0c;存放是回收站的点 dict1 {} for k…

web.xml 配置 加载顺序

web.xml 的加载顺序是&#xff1a;context-param -> listener -> filter -> servlet 。 过滤器执行顺序是根据filter-mapping &#xff0c;不是根据filter顺序。转载于:https://www.cnblogs.com/xiongjinpeng/p/web-xml%e9%85%8d%e7%bd%ae%e5%8a%a0%e8%bd%bd%e9%a1%ba…

python包引用问题

python模块引用梳理 文件组织结构&#xff1a; 复制代码t├── __init__.py├── main.py├── t1│ ├── A.py│ └── __init__.py└── t2 ├── B.py └── __init__.py 复制代码A.py def test(): print t.t1.A.test()B.py def test(): print t.t2.B.test()执行&a…

【新周报(051)】Datawhale组队学习

记录&#xff1a; 按照本周规划&#xff0c;我们正在与阿里云天池合作开展“在线编程训练营”的组队学习活动&#xff0c;在这次活动中我们已经完成12个知识点&#xff08;数组、链表、栈、字符串、树、位运算、双指针、搜索、排序、动态规划、分治、哈希表&#xff09;的视频…

ZJU-java进阶笔记 第一、二周(类与对象,对象交互)

对象变量是对象的管理者&#xff0c;而非所有者 VendingMachine vm new VendingMachine();this指代当前对象 成员函数可以直接&#xff08;不需要点运算符&#xff09;调用本类的其他成员函数 void insertMoney(int amount) {balance balance amount;showBalance(); }定义…

常用的文本处理函数

函数说明left()返回串左边的字符length()返回串的长度locate()找出串的一个子串lower()将串转换成小写upper()将串转换成大写ltrim()去掉串左边空格rtrim()去掉串右边空格substring()返回子串的字符转载于:https://www.cnblogs.com/forphp/p/3442568.html

【青少年编程竞赛交流】02月份微信图文索引

02月份微信图文索引 由于“组队学习”这个公众号的功能主要是组织Datawhale社群中的学习者们每个月的组队学习&#xff0c;所以&#xff0c;我另外新建了这个微信公众号“青少年编程竞赛交流”&#xff0c;在这个公众号上分享有关青少年编程方面的知识&#xff0c;带小朋友们参…

js ~取非运算符的妙用,将-1转为0(或假值)

典型的运用场景就是indexOf

CSP 201912-1 报数 python实现

试题 代码 python n int(input())list [0, 0, 0, 0] m 0 i 1while(i < (mn)):if 7 in str(i) or i % 7 0:list[(i3) % 4] 1m 1i 1for j in list:print(j)