可编程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,一经查实,立即删除!

相关文章

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

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

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

红色部分已处理,蓝色部参考处理方式,进行处理即可,暂未处理 文章目录1. 参考项目2. 实现思路3. 关键步骤1. 参考项目 参考:https://github.com/linjinze999/vue-llplatform 2. 实现思路 前端部分: 国际化分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 分钟恢复,这对我们的定位能力提出了更高的要求。EMonitor 是一款集成 Tracing 和 Metrics,服务于饿了么所有技术部门的一站式监控系统,其覆盖了 前端监控、…

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

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

终极搜索 - Find 方法指南

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

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

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

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

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

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

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

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

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

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

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

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

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

用 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

【数据湖存储】数据湖的终极奥秘,无招胜有招

作为海量数据存储与分析的重要承载方式的数据湖,从2011年概念诞生至今,已经发展了9个年头。而数据湖是什么?又能为数字化经济带来什么?《阿里云数据湖存储解决方案蓝皮书》将为您揭开数据湖的终极奥秘——无招胜有招 关注“阿里云…

科天云会议产品升级,打造企业数字化转型办公协同新基建

2020年11月24日,科天云会议宣布升级科天章鱼云并发布科天aPaas办公协作中台。依托科天aPaas办公协作中台核心技术架构,科天章鱼云10大音视频通讯核心能力,科天云会议将以便捷轻量的SaaSPaaS模式,为大中型企业提供云到端、全场景的…

社区首款 OAM 可视化平台发布!

作者 | 徐运元,杭州谐云科技合伙人及资深架构师,云计算行业和 Kubernetes 生态资深从业者 导读:什么是 OAM?2019 年 10 月 17 日,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟(花名:小…

linux:根据关键字或日期查找日志

文章目录脚本11. 脚本描述2. 要点3. 格式4. 脚本原型5. shell脚本6. 效果图脚本22.1. 脚本描述2.2. 要点2.3. 格式2.4. 脚本原型2.5. shell脚本2.6. 效果图脚本1 1. 脚本描述 查询指定日志文件中是否包含指定的关键词的日志信息 2. 要点 包含则输出包含的关建行所在日志信息…

Go 语言成为最受欢迎的语言

<关注阿里巴巴云原生公众号&#xff0c;回复 Go 即可下载清晰知识图谱> 对 Go 语言感兴趣但又不知从何学起的同学&#xff0c;可以参考一下 Go 语言系列文章&#xff1a; 为什么你要选择 Go&#xff1f;Go 面向失败编程带着服务器编程金刚经走进 2020 年敢问路在何方&a…

如何在DevSecOps道路上快速、安全地抵达终点

作者 | 吴翔责编 | 晋兆雨出品 | CSDN云计算头图 | 付费下载于视觉中国近年来&#xff0c;移动互联网的迅猛发展给人们带去不少便利&#xff0c;在软件安全领域内&#xff0c;一种名为敏捷开发的模式正悄然流行&#xff0c;而可打破业务隔离、提高效率的DevOps&#xff08;开发…

构建更动态更灵活的分布式计算生态

0. 前言 作为阿里巴巴核心大数据底座&#xff0c;伏羲调度和分布式执行系统&#xff0c;支撑着阿里集团内部以及阿里云上大数据平台绝大部分的大数据计算需求&#xff0c;在其上运行的MaxCompute(ODPS) 以及PAI等多种计算引擎&#xff0c;每天为用户进行海量的数据运算。 在&q…