当前位置:主页 > 查看内容

任务管理轻松实现大规模设备管理控制

发布时间:2021-07-29 00:00| 位朋友查看

简介:设备管理 在IoT领域核心的场景之一就是云和设备交互。如图1是一个典型的 业务场景 设备上报数据到阿里云物联网 IoT 平台 然后阿里云物联网 IoT 平台 将上报的数据存储到DB中 当然设备上报的数据也可以通过AMQP服务同步到用户的服务器。当用户管理设备时 调用……
设备管理

在IoT领域核心的场景之一就是云和设备交互。如图1是一个典型的业务场景

设备上报数据到阿里云物联网 IoT 平台 然后阿里云物联网 IoT 平台 将上报的数据存储到DB中 当然设备上报的数据也可以通过AMQP服务同步到用户的服务器。当用户管理设备时 调用开放API将控制指令通过给用户。

图1是个很简单的业务场景 只有一个设备。当设备规模成倍增加时该如何有效的管理控制这些设备呢 阿里云物联网 IoT 平台提供了面向大规模设备管理的任务管理服务解决这些问题。

?? image

图1

为什么需要任务管理

可能我们还有些疑惑 设备数量增加管理控制设备会有什么问题 以下已是两个比较典型的场景。

场景一 批量控制一批设备。如图2所示 需要不断的轮询查询设备信息 然后批量的调用阿里云物联网平台提供的开放API 物联网 IoT 平台服务将消息发送给设备。 第一步轮询可能中断 第二步服务调用可能失败、限流等需要重试 第四步设备可能不在线消息不能正常触发设备。

? image


图2

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

image

图3

场景一和场景二 都是比较典型的批量管理控制设备的场景。实现稳定的批量管理控制设备场景有一定的成本。阿里云物联网提供的任务管理服务 提供简单易用的批量控制设备的服务 简化批量管理控制设备流程 降低批量控制设备的成本。

任务管理提供能力


便捷精准的设备选择服务 无需批量的循环查询设备 不需要考虑机器重启循环中的问题。同时提供多样的设备选择策略 便捷精准的选择一批目标设备 从而管理控制这批设备。

快速批量的任务调度服务 无需循环调用IoT开放API 不需要考虑容错、限流的问题。

方便的自定义任务服务 无需修改产品功能定义 可以自由扩展下发给设备的信息内容 避免批量服务调用和属性设置需要修改产品的功能定义。

任务管理提供以上3种能力 助力构建大规模运维设备的场景。解决循环查询设备、服务调用容错、方便搭建业务场景。如下是任务管理整体的架构

? image

图4


设备选择服务


? image

图5

创建任务时 阿里云物联网平台同步初始化一个关联的设备选择服务。按照创建任务的策略 选择目标设备然后将设备持久化到DB中。

阿里云物联网平台提供按照产品、分组选择设备能力 同时也支持指定的设备。后续将提供sql方式支持更多的场景方便选择需要控制的设备。


任务调度服务

? image

图6

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


自定义任务服务

image

图7

服务调用和属性设置没有设备执行的任务状态信息 满足不了业务场景 任务管理还提供了自定义任务的能力 可以方便快速的拓展业务场景 如配置下发、软件升级。

创建任务时选择自定义任务 然后上传设备执行需要文件 文件通过阿里云安全扫描后存储到OSS中 任务调度后 通过自定义任务的通信协议将消息发送给设备。设备可以直接从OSS中获取 任务执行所需要的文件。

当设备不在线时 机器重启时可以请求当前可以执行的任务信息 避免任务的丢失。设备资源不够时 也可以拒绝执行任务。任务执行完成后 上报任务的状态。

阿里云物联网平台接收设备上报的任务状态 实时统计任务的执行状态。通过加锁避免设备并发更新状态 保证状态准确性。



任务管理技术挑战

任务管理的业务模型上并不是很复杂 但是需要保证任务快速稳定的仅执行一次问题就不简单了。 同时任务执行过程中时间、环境并不可控如集群中机器可能重启 任务特性不同这些都给任务管理带了挑战。例如

机器宕机集群发布 任务执行中断任务执行时间长短不一样 可能会出现饥饿任务执行优先级不一样 优先级低的任务不能阻塞优先级高的任务任务只需要执行一次任务调度和任务执行的时间性能有差异

? image

图8


任务调度策略

不同的任务关联的设备数量不一致 导致任务的执行时间不一样。对于每个用户来说任务的执行机会都是相等的 需要避免执行时间长的任务一直被调度 新创建的时间短的任务得不到处理。

任务量较少时按照调度时间升序排列 选择待执行的任务当任务持续增多时 任务开始有一定量的积压 采用任务的响应比排序 选择待执行的任务。响应比计算方式 任务等待时间 任务执行时间 /(任务执行时间)采用当任务量一定时采用响应比其实是一个优化 响应比的计算需要时间较久。


任务隔离 异步化

每种类型的任务自己的特性执行时间不一样 同时任务种类多了后的任务的重要程度会有所差异。 如图8所示

针对不同类型的任务 任务管理集群master节点获取需要执行任务时 分为不同的线程池任务执行时不同类型的任务 采用不同线程池相互隔离避免任务执行时间不一样相互影响任务的整个过程如分发、执行采用异步化避免任务执行时间过长 阻塞上游系统


任务检测 重试

集群的机器业务迭代必不可免的有发布的需求 同时机器也可能由于某种原因宕机 因此针对任务需要检测其状态并采用不同的策略进行充实。如图8所示

任务执行时 节点上定时上报其上任务的心跳信息任务管理集群的master节点定义检测有问题的任务 并针对有问题任务的任务重试不同类型的任务采用不同的重试策略 有些任务直接出发执行 有些任务采用退避重试的策略 并控住重试的最大次数。对于超出重试次数的任务 增加监控告警 及时发现问题并处理任务的执行需要加锁 避免任务重复执行


任务并发度控制

任务调度的成本和时间其实很低 任务调度也很快 但是任务执行确需要一定的时间 两者一般相差角度。如何避免任务压垮业务系统也是需要考虑的。

采用任务类型维度、单机维度、用户维度3个维度进行任务的并发度限制如何使用任务管理

? image

图9

如图9所示 为整个任务管理使用的流程信息

前置准备创建产品和设备 详见创建产品。 已有产品和设备 可以忽略此步骤。对于属性设置和服务调用类型任务 相关的属性和服务需提前在产品功能定义中编辑并发布。设备开发服务定义或者属性设置类型服务 设备采用服务调用和属性设置的topic和阿里云物联网平台通信。自定义类型服务 设备采用自定义任务的topic和阿里云物联网平台通信。设备和相关的功能开发完成后 可以使用任务管理控制设备按照业务类型选择不同类型的任务 并设置相应的参数 具体参考任务管理说明文档。任务创建后阿里云物联网平台 会进行调度执行 可以在控制台上查看任务执行的详情。任务执行完成后 可以通过任务重试 重新执行任务中失败的作业。
本文转自网络,原文链接:https://developer.aliyun.com/article/785965
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐