边缘程序ER(EdgeRoutine)是阿里云CDN推出的边缘Serverless计算环境。ER目前针对CDN场景,支持在CDN边缘节点执行您自行编写的JavaScript代码。ER代码一经上传,即可完成全球阿里云CDN节点的部署,在全球边缘执行,根据您的代码逻辑个性化处理全球各地的请求。

ER介绍

为什么使用EdgeRoutine?

传统的CDN服务是纯粹的缓存和分发服务,缺乏可以直接提供给您的计算能力。在访问CDN的海量请求中,复杂的计算逻辑必须回服务器源站执行,这增加了您的服务器消耗以及架构的复杂性。ER可提供直接在CDN边缘节点计算处理的能力,将极大提高CDN的可定制化、可编程化,从而大量减少需回源的请求,降低用户的请求延时。同时CDN边缘节点拥有天然地高可用、高伸缩、全球负载均衡的特性,边缘的计算服务可应用于更多的使用场景。阿里云CDN的ER可为您提供边缘节点的计算环境,为您的代码部署提供更多的选择,且您无需关心代码部署的机器硬件配置、部署region、调度和弹性扩容。

工作原理

ER直接运行在阿里云CDN边缘节点上,提供独立的JS运行环境,供您部署JS代码。

原理
  • 无ER的纯CDN请求

    对应链路为:1→8→9→4。客户端请求到CDN网关后将到CDN缓存中查找缓存文件,如果没有缓存,则回到您的源站服务器获取对应文件后缓存在CDN缓存中并返回给客户端;如果有缓存,则直接返回给客户端。

  • 有ER后可以使用的场景如下:
    • ER内JS代码完成对请求的计算和处理,并返回给客户端,对应链路为:1→2→3→4。该流程是典型的FaaS场景,ER相当于您的服务器,直接处理并响应客户端的请求,不依赖您再部署其他服务器。
    • ER发出子请求从其他云服务获取数据后加工,对应链路为:1→2→5→3→4。
    • ER从缓存节点读取或者存储计算后的结果用以复用,对应链路为:1→2→6→3→4。
    • ER可主动Proxy回CDN回源链路,对应链路为:1→2→7→8→9→10→3→4。该流程相当于ER在原CDN请求流中前置了一个计算处理逻辑,您可以在ER内进行相关的计算处理,例如远程异步鉴权等,再继续走原CDN的请求流程查找缓存或回源。

应用场景

由于ER内部有完整的JS运行环境,同时给予您完全的请求控制,HTTP和HTTPS异步自请求的能力,可以使ER能够覆盖较多的应用场景。以下是您可以尝试使用ER开发的功能和场景。
应用场景 可用于...
鉴权 CDN自定义鉴权,异步鉴权。
Originless (无源站) 静态页面。
网络安全
  • 反爬虫。
  • 边缘WAF。
日志
  • 自动生成边缘日志。
  • 记录回源时间。
DevOps
  • AB测试。
  • 设置GitLab、GitHub、Jenkins的webhook。
  • 编写边缘IM机器人,例如slack机器人。
API Gateway
  • 边缘GraphQL。
  • 边缘网关:
    • 限流。
    • API参数验证。
CDN
  • 边缘Cache预热。
  • 边缘内容生成。
  • 边缘请求回多源站:
    • 合并多源站内容。
    • 选择最快的源站响应。
Web或小程序
  • 边缘渲染。
  • 边缘SSR。
  • 页面延时优化、预热。
  • 边缘杂项服务,例如二维码生成。
Beacon 边缘打点数据的捕获与分析。

使用ER

ER第一轮开放内测已经结束,内测期间如果您已经开通ER可继续正常免费使用。阿里云将尽快开放ER的第二轮内测,您可留意阿里云CDN控制台公告。

开通ER后您可以通过CLI工具测试和部署ER代码,开发过程中遇到问题可提交工单反馈。

说明 内测期间ER免费使用,JS代码的限制如下:
  • 代码文件大小<1 MB。
  • 单次请求CPU耗时<50ms。
  • 单次请求的RT<120s。
  • 单个CDN节点的总内存占用<128 MB。

当ER正式商业化时,阿里云将调整计费策略和JS代码的使用限制,请关注ER商业化动态。