边缘函数计算是运行在边缘端的程序托管服务。它继承了阿里云函数计算事件驱动的编程模型,同时作为Serverless计算框架,让您专注于业务逻辑开发,无需为程序启动、消息流转、日志查询、进程保活等基础工作耗费精力。

目前,标准版(LE Standard)Link IoT Edge不支持使用Python版本函数计算。

边缘函数计算与阿里云函数计算的关系图如下所示:
边缘函数计算

边缘函数计算的优势如下:

  • 灵活的编程模型:边缘函数计算继承阿里云函数计算服务提供的按需运行模式功能,同时也提供持续运行模式,将代码部署后选择持续运行,可以有效地支撑设备驱动和传统的服务端常驻程序的开发。
  • 高实时性:函数运行在边缘端网关,可以更靠近信息源进行数据的收集和分析,提升响应速度。
  • 离线运行:设备数据可传输到本地网络处理,不必连接到云端,从而在断网情况下设备依然可以正常工作。

组成部分

边缘函数计算主要由如下几部分组成:

  • 云端代码托管:您可随时在云端对代码进行增、删、改、查,并热部署到网关并运行。
  • 边缘端程序管理:负责管理部署到网关的函数,提供程序运行、服务保活、日志查询、性能监控、资源监控和定时触发等。
  • 开发API:边缘函数计算提供了设备驱动开发和应用开发的API,降低程序开发成本。

触发事件源

在触发事件时,Link IoT Edge会调用函数代码中的handler函数进行处理,而按需运行模式的函数,只有当首次事件触发时才会被加载运行。能够触发函数计算的事件源如下:

  • 定时触发:在物联网平台控制台将函数设置为定时运行,通过配置函数被触发的时间点(例如每分钟触发一次)触发函数计算。
  • 消息触发:通过消息路由流转到函数计算的多种来源(例如设备、函数计算、流数据分析等消息源)的消息,触发函数计算。
  • 函数调用者:边缘网关提供调用本地函数计算的API,从外部程序中直接调用本地函数计算或在函数计算代码中调用其它的函数时,触发函数计算。

函数配置

在物联网平台控制台,为边缘实例分配函数计算时,需要您对运行模式内存限制超时限制定时运行这些参数做配置,您也可以选择配置环境变量

参数 描述
运行模式 分为按需运行和持续运行两种模式。
  • 按需运行:是函数计算原生的运行模式,函数部署到边缘端后不会立即运行,只有当事件触发时函数才会被加载运行,处于运行状态的函数一段时间内没有新的事件触发会停止运行。当您的程序是基于事件触发运行,且事件触发频率低于20分钟一次,建议选择按需运行,可以有效减少对边缘网关的CPU、内存等资源的压力。如果事件触发频率较高,按需运行的函数也会保持运行,以保证事件的响应速度。
  • 持续运行:是边缘端特有的运行模式,函数部署到边缘端后会立即加载运行,用来满足传统的服务端程序常驻运行的需要。当您的程序是服务端程序,需要监听端口独立响应请求(如HTTP Server),请选择持续运行。Link IoT Edge会负责函数的保活,当函数异常退出时,函数将会被重新运行。
内存限制 设置函数的内存使用上限,当函数内存使用超过限制时会被重启。避免因函数内存泄漏而导致系统不稳定。如果内存限制值过小,可能会导致函数运行失败。默认为512 MB,一般情况使用默认值即可。
超时限制 当事件触发时,会调用代码中handler接口处理事件。正常情况下事件处理完成会发送应答消息返回处理结果,同时表明事件处理结束。如果函数超过此处的设定事件仍未返回结果,则认为函数运行异常,此时函数会被重启。
定时运行 配置函数定时触发的时间点和频率,格式为Cron表达式。例如: * * * * *表示每分钟触发一次函数,30 * * * *表示每30分钟触发一次函数。
环境变量 自定义配置的环境变量,在函数计算代码运行时可以直接读取到。单击新增环境变量,通过设置变量名称、变量值增加环境变量。最多可配置10条环境变量。

该功能是为了做到代码和配置的分离,增强代码的可移植能力。例如,函数计算代码需要请求网络上其它主机的服务,在不同环境下服务器的IP地址和端口通常是不同的。通过环境变量将IP和端口信息作为配置参数传入,不同环境下的网关就可以共用同一份函数计算代码。

容器配置

边缘实例中部署的每个函数(包括驱动、运行代码)都是在独立的容器中运行,因此您可以对函数或驱动进行容器配置,帮助您更好的管理控制边缘实例中的资源。
说明 仅在使用专业版搭建的边缘实例中(即边缘实例中的网关使用专业版Link IoT Edge),分配函数计算或驱动时支持进行容器配置。
参数 描述
网络端口映射 函数的网络环境和宿主机的环境是完全隔离的。若有监听端口的函数,则需要通过网络端口映射,将容器端口映射到宿主机的一个端口上,实现不同主机上的客户端程序,能够访问函数提供的服务。最多支持10条网络端口映射。

例如有fc-http-server函数,作为服务端,通过监听Socket的80端口对外界提供服务时,其它主机上的客户端程序访问宿主机的80端口,是无法直接访问运行在容器内的fc-http-server提供的服务。需要将容器端口映射到宿主机的一个端口上,如映射8080端口到容器内的80端口,这样其它主机上的客户端程序就可以通过宿主机的IP地址:8080,访问到容器内部的fc-http-server

是否启动特权模式

容器内的root用户实际上只是宿主机的一个普通用户。若在容器内部做修改系统时间、使用mount命令等需要root权限的操作,则需要赋予容器privileged特权。

说明 特权模式下,容器内部拥有宿主机的root权限,而且宿主机的所有设备会默认映射到容器内部,即无需配置设备映射
设备映射 设备管理系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的设备(例如串口)时,需要将设备映射到运行函数的容器内部。最多可添加10个设备映射。
卷映射 文件系统和宿主机的环境是完全隔离的。当一个函数需要访问宿主机的文件时,需要将文件映射到运行函数的容器内部。最多可添加10个卷映射。