任务管理入门:如何有效控制大规模设备

简介: 在IoT领域核心的场景之一就是云和设备交互。
来源 | HaaS技术社区

一、设备管理

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

  1. 设备上报数据到阿里云物联网(IoT)平台,

  2. 然后阿里云物联网(IoT)平台,将上报的数据存储到DB中,

  3. 当然设备上报的数据也可以通过AMQP服务同步到用户的服务器。

  4. 当用户管理设备时,调用开放API将控制指令通过给用户。

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

image.png

(图1)

二、为什么需要任务管理

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

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

image.png

(图2)

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

image.png

(图3)

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

三、任务管理提供能力

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

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

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

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

image.png

(图4)

四、设备选择服务

image.png

(图5)

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

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

五、任务调度服务

image.png

(图6)

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

六、自定义任务服务

image.png

(图7)

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

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

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

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

七、任务管理技术挑战

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

  • 机器宕机集群发布,任务执行中断

  • 任务执行时间长短不一样,可能会出现饥饿

  • 任务执行优先级不一样,优先级低的任务不能阻塞优先级高的任务

  • 任务只需要执行一次

  • 任务调度和任务执行的时间性能有差异

image.png

(图8)

任务调度策略

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

  • 任务量较少时按照调度时间升序排列,选择待执行的任务

  • 当任务持续增多时,任务开始有一定量的积压,采用任务的响应比排序,选择待执行的任务。响应比计算方式(任务等待时间+任务执行时间)/(任务执行时间)

  • 采用当任务量一定时采用响应比其实是一个优化,响应比的计算需要时间较久。

任务隔离&异步化

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

  • 针对不同类型的任务,任务管理集群master节点获取需要执行任务时,分为不同的线程池

  • 任务执行时不同类型的任务,采用不同线程池相互隔离避免任务执行时间不一样相互影响

  • 任务的整个过程如分发、执行采用异步化避免任务执行时间过长,阻塞上游系统

     

任务检测&重试

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

  • 任务执行时,节点上定时上报其上任务的心跳信息

  • 任务管理集群的master节点定义检测有问题的任务,并针对有问题任务的任务重试

  • 不同类型的任务采用不同的重试策略,有些任务直接出发执行,有些任务采用退避重试的策略,并控住重试的最大次数。对于超出重试次数的任务,增加监控告警,及时发现问题并处理

  • 任务的执行需要加锁,避免任务重复执行

任务并发度控制

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

  • 采用任务类型维度、单机维度、用户维度3个维度进行任务的并发度限制

八、如何使用任务管理

image.png

(图9)

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

  1. 前置准备

  • 创建产品和设备,详见创建产品。已有产品和设备,可以忽略此步骤。
  • 对于属性设置和服务调用类型任务,相关的属性和服务需提前在产品功能定义中编辑并发布。

    2.设备开发

  • 服务定义或者属性设置类型服务,设备采用服务调用和属性设置的topic和阿里云物联网平台通信。

  • 自定义类型服务,设备采用自定义任务的topic和阿里云物联网平台通信。

3.设备和相关的功能开发完成后,可以使用任务管理控制设备

  • 按照业务类型选择不同类型的任务,并设置相应的参数,具体参考任务管理说明文档

  • 任务创建后阿里云物联网平台,会进行调度执行,可以在控制台上查看任务执行的详情。

  • 任务执行完成后,可以通过任务重试,重新执行任务中失败的作业。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
3月前
|
前端开发 数据可视化 API
Python实现智能家居设备的统一控制平台
【10月更文挑战第6天】 Python实现智能家居设备的统一控制平台
142 11
|
3月前
|
机器学习/深度学习 编解码 人工智能
光遗传学:控制生物体功能的光控技术
【10月更文挑战第12天】光遗传学作为一项革命性的技术,正在生命科学领域掀起一场前所未有的变革。它利用光信号精确操控生物体内的细胞活性,为神经科学、疾病治疗乃至生物技术的研究开辟了全新的路径。随着技术的不断进步和创新,光遗传学技术有望在未来发挥更大的作用,为人类健康和生物技术的发展贡献更多的力量。让我们共同期待光遗传学技术带来的美好未来!
|
5月前
|
传感器 C# 监控
硬件交互新体验:WPF与传感器的完美结合——从初始化串行端口到读取温度数据,一步步教你打造实时监控的智能应用
【8月更文挑战第31天】本文通过详细教程,指导Windows Presentation Foundation (WPF) 开发者如何读取并处理温度传感器数据,增强应用程序的功能性和用户体验。首先,通过`.NET Framework`的`Serial Port`类实现与传感器的串行通信;接着,创建WPF界面显示实时数据;最后,提供示例代码说明如何初始化串行端口及读取数据。无论哪种传感器,只要支持串行通信,均可采用类似方法集成到WPF应用中。适合希望掌握硬件交互技术的WPF开发者参考。
92 0
|
5月前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
117 0
|
6月前
|
传感器 Python
门禁管理系统工程是一个涉及硬件和软件集成的复杂系统,旨在控制人员的出入,并记录和管理相关数据。
门禁管理系统工程是一个涉及硬件和软件集成的复杂系统,旨在控制人员的出入,并记录和管理相关数据。
|
6月前
|
数据采集 存储 监控
通过LabVIEW提升生产设备自动化水平
通过LabVIEW提升生产设备自动化水平
46 0
|
8月前
|
传感器 数据可视化 物联网
LabVIEW开发低成本静脉监测和控制输液系统
LabVIEW开发低成本静脉监测和控制输液系统
62 2
|
8月前
|
前端开发 Nacos 微服务
平台设计-部署模式
平台有多做部署模式
|
安全 搜索推荐 机器人
实时云渲染,开启虚拟仿真教学实验平台新时代!
点量云,开启虚拟仿真教学实验平台新时代!
|
存储 安全 数据安全/隐私保护
实时云渲染应用之虚拟仿真项目的四大优势
实时云渲染方案中,虚拟仿真程序存储在服务器上,程序执行时占用的是服务器的显卡和CPU资源,用户侧机器无特殊硬件要求,只要能正常的观看1080P的视频即可。因为云渲染方案中,虚拟仿真程序存在服务器上,执行过程也在服务器,因此产生的数据也是在服务器上,数据泄露风险更低,安全系数更高。从用户侧的角度来说,点量实时云渲染方案相比于传统的方式,学生无需安装任何程序和客户端,学生通过网页,就可以打开服务器上的虚拟仿真程序进行操作学习。效果和本地安装几乎无任何差别,摆脱了对于电脑硬件参数的高性能要求,可以做到即点即用。
83 0