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是支持接入域可编程和回源域可编程。

在接入域可编程领域,第一个是鉴权场景,这个场景在点播、直播中的防盗链需求中十分普遍,基于请求参数、基于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支持四种数据类型,数字、布尔、字符串和字典。

二、变量

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

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

三、运算符

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

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

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

四、控制语句

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

五、函数

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

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

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

实操ABC

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

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

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

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

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

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

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

点击了解EdgeScript文档

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

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

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

  1. 《跨境电商 —— 阿里巴巴速卖通实操全攻略》一一1.1 账户的注册流程

    本节书摘来自异步社区出版社<跨境电商 -- 阿里巴巴速卖通实操全攻略>一书中的第1章,第1.1节,作者: 冯晓宁,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  2. 《跨境电商 —— 阿里巴巴速卖通实操全攻略》一一1.2 账户的认证流程

    本节书摘来自异步社区出版社<跨境电商 -- 阿里巴巴速卖通实操全攻略>一书中的第1章,第1.2节,作者: 冯晓宁,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  3. 《跨境电商 —— 阿里巴巴速卖通实操全攻略》一一2.4 淘代销

    本节书摘来自异步社区出版社<跨境电商 -- 阿里巴巴速卖通实操全攻略>一书中的第2章,第2.4节,作者: 冯晓宁,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  4. NVIDIA可编程推理加速器TensorRT学习笔记(二)——实操

    NVIDIA可编程推理加速器TensorRT学习笔记(二)--实操 ​ TensorRT 是 NVIDIA 自家的高性能推理库,其 Getting Started 列出了各资料入口,如下: 本文基于博 ...

  5. 超硬核的 OCR 开发利器推荐:从场景案例到实操演示,快速掌握OCR模型训练

    现如今OCR能力已经在众多场景中落地应用: 像是常见的身份证.驾驶证.行驶证等卡证识别: 又如出租车发票.增值税发票.火车票等财务票据识别: 再如医疗费用结算单.病案首页.保险单等医疗票据识别: -- ...

  6. TensorFlow Probability 概率编程入门级实操教程

    雷锋网 AI 科技评论按:TensorFlow Probability(TFP)是一个基于 TensorFlow 的 Python 库,能够更容易地结合概率模型和深度学习.数据科学家.统计学以及机器学 ...

  7. c语言编程学多久,丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会...

    丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会 首页 > 软件 > 丰城c语言编程学习 作者:镀金池   发布时间:2018-04-09 16:40 在之后 ...

  8. GitHub 热点速览 Vol.14:周获 2k+ Vim³ 掀起三维编程风

    作者:HelloGitHub-小鱼干 摘要:寓教于乐,应该是上周 Trending 的主题了,无论是被多人转发推荐的三维 Vim 项目 Vim³ 或者是流体运动的 WebGL Fluid Simula ...

  9. python语言通俗理解_慢步学习,python语言编程,来扯扯语言的学习理解

    最近慢步工作比较忙,有那么一丢丢挫伤了学习的积极性.积极性受挫的另一个原因是,慢步对自己给读者提供的内容有些困惑,"我能提供什么有价值的内容?" 不断重复书籍的知识点,好像并不能生 ...

最新文章

  1. python中两个矩阵之间的点乘_Python基础--数据分析库--Numpy
  2. python绘制立体玫瑰花-Python 玫瑰花绘制
  3. 在学习django的时候
  4. python的误差条形图的解释_如何使用python绘制带有误差条的条形图?
  5. 在鹅厂当程序媛是什么体验?
  6. 如何有效的压缩虚拟磁盘
  7. 日志log4cxx 封装、实例讲解、配置文件log4cxx.properties
  8. android 左滑按钮,android开发类似微信列表向左滑动按钮操作
  9. type(img).__module__ == np.__name__
  10. yolov5模型框架详解
  11. java文件的打包和解包,Java包装类:什么是包装类对象,什么是打包和解包,当编译遇到自动打包和解包时会发生什么?...
  12. ESXi虚拟机装系统,报错 /vmlinuz has invalid signature 解决方法
  13. 无线鼠标服务器,remote mouse
  14. 找回 Windows 11 丢失的扫雷游戏【新春快乐】
  15. Diy Win7 OEMlogo
  16. 每天一kernel:正太概率图
  17. 什么是混合APP开发
  18. 计算机投针实验程序,蒲丰投针问题
  19. QT实现MP3播放器的歌词同步显示(卡拉OK功能)
  20. 带农历日历的DatePicker控件 - Xamarin控件开发小记

热门文章

  1. ubuntu 虚拟机 串口 socket_上篇 | 虚拟机Ubuntu向开发板AMR传送文件
  2. datalist可以放div吗?_混凝土中能放竹子吗?可以代替钢筋吗?为何打地坪混凝土放竹子?...
  3. pdf无法启动因计算机丢失,解决打开 PDF 文件时出现的文档损坏错误
  4. ios jsonkit 报错_iOS开源项目:JSONKit
  5. 戴尔电脑怎么安装一级计算机,手把手教你戴尔笔记本电脑重装系统教程
  6. 施一公直播首秀来了!解答读博困惑,鼓励学生勇敢申请西湖大学
  7. 人工智能时代来临,还需要那么多人吗?
  8. 颜宁的学生都已经副院长了!还发表了学校首篇Nature
  9. 数学大家闵嗣鹤:生死哥德巴赫猜想
  10. jta mysql_JTA 使用 MySQL 分布式事务