它可以提供临时的离线低延迟计算服务,包括设备连接,消息路由,远程同步,功能计算,视频捕获,AI推理,状态报告,配置ota等。
baetyl-function-python27 模块的设计思想与 baetyl-function-python36 模块相同,但是两者的函数运行时不同。baetyl-function-python27 所使用的函数运行时基于 Python2.7 版本,并提供基于 Python2.7 的 pyyaml、protobuf3、grpcio
baetyl-function-python36 提供 Python 函数与 百度云-函数计算 CFC 类似,用户通过编写的自己的函数来处理消息,可进行消息的过滤、转换和转发等,使用非常灵活。该模块可作为 GRPC 服务单独启动,也可以为函数管理模块提供函数运行实例。所使用的函数运行时基于 Python3.6 版本。
baetyl-function-node85 模块的设计思想与 baetyl-function-python36 模块相同,为 Baetyl 提供 Node8.5 运行时环境,用户可以编写 javascript 脚本来处理消息,同样支持 JSON 格式也可以是二进制形式的数据,
主程序作为 Baetyl 系统的核心,负责管理所有存储卷和服务,内置运行引擎系统,对外提供 RESTful API 和命令行。
引擎系统 负责服务的存储卷映射,实例启停、守护等,对服务操作做了抽象,可以实现不同的服务运行模式。根据设备能力的不同,可选择不同的运行模式来启动服务。目前支持了 Docker 容器模式和 Native 进程模式,后续还会支持 k3s 容器模式。
RESTful API:Baetyl 主程序会暴露一组 RESTful API,采用 HTTP/1。在 Linux 系统下默认采用 Unix Domain Socket,固定地址为 /var/run/baetyl.sock;其他环境采用TCP,默认地址为 tcp://127.0.0.1:50050。目前接口的认证方式采用简单的动态 Token 的方式,主程序在启动服务时会为每个服务动态生成一个 Token,将服务名和 Token 以环境变量的方式传入服务的实例,实例读取后放入请求的 Header 中发给主程序即可。
Header 名称如下:
下面是目前提供的接口:
函数管理模块负责管理所有函数实例和消息路由规则,支持自动扩容和缩容。
如上图示,这里 Baetyl 的本地 Hub 与远程云端 Hub 平台之间通过 Baetyl 远程 MQTT 通讯模块实现消息的转发、同步。进一步地,通过在两端接入 MQTT Client 即可实现 端云协同式 的消息转发与传递。