首页 > 云计算 > 公有云实践 > 任务管理轻松实现大规模设备管理控制——设备管理类
在IoT领域核心的场景之一就是云和设备交互。如图1是一个典型的 业务场景,
图1是个很简单的业务场景,只有一个设备。当设备规模成倍增加时该如何有效的管理控制这些设备呢,阿里云物联网(IoT)平台提供了面向大规模设备管理的任务管理服务解决这些问题。

图1
可能我们还有些疑惑,设备数量增加管理控制设备会有什么问题,以下已是两个比较典型的场景。
场景一,批量控制一批设备。如图2所示,需要不断的轮询查询设备信息,然后批量的调用阿里云物联网平台提供的开放API,物联网(IoT)平台服务将消息发送给设备。 第一步轮询可能中断,第二步服务调用可能失败、限流等需要重试,第四步设备可能不在线消息不能正常触发设备。

图2
场景二,定时批量控制一批设备。如图3所示,对于定时的触发的场景,需要增加定时器。当时间到时触发server轮询查询设备信息,然后调用阿里云物联网平台提供的服务将消息推送给设备。场景2需要自己实现定时回调的能力,增加业务的复杂度。

图3
场景一和场景二,都是比较典型的批量管理控制设备的场景。实现稳定的批量管理控制设备场景有一定的成本。阿里云物联网提供的任务管理服务,提供简单易用的批量控制设备的服务,简化批量管理控制设备流程,降低批量控制设备的成本。
便捷精准的设备选择服务:无需批量的循环查询设备,不需要考虑机器重启循环中的问题。同时提供多样的设备选择策略,便捷精准的选择一批目标设备,从而管理控制这批设备。
快速批量的任务调度服务:无需循环调用IoT开放API,不需要考虑容错、限流的问题。
方便的自定义任务服务:无需修改产品功能定义,可以自由扩展下发给设备的信息内容,避免批量服务调用和属性设置需要修改产品的功能定义。
任务管理提供以上3种能力,助力构建大规模运维设备的场景。解决循环查询设备、服务调用容错、方便搭建业务场景。如下是任务管理整体的架构。

图4
设备选择服务

图5
创建任务时,阿里云物联网平台同步初始化一个关联的设备选择服务。按照创建任务的策略,选择目标设备然后将设备持久化到DB中。
阿里云物联网平台提供按照 产品、分组选择设备能力,同时也支持指定的设备。后续将提供sql方式支持更多的场景方便选择需要控制的设备。
任务调度服务

图6
当任务到了需要执行的时间点, 阿里云物联网平台从DB中获取出需要执行的任务详情,并行分发到执行器进行批量执行,同时保障任务完整的执行。
自定义任务服务

图7
服务调用和属性设置没有设备执行的任务状态信息,满足不了业务场景,任务管理还提供了自定义任务的能力,可以方便快速的拓展业务场景,如配置下发、软件升级。
创建任务时选择自定义任务,然后上传设备执行需要文件,文件通过阿里云安全扫描后存储到OSS中,任务调度后,通过自定义任务的 通信协议将消息发送给设备。设备可以直接从OSS中获取,任务执行所需要的文件。
当设备不在线时,机器重启时可以请求当前可以执行的任务信息,避免 任务的丢失。设备资源不够时,也可以拒绝执行任务。任务执行完成后,上报任务的状态。
阿里云物联网平台接收设备上报的任务状态,实时统计任务的执行状态。通过加锁避免设备并发更新状态,保证 状态准确性。
任务管理的业务模型上并不是很复杂,但是需要保证任务快速稳定的仅执行一次问题就不简单了。 同时任务执行过程中时间、环境并不可控如集群中机器可能重启,任务特性不同这些都给任务管理带了挑战。例如:

图8
任务调度策略
不同的任务关联的设备数量不一致,导致任务的执行时间不一样。对于每个用户来说任务的执行机会都是相等的,需要避免执行时间长的任务一直被调度,新创建的时间短的任务得不到处理。
任务隔离&异步化
每种类型的任务自己的特性执行时间不一样,同时任务种类多了后的任务的重要程度会有所差异。 如图8所示:
任务检测&重试
集群的机器业务迭代必不可免的有发布的需求,同时机器也可能由于某种原因宕机,因此针对任务需要检测其状态并采用不同的策略进行充实。如图8所示:
任务并发度控制
任务调度的成本和时间其实很低,任务调度也很快,但是任务执行确需要一定的时间,两者一般相差角度。如何避免任务压垮业务系统也是需要考虑的。

图9
如图9所示,为整个任务管理使用的流程信息
物联网平台产品介绍详情:

阿里云物联网平台客户交流群
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70017009/viewspace-2928121/ ,如需转载,请注明出处,否则将追究法律责任。