边缘程序(EdgeRoutine,简称ER)是一个运行在阿里云全球边缘节点上的JavaScript代码运行环境,支持ES6语法和标准的Web Service Worker API。您可以将自行开发的JavaScript代码发布至全球边缘程序运行,在全球边缘节点上就近地处理客户端的请求。

边缘程序

开通说明

边缘程序目前是Beta功能,仅面向部分客户开放。如果您的CDN/全站加速日常带宽峰值大于500 Mbps,可以提交工单申请开通。给您造成不便敬请谅解,面向所有客户开放的时间点敬请留意官网动态

边缘程序的优势

  • 全球部署,就近调度,超低延迟:边缘程序与常见的函数计算、弹性计算等云计算服务不同的是,您无需再局限地将程序部署在指定的单个地域(Region)上。边缘程序运行在遍布全球的边缘节点上,客户端的请求将被自动调度至距离最近的边缘节点上,触发边缘程序的代码执行,对请求进行处理并返回结果给客户端。边缘程序可以显著降低客户端请求的响应时间,让您获得低延迟的计算体验。
  • 自动扩容,按量付费:阿里云在全球拥有超过2800+个边缘节点,巨大的边缘节点网络天然具备弹性扩容的特点。当一个区域的客户端请求数量突增,这些请求将被由近及远地调度至有充足计算资源的边缘节点处理,扩容和调度自动化完成。边缘程序按程序的调用次数按量计费,没有请求调用时不会产生费用。
  • Serverless模式,简单易用:使用边缘程序时,您也无需关心底层服务器的CPU、内存、网络、操作系统等基础设施,您可以专注业务代码的开发,只需将代码通过控制台或OpenAPI上传即可完成应用部署。Serverless的开发模式可以有效地降低您的开发运维成本。

工作原理

原理新
  • 无ER的纯CDN/全站加速请求:1.客户端发起请求到边缘节点网关→2.边缘节点查找缓存,命中缓存则响应给客户端→3.缓存未命中则回源。
  • 有ER后的CDN/全站加速请求:1.客户端发起请求到边缘节点网关→4.请求被边缘程序接管并执行您的JS代码→通过fetch请求访问缓存并回源(箭头5或者箭头3)或访问其他公网服务(箭头6)。
    说明 如上图所示,边缘程序ER的执行位置在网关后,因此您在控制台上配置的CDN/全站加速域名配置(例如HTTPS配置、访问控制、性能优化、缓存配置等)均会继续生效。

基本概念

  • 程序:边缘程序(EdgeRoutine,简称ER)是阿里云在边缘节点提供的JavaScript代码运行环境,可以执行您上传的JavaScript代码。使用ER产品时,您需要先创建程序(Routine),一个程序由两个部分组成:配置(包含程序的名称、描述、可用的CPU内存规格、允许访问该程序的域名白名单等)和JS代码(即您上传的JavaScript代码脚本)。程序
  • 版本:程序(Routine)支持版本管理。您开发程序的过程中,JS代码必定是不断修改更新的,当某一个阶段的代码修改和测试完成后,您可以将该时刻的代码快照生成一个代码版本。当您发布程序时,您需要选择其中一个代码版本进行发布。系统为您提供版本回溯和管理历史代码能力。每个版本匹配一个版本号,版本号由系统自动生成。版本
  • 环境:边缘程序提供测试环境、生产环境、灰度环境满足您开发测试和部署的不同需求:环境
    • 测试环境:测试环境是一个供您测试代码的独立边缘节点,测试环境模拟生产环境但与生产环境隔离,您在测试环境修改程序的配置或代码不会影响生产环境。测试环境需要根据页面提供的测试环境IP配置Host后才可访问。
    • 生产环境:生产环境也称线上环境,由遍布全球的大量边缘节点组成。当您在测试环境完成代码测试后,即可发布至生产环境。(上图仅为示例说明,边缘程序将根据您的请求规模自动增减分配的节点,具体节点的区域分布以实际为准)。
    • 灰度环境:将代码或配置的变更直接发布至所有的线上节点(生产环境)是有一定的风险的,如果您的代码或配置中存在失误,可能将影响您的所有用户。如果您的业务规模较大、对发布的风险控制敏感,可使用灰度环境逐步地扩大发布范围。灰度环境概念较为复杂,建议您按需学习后使用。更多信息,请参见灰度环境(选配)
  • 域名:您创建程序并发布代码后,需要用域名做为程序的入口供客户端请求访问。目前边缘程序只支持接入阿里云CDN和全站加速的加速域名做为程序入口,您可以在CDN/全站加速域名的配置中关联边缘程序。域名
  • 边缘节点:边缘是相对中心化的部署方式而言的,边缘节点即指CDN节点、全站加速节点,都是指客户端请求访问的最近节点。

使用限制

功能 限制 说明
CPU时间 5ms、50ms、100ms ER单次执行分配的CPU时间片(等待I/O不算作CPU时间),提供了5ms、50ms、100ms三种规格供您选择。更多信息,请参见计费说明
内存 128 MB 单个域名在单台机器上的内存大小,同域名的所有请求共享该内容。如:某台物理机上的JavaScript内存沙盒同时使用不能超过128 MB。
实时间(RT) 120秒 ER单次执行的响应时间不能超过120秒(等待I/O也算作RT时间)。
等待时间 10秒 网关等待ER的时间,如果ER在10秒内仍不返回任何数据,则网关会主动断开连接,向客户端返回504状态码。
代码包大小 4 MB 每个程序的JavaScript代码文件大小上限。
子请求数量 4个 ER单次执行允许fetch的请求数量。
开发语言 JavaScript(ES6语法) 目前仅支持JS,您需要有JavaScript编程能力。
程序数量 50个 每个阿里云账号最多创建50个程序。
版本数量 10个 每个程序最多保存10个正式版本。