技术架构
更详细的介绍系统的技术实现。
在贡献代码前,您可能需要了解 BeeFog 的架构。总体架构在第一章简介中有介绍, 这里会详述控制中心 QueenBee 的系统架构。
QueenBee 技术架构
BeeFog 的系统模块架构如下图所示,其中方块为模块,连线为模块间调用关系。

工作节点 [ Worker Bees ]
- BeeFog 的工作节点可以部署在服务器,PC或手机等各种设备之上。
- 有的独立 Worker 单纯的只完成 BeeFog 的工作。在 PC 和移动设备上,大多是集成 Worker SDK 的 APP,在用户使用时就可以进行工作。
- 工作节点的行为是完全主动的,在自己有空闲时,会向控制中心请求任务。
- 在完成任务后,会将结果状态报告给控制中心。报告时也可能根据任务配置携带结果数据。
- 任务执行会有时间限制,在超时后,控制器会将任务分给别的节点执行,不再接收此次任务的结果报告。
控制中心 [ Queen Bee ]
控制中心被分为多个模块。模块之间通过接口暴露的函数调用。有几个模块会开放 REST API 供用户使用。
工作设备管理器 ( Worker Manager )
- 提供工作设备注册接口。工作设备每次上线通过提供
节点组 Code在管理器注册,换取Token用以后续其他请求的认证。 - 管理器可以通过
Token辨识来源设备并记录所有设备的状态。 - 提供查看工作设备汇总状况的 REST API 供用户使用。
任务定义管理器 ( Job Manager )
- 存储和管理任务定义
- 提供查询、新增、修改和删除任务定义的 REST API 供用户使用。
任务调度中心 ( Job Dispatcher )
- 提供调用任务和查看实例状态的 REST API 供用户使用。
- 提供调用任务的接口供系统内部使用。
- 工作设备请求任务和汇报任务结果的接口。
- 任务每次被调用,都会产生一个运行实例(Run)。调度中心负责维护并保存实例整个生命周期的状态。
- 任务在被调用后,未被分配给工作设备前,存储在一个任务池中。调度中心还要负责任务分配的匹配检验与优先逻辑。
- 任务在工作设备完成并报告后,可能还有需要在调度中心执行的步骤,比如发送通知等。
自动任务触发器 ( Automation Trigger )
任务除了使用接口直接调用,还可以预设一定的规则去触发,比如定时触发或根据云端的一个文件状态去触发等等。本模块管理触发规则并实施触发。
- 监听任务定义中新增或修改了触发器的事件,在服务中维护触发器。
- 实施自动触发任务。
- 任务触发器如果想要支持分布式部署,开发难度极高,所以本模块为独立部署的一个单例服务。
基础设施
我们使用了以下基础设施:
- Mysql 用以数据存储
- Redis 用以缓存
- NSQ 用以事件发布和监听
最后修改 June 26, 2020: refactor arch doc (7c3faa1)