可编程CDN – EdgeScript应用场景、语言速览和实操演示

5月8日下午15:00,CDN云课堂的第二期,阿里云CDN团队技术专家拓山为大家带来了《可编程CDN – EdgeScript实践》主题技术分享。本次分享通过对阿里云CDN成长到当前体量的挑战以及对应的解法,阐述EdgeScript为何而生,同时也快速对ES语言进行速览,并通过官网EdgeScript控制台去进行实操,帮助用户十分钟上手EdgeScript。

面对海量用户之上,阿里云CDN的挑战是什么?

阿里云CDN已经在全球拥有2800个以上的节点,其中国内2300个以上的节点,覆盖34个省级地区,海外500以上的节点覆盖了70多个国家和地区,具有130Tbps带宽储备的能力。那么在如此大体量的情况下,阿里云CDN之上承接着非常多的用户,包括各种场景,下载、直播、点播、动态加速,每个客户都有各自的需求和痛点。

当CDN只具备标准化功能,也就是开箱即用的情况下,希望构建自己业务的客户就会遇到一些痛点,站在使用者的角度来看,常见的问题可能包括:开发同学需要具备按需定义CDN业务流的能力,完成老板交代的业务需求;业务专家非常了解自己的业务需求,希望能撸起袖子直接开干,缺少易学易用的编程平台;运维同学认为稳定性重于泰山,需要保障线上业务永不宕机,要求CDN平台能够做到模拟环境和生产环境隔离,实现功能的快上快下。

所以在标准功能黑盒化基础之上,CDN平台还需要做什么呢?就是可编程化。以此来应对用户各种各样的非标功能,帮助用户自定义实现个性化业务系统。

EdgeScript的诞生——快速构建基于CDN的个性化业务体系

为了更好地满足用户需求,阿里云推出EdgeScript,定位于CDN可编程配置领域内的专用语言。通过EdgeScript,阿里云CDN用户可以快速构建基于CDN的个性化的业务体系,实现敏捷的业务迭代,持续赢得交付收益。

从去年9月,EdgeScript开始公测,在公测期间在阿里巴巴集团内部以及外部用户侧,已经得到广泛的应用。拓山认为EdgeScript为客户带来的最大价值是个性化与敏捷化,能够广泛应用于各种业务流的定制开发,同时将原本2-4周的交付周期缩短至1周内。

EdgeScript典型的应用场景

CDN是连接客户与用户的通道,用户那么在访问客户源站之前会通过CDN去做加速分发,那么其实,CDN会存在两端,一端是接入域,一端是回源域。EdgeScript是支持接入域可编程和回源域可编程。

屏幕快照 2020-05-07 下午4.53.24.png

在接入域可编程领域,第一个是鉴权场景,这个场景在点播、直播中的防盗链需求中十分普遍,基于请求参数、基于cookie或其他复杂算法有各类鉴权需求,EdgeScript可以快速实现鉴权需求,从而完成对资源的保护。

第二个是远程鉴权,CDN其实仅仅是作为分布式存储、内部分发,对端上的处理还是比较缺失的,比如端上用户的播放、留存数据,这种一般会在客户侧自建鉴权中心对这些数据进行处理。通过EdgeScript提供远程APP访问能力,可以实现与客户侧鉴权中心的交互,从而从基本鉴权上,加持对更复杂盗链场景的识别。第三个是请求和响应控制,对于发送到CDN这种请求,具有完全的控制能力。第四个是改写&重定向,比较常见的应用在多语言版本的网站之上,比如说中文的网站可能会302到1个location,英文或者德文的网站,可能会302到不同的location。

第五个是封禁拦截。比如可能会针对某些地区、某些特殊的逻辑或者特殊的客户端IP去进行封禁拦截,都可以通过EdgeScript来做到可编程化,定制化。同时,还可以针对防爬策略的实现,去防止我们的那个爬虫爬资源。第六个是A/B Testing。通常在外部系统中,客户源站上一个新功能时,可能会有A/B Testing的需求,很可能需要CDN侧做支持。通过CDN携带不同的回源请求头或不同的URL上,去区分触发源站的不同功能,从而来实现这个全链路的A/B Testing。

第七个是缓存策略。在用户自定义业务场景下,在标准的功能的缓存贴条时长或者缓存策略不能够满足客户需求时,可以通过EdgeScript去完成自身业务定制化。第八个是限速控制,比如需要对免费客户和付费客户进行限速的区分。第九个是M3u8改写,通常出现在直播类、视频类的业务需求之中。第十个是动态日志打标,对于我们的CDN日志做一些打标处理。

在回源域可编程领域,第一个是回源鉴权场景,第二个会支持回源策略和容灾引流的场景,用户可以通过EdgeScript来完成多源之间的选择,比如当A、B、C三个源站,当A负载比较高,可以根据一些策略把回源流量切换到B或者C。第三个是回源请求和响应控制。

拓山表示:以上所有的落地场景,在过去公测期间得到了落地应用。我们也计划逐步将以上功能开放到公共云平台上,让所有用户都可以享受EdgeScript可编程所覆盖的这些场景的敏捷交付,目前正在逐步开放能力的过程中。

EdgeScript与EdgeRoutine的区别

在上周,阿里云CDN云课堂第一期,也对刚刚公测上线的EdgeRoutine进行了详细的讲解,点击观看视频回放,那么这两款产品的区别是什么呢?

这两款产品,其实都是对CDN这样一个分布式缓存系统,或者说用户和源站这样一个南北流量的数据平面的可编程,可以从业务流和数据流去进行划分。EdgeScript会覆盖完整的业务流可编程,比如说各类鉴权、各类封禁、各种用户自定义的改写&重定向、请求控制和A/B Testing。那么数据流的场景当中,ES只是覆盖一小部分,比如像M3u8改写,但更大部分EdgeRoutine来去覆盖。比如Combo、SSR、ESI等。

EdgeScript的语言速览

那么整个EdgeScript在设计的过程中有一个原则,就是维持着一个小语法和大函数库的语言能力设计。

在小语法的话,EdgeScript对新的语法元素的吸纳上,保持得非常的程度的克制,很大程度上降低了用户学习EdgeScript的成本。同时,EdgeScript也提供非常非常庞大的函数库,所有函数库在夯实了稳定性和安全性的基础之后,会不断输出到公共云之上,提供丰富的CDN领域操纵能力给用户,对于使用受众,EdgeScript不要求编程背景,希望基于阿里云CDN,任何人都可以构建定制化业务系统。

一、数据类型

EdgeScript支持四种数据类型,数字、布尔、字符串和字典。

屏幕快照 2020-05-07 下午5.59.49.png

二、变量

在变量这一块,EdgeScript支持内置变量的和用户自定义变量。关于内置变量,详情可以参考官网文档:https://help.aliyun.com/document_detail/126568.html

同时,EdgeScript允许用户自定义变量,这也是可编程非常重要的基础能力,详情可以参考下图:

图片 1.png

三、运算符

EdgeScript支持少量的原生运算符,包括赋值运算符:operator = 、负号运算符:operator – 、函数调用:operator ()

那么这么少的运算符,那么多数据类型,怎么去操作呢?实际上对各数据类型的操作,是不再通过运算符去支持的,均由对应内置函数支持。提供不同数据类型的函数操作API,如:数字运算、字符串操作、布尔比较、字典操作。具体示例如下图:

图片 2.png

EdgeScript希望提供给用户一个简单的编程界面,在仅支持少量原生运算符之外,大部分运算符都通过API这个一致性的编程界面提供出去。这样做的好处是:一方面运算符复杂度均被隐藏,包括优先级、结合性、数据类型语义等;另一方面DSL代码转换过程中仍会使用原生runtime operator,进而继续保持高性能。

四、控制语句

支持If、if-else、多层嵌套;return;foreach callback,具体见下面if-else的示例:

图片 13png.png

五、函数

在函数部分,EdgeScript支持用户定义函数和内置函数库。用户自定义函数可以见如下示例:

图片 4.png

整个函数调用的话,那么无论是内置函数还是自定义函数,均通过括号操作符进行函数调用。

下图是在官网上的函数库中的一部分,包括条件判断、数字类型、字符串类型、字典类型、请求处理、限速、缓存、时间、密码算法、JSON相关等等,其实在后续,会把内部使用的API、函数不断开放给用户。

屏幕快照 2020-05-07 下午6.27.50.png

实操ABC

接下来拓山将进行EdgeScript的实操ABC演示。EdgeScript有两个编程平台,包括去年公测时开放出来的编程工具ES CLI和ES WebIDE。

ES CLI可以针对模拟环境和生产环境,去添加规则、查询规则、删除规则,以及把模拟环境publish到生产,或者Rollback回滚。

同时也提供ES WebIDE,在阿里云CDN控制台上对全网用户开放,配置详情如下图:

图片 6.png

现在,默认每个域名可以配置一条EdgeScript规则。后续当一个域名下可能会存在多条EdgeScript规则时,可以通过优先级来定义。同时可以根据执行位置来规定在其他配置之前执行还是其他配置之后执行。出于稳定性的考量,关于规则的编辑、增删改查会在模拟环境中去进行,当模拟环境中操作验证没有问题后,再发布到生产环境中。

在分享的最后一部分,拓山进行了大量实操演示,包括:特定文件类型的封禁、识别低版本IE、限速、基于请求参数的改写、鉴权、调试能力:_es_dbg等等。

点击观点完整直播回放: https://yq.aliyun.com/live/2740

屏幕快照 2020-05-07 下午6.42.13.png

屏幕快照 2020-05-07 下午6.42.27.png

CDN作为云服务的一个基本件,正在从标准化服务向可编程服务进化,可编程化CDN赋能用户快速构建云上个性化业务体系,帮助用户快速实现配置变更和版本迭代,更及时响应业务需求,期待更多用户能使用EdgeScript,与我们一起进行可编程CDN实践。

点击了解EdgeScript文档

点击会看视频学习ES相关实操

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app单个页面的生命周期函数

除了整体应用的生命周期&#xff0c;每一个页面都有自己的生命周期 我们先来看看代码 <script>export default {data() {return {title: Hello}},onLoad(optins) {console.log(页面加载完成,optins);},onShow() {console.log(页面显示);},onReady() {console.log("…

Serverless 工作流给人工智能带来了哪些变化?

4月&#xff0c;阿里云 Serverless 工作流正式商业化&#xff0c;这是一款用于协调多个分布式任务执行的全托管 Serverless 云服务。产品致力于简化开发和运行业务流程所需要的任务协调、状态管理以及错误处理等繁琐工作&#xff0c;让用户聚焦业务逻辑开发。 精准打造云上自动…

深圳网络安全大会即将召开发布五大亮点海报

11月28日至29日&#xff0c;“湾区创见2020网络安全大会”将在深圳国际会展中心拉开序幕。这是华南地区举办的首个网络安全大会&#xff0c;会议齐聚了安全领域的诸多大咖&#xff0c;五大亮点海报正式发布。 本次大会以“新基建 新安全”为主题&#xff0c;聚焦5G、人工智能、…

vue PC端国际化一站式解决方案

红色部分已处理&#xff0c;蓝色部参考处理方式&#xff0c;进行处理即可&#xff0c;暂未处理 文章目录1. 参考项目2. 实现思路3. 关键步骤1. 参考项目 参考&#xff1a;https://github.com/linjinze999/vue-llplatform 2. 实现思路 前端部分&#xff1a; 国际化分2部分进行…

将活动工作表生成 PDF,并通过电子邮件发送

目录 1. 通过浏览文件夹选择 PDF 保存位置并发送2. 固定的PDF保存位置,读取单元格中的邮件内容并发送1. 通过浏览文件夹选择 PDF 保存位置并发送 Sub Saveaspdfandsend()Dim xSht As WorksheetDim xFileDlg As FileDialogDim xFolder As StringDim xYesorNo As I

勇攀监控高峰-EMonitor之根因分析 背景

背景 阿里集团针对故障处理提出了“1/5/10”的目标-- 1 分钟发现、5 分钟定位、10 分钟恢复&#xff0c;这对我们的定位能力提出了更高的要求。EMonitor 是一款集成 Tracing 和 Metrics&#xff0c;服务于饿了么所有技术部门的一站式监控系统&#xff0c;其覆盖了 前端监控、…

还在做Excel分析师?HR:对不起,我们还要求会Python!

一份好的数据报告可以帮助企业做出正确的商业决策&#xff0c;可以成功获取业务资源&#xff0c;甚至可以给企业带来巨额投资。数据分析有着很多种有效用途&#xff0c;每个行业都在充分利用数据分析。我们常见的数据分析妙用&#xff1a;对消费者行为进行分析和预测确定产品优…

Java代码精简之道

前言 古语有云&#xff1a; 道为术之灵&#xff0c;术为道之体&#xff1b;以道统术&#xff0c;以术得道。 其中&#xff1a;“道”指“规律、道理、理论”&#xff0c;“术”指“方法、技巧、技术”。意思是&#xff1a;“道”是“术”的灵魂&#xff0c;“术”是“道”的肉…

libreoffice error while loading shared libraries: libSM.so.6: cannot open shared object

网上查了一下 需要安装一些别的软件就可以 yum install libreoffice-headless 用这个命令安装好这些依赖即可 yum install libreoffice-headless

终极搜索 - Find 方法指南

目录 1. 概述2. 为什么要使用 Find 方法?3. Find 方法工作原理4. 如何使用5. 将“查找”对话框重置为其默认设置6. 实例:在一张表中查找特定文本并将数据从另一张表复制到单元格1. 概述 当我们想要在 Range 或 Sheet 中搜索内容时,一般会选择 For...Next 循环。好吧,For...…

CDN百科 | 假如没有CDN,网络世界会变成什么样?

很多人都知道CDN是内容分发加速&#xff0c;所谓内容分发&#xff0c;就是将本来位于源站的内容分发到全国各地的节点&#xff0c;方便用户去就近访问所需的内容。随着移动互联网、云计算等一代代技术变革&#xff0c;CDN已经成为了缓解互联网网络拥塞、提升应用响应速率、改善…

你可能也会掉进这个简单的 String 的坑

作者 | 程序猿石头责编 | 晋兆雨头图 | 付费下载于视觉中国关于作者&#xff1a;程序猿石头(ID: tangleithu)&#xff0c;现任阿里巴巴技术专家&#xff0c;清华学渣&#xff0c;前大疆后端 Leader。背景作者的同学是某大公司高级开发工程师&#xff0c;某日收到不少错误告警信…

FileZilla客户端连接腾讯云FTP服务器时出现“227 Entering Passive Mode”

FTP的主动模式(PORT Mode)及被动模式(Passive Mode) FTP的特殊性&#xff1a; 大多数的TCP服务是使用单个的连接&#xff0c;一般是客户向服务器的一个周知端口发起连接&#xff0c;然后使用这个连接进行通讯。但是&#xff0c;FTP协议却有所不同&#xff0c;它使用双向的多个连…

开源 CI/CD 构建框架 TekTon 的深入剖析

简介 Tekton 是一个功能强大且灵活的Kubernetes 原生开源框架&#xff0c;用于创建持续集成和交付&#xff08;CI/CD&#xff09;系统。 关于Tekton&#xff0c; 网上可以搜到很多很多介绍文档&#xff0c;本文主要阐述我对Tekton的实现原理和背后的技术逻辑的一点理解。tekto…

Excel VBA 巧用自定义函数进行数组去重

目录 一. Dictionary方法删除重复项二. Collection 方法删除重复项三. 使用这两个函数1. RemoveDupesDict 函数调用示例:2. RemoveDupesColl函数调用示例:本贴将展示两种从数组中删除重复项的方法。 第一种方法使用字典,第二种方法使用集合。每种方法都有优点和缺点,但都能…

分享实录 | 企业CICD规模化落地浅析

【以下为分享实录&#xff0c;有删节】 今天分享的题目是《企业CICD规模化落地》&#xff0c;因此我们不会侧重讲解CICD是什么以及怎样做CICD&#xff0c;而是你已经知道怎样“玩转”CICD了&#xff0c;要如何在一个比较大的企业中规模化地落地。 研发流程与持续交付简析 持…

mysq5.7 和mysql8不区分大小写和不开启sql严格模式

mysq5.7 [mysqld] #不区分大小写 lower_case_table_names 1 #不开启sql严格模式 sql_mode "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"mysq8 [mysqld] #不区分大小写 lower_case_table_names 1 #不开启sql严格模式 sql_mode STRICT_TRANS_TABLES,NO_ENGINE_…

大湾区网络安全大会开幕在即,五个看点揭秘

11月28日至29日&#xff0c;首个由国家部委指导、地方政府主办的网络安全大会“湾区创见2020网络安全大会”将在深圳国际会展中心拉开序幕。 本届大会由公安部、国家密码管理局指导&#xff0c;深圳市人民政府主办&#xff0c;以“新基建 新安全”为主题&#xff0c;聚焦5G、人…

重磅发布:阿里云云安全中心一键防勒索功能上线!

5月6日&#xff0c;阿里云云安全中心重磅发布一键防勒索功能&#xff0c;致力于帮助客户实现对勒索病毒的一键式纵深防御。 勒索病毒对企业来说是危害极大的安全风险之一&#xff0c;一旦核心数据或文件被加密&#xff0c;除了缴纳赎金&#xff0c;基本上无法解密。两年前爆发…

用 Excel VBA 提取小数部分-自定义函数

利用VBA 提取小数部分 Function GetDec(cell As Range, Optional ConvertToWhole As Boolean) As Variant 示例:2.154a)如果忽略或设置为FALSE,则函数返回小数,类似于“0.154”的形式b)如果设置为TRUE,则函数返回一个整数,如“154”Dim i%If