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等。