AWS IoT Greengrass
在边缘设备上运行 Lambda 函数和 ML 推理,即使与云的连接间断也能继续本地处理的边缘计算运行时
概述
AWS IoT Greengrass 是一个开源边缘运行时,用于在边缘设备上本地执行云功能。支持 Lambda 函数本地执行、机器学习模型推理、设备间本地消息传递、OTA (Over-The-Air) 远程部署组件。Greengrass V2 引入了组件模型,可将功能作为独立模块进行开发、分发和更新。
为何在边缘处理 - 延迟、带宽、可用性的三重课题
IoT 系统中,将所有数据发送到云端处理的集中式架构并非总是最优。制造线异常检测中数毫秒的判断延迟可能导致不良品流出,监控摄像头视频全部传输到云端会产生巨额带宽成本,网络故障时设备完全停止运作。Greengrass 为解决这三重课题,以将云处理能力带到边缘的设计理念构建。在 Greengrass Core 设备 (网关) 上运行 Lambda 函数和自定义组件,可在本地完成判断的处理在边缘即时执行。仅将聚合、摘要后的数据发送到云端以节省带宽,与云的连接断开时本地处理继续运行。将 SageMaker 训练的 ML 模型部署到 Greengrass,可在边缘实时执行摄像头视频的物体检测或振动数据的异常检测,仅将推理结果报告到云端,实现高效架构。
V2 的组件模型与部署机制
Greengrass V2 引入的组件模型从根本上改变了边缘应用的开发和运维。V1 中 Lambda 函数和连接器紧耦合部署,V2 中所有功能定义为独立组件。各组件通过配方 (YAML/JSON) 声明生命周期、依赖关系和配置参数,与制品 (执行二进制文件、脚本、ML 模型等) 组合部署。可自由组合 AWS 提供的公共组件 (日志管理器、流管理器、ML 推理组件等) 和自制的自定义组件。部署从云端通过 OTA 执行,可按设备组 (Thing Group) 单位滚动发布。定义回滚设置后,部署失败时可自动回退到前一版本。Azure 同等服务 Azure IoT Edge 也采用基于容器的模块化架构,但 Greengrass V2 还可选择不依赖容器的轻量进程执行模型,在资源受限的小型设备上具有优势。
本地消息传递与 IPC 构建的边缘内数据流
连接到 Greengrass Core 设备的多个客户端设备间无需经由云即可交换消息的本地消息传递功能,大幅提升边缘系统的响应性。部署本地 MQTT Broker 组件后,Greengrass Core 作为 MQTT Broker 运行,客户端设备可使用与云端 IoT Core 相同的 MQTT 协议进行本地通信。组件间通信提供 IPC (Inter-Process Communication) 机制,以发布/订阅方式交换事件。例如温度传感器组件将测量值发布到本地主题,异常检测组件订阅并进行阈值判定,将结果传递给执行器控制组件,构建边缘内数据流。使用流管理器组件可将本地生成的数据自动导出到 S3 或 Kinesis,网络断开时在本地缓冲,恢复后重新发送。边缘计算相关书籍 (Amazon) 详细介绍了边缘内数据流的设计模式。