任务管理入门:如何有效控制大规模设备 待我称王封你为后i 2022-09-03 15:13 167阅读 0赞 # **一、设备管理** # 在IoT领域核心的场景之一就是云和设备交互。如图1是一个典型的**业务场景** 1. 设备上报数据到阿里云物联网(IoT)平台, 2. 然后阿里云物联网(IoT)平台,将上报的数据存储到DB中, 3. 当然设备上报的数据也可以通过AMQP服务同步到用户的服务器。 4. 当用户管理设备时,调用开放API将控制指令通过给用户。 图1是个很简单的业务场景,只有一个设备。当设备规模成倍增加时该如何有效的管理控制这些设备呢,阿里云物联网(IoT)平台提供了面向大规模设备管理的任务管理服务解决这些问题。 ![图片][09ded3cf5bb8b9d6a70d6d6ad927a4db.png] (图1) # **二、为什么需要任务管理** # 可能我们还有些疑惑,设备数量增加管理控制设备会有什么问题,以下已是两个比较典型的场景。 场景一,批量控制一批设备。如图2所示,需要不断的轮询查询设备信息,然后批量的调用阿里云物联网平台提供的开放API,物联网(IoT)平台服务将消息发送给设备。第一步轮询可能中断,第二步服务调用可能失败、限流等需要重试,第四步设备可能不在线消息不能正常触发设备。 ![图片][158c2499e388ce66cabf94fe597e809d.png] (图2) 场景二,定时批量控制一批设备。如图3所示,对于定时的触发的场景,需要增加定时器。当时间到时触发server轮询查询设备信息,然后调用阿里云物联网平台提供的服务将消息推送给设备。场景2需要自己实现定时回调的能力,增加业务的复杂度。 ![图片][7e29a4c04221728989c76c28a0db80fe.png] (图3) 场景一和场景二,都是比较典型的批量管理控制设备的场景。实现稳定的批量管理控制设备场景有一定的成本。阿里云物联网提供的任务管理服务,提供简单易用的批量控制设备的服务,简化批量管理控制设备流程,降低批量控制设备的成本。 # **三、任务管理提供能力** # ** 便捷精准的设备选择服务**:无需批量的循环查询设备,不需要考虑机器重启循环中的问题。同时提供多样的设备选择策略,便捷精准的选择一批目标设备,从而管理控制这批设备。 ** 快速批量的任务调度服务**:无需循环调用IoT开放API,不需要考虑容错、限流的问题。 ** 方便的自定义任务服务**:无需修改产品功能定义,可以自由扩展下发给设备的信息内容,避免批量服务调用和属性设置需要修改产品的功能定义。 任务管理提供以上3种能力,助力构建大规模运维设备的场景。解决循环查询设备、服务调用容错、方便搭建业务场景。如下是任务管理整体的架构。 ![图片][5364d8e89ace564a0ac696f957deeeb4.png] (图4) # **四、设备选择服务** # ![图片][d74c0238e37bdbce483bbad6c76b2d76.png] (图5) 创建任务时,阿里云物联网平台同步初始化一个关联的设备选择服务。按照创建任务的策略,选择目标设备然后将设备持久化到DB中。 阿里云物联网平台提供按照**产品、分组**选择设备能力,同时也支持指定的设备。后续将提供sql方式支持更多的场景方便选择需要控制的设备。 # **五、任务调度服务** # ![图片][148c4821c0a5aae80044aa75311a736b.png] (图6) 当任务到了需要执行的时间点, 阿里云物联网平台从DB中获取出需要执行的任务详情,并行分发到执行器进行批量执行,同时保障任务完整的执行。 # **六、自定义任务服务** # ![图片][14b1ba3e2a5b3f0f27fa81c57f3bd525.png] (图7) 服务调用和属性设置没有设备执行的任务状态信息,满足不了业务场景,任务管理还提供了自定义任务的能力,可以方便快速的拓展业务场景,如配置下发、软件升级。 创建任务时选择自定义任务,然后上传设备执行需要文件,文件通过阿里云安全扫描后存储到OSS中,任务调度后,通过自定义任务的**通信协议**将消息发送给设备。设备可以直接从OSS中获取,任务执行所需要的文件。 当设备不在线时,机器重启时可以请求当前可以执行的任务信息,避免**任务的丢失**。设备资源不够时,也可以拒绝执行任务。任务执行完成后,上报任务的状态。 阿里云物联网平台接收设备上报的任务状态,实时统计任务的执行状态。通过加锁避免设备并发更新状态,保证**状态准确性**。 # **七、任务管理技术挑战** # 任务管理的业务模型上并不是很复杂,但是需要保证任务快速稳定的仅执行一次问题就不简单了。同时任务执行过程中时间、环境并不可控如集群中机器可能重启,任务特性不同这些都给任务管理带了挑战。例如: * 机器宕机集群发布,任务执行中断 * 任务执行时间长短不一样,可能会出现饥饿 * 任务执行优先级不一样,优先级低的任务不能阻塞优先级高的任务 * 任务只需要执行一次 * 任务调度和任务执行的时间性能有差异 ![图片][1619decb5298ecb66a29fcfc6227924d.png] (图8) **任务调度策略** 不同的任务关联的设备数量不一致,导致任务的执行时间不一样。对于每个用户来说任务的执行机会都是相等的,需要避免执行时间长的任务一直被调度,新创建的时间短的任务得不到处理。 * 任务量较少时按照调度时间升序排列,选择待执行的任务 * 当任务持续增多时,任务开始有一定量的积压,采用任务的响应比排序,选择待执行的任务。响应比计算方式(任务等待时间+任务执行时间)/(任务执行时间) * 采用当任务量一定时采用响应比其实是一个优化,响应比的计算需要时间较久。 **任务隔离&异步化** 每种类型的任务自己的特性执行时间不一样,同时任务种类多了后的任务的重要程度会有所差异。 如图8所示: * 针对不同类型的任务,任务管理集群master节点获取需要执行任务时,分为不同的线程池 * 任务执行时不同类型的任务,采用不同线程池相互隔离避免任务执行时间不一样相互影响 * 任务的整个过程如分发、执行采用异步化避免任务执行时间过长,阻塞上游系统 **任务检测&重试** 集群的机器业务迭代必不可免的有发布的需求,同时机器也可能由于某种原因宕机,因此针对任务需要检测其状态并采用不同的策略进行充实。如图8所示: * 任务执行时,节点上定时上报其上任务的心跳信息 * 任务管理集群的master节点定义检测有问题的任务,并针对有问题任务的任务重试 * 不同类型的任务采用不同的重试策略,有些任务直接出发执行,有些任务采用退避重试的策略,并控住重试的最大次数。对于超出重试次数的任务,增加监控告警,及时发现问题并处理 * 任务的执行需要加锁,避免任务重复执行 **任务并发度控制** ** ** 任务调度的成本和时间其实很低,任务调度也很快,但是任务执行确需要一定的时间,两者一般相差角度。如何避免任务压垮业务系统也是需要考虑的。 * 采用任务类型维度、单机维度、用户维度3个维度进行任务的并发度限制 # **八、如何使用任务管理** # ![图片][fc6bb4e1b6f255650a4bcd9e3eb8815e.png] (图9) 如图9所示,为整个任务管理使用的流程信息 1. **前置准备** * 创建产品和设备,详见**创建产品**。已有产品和设备,可以忽略此步骤。 * 对于属性设置和服务调用类型任务,相关的属性和服务需提前在产品功能定义中编辑并发布。 2.**设备开发** * 服务定义或者属性设置类型服务,设备采用服务**调用和属性设置的topic**和阿里云物联网平台通信。 * 自定义类型服务,设备采用**自定义任务的topic**和阿里云物联网平台通信。 **3.设备和相关的功能开发完成后,可以使用任务管理控制设备** * 按照业务类型选择不同类型的任务,并设置相应的参数,具体参考**任务管理说明文档**。 * 任务创建后阿里云物联网平台,会进行调度执行,可以在控制台上查看任务执行的详情。 * 任务执行完成后,可以通过任务重试,重新执行任务中失败的作业。 ![图片][7ecfd7c8256b8c4e8ccc431513a4312b.png] **钉钉扫码免费报名** **AloT训练营等你参加** [09ded3cf5bb8b9d6a70d6d6ad927a4db.png]: /images/20220829/5956c5f95b0d4387b713492b859881d9.png [158c2499e388ce66cabf94fe597e809d.png]: /images/20220829/a69397d4a5df4c0d9eceb8b6e69b0e6e.png [7e29a4c04221728989c76c28a0db80fe.png]: /images/20220829/90084c3c12e941469ce5d14792cf79ae.png [5364d8e89ace564a0ac696f957deeeb4.png]: /images/20220829/e56fe73f34e84ef58e68e1039b2e8370.png [d74c0238e37bdbce483bbad6c76b2d76.png]: /images/20220829/48ab60c8e36447b88cf6b484cc6904b4.png [148c4821c0a5aae80044aa75311a736b.png]: /images/20220829/3b789815336a4421bc6320fe38f08f0c.png [14b1ba3e2a5b3f0f27fa81c57f3bd525.png]: /images/20220829/3ea6b4baa03c4ac6b7fed75d48df9a22.png [1619decb5298ecb66a29fcfc6227924d.png]: /images/20220829/36368a4398dd4b63ae936640973255c1.png [fc6bb4e1b6f255650a4bcd9e3eb8815e.png]: /images/20220829/38ff3dcd5a8a43bd843129085c42ef6f.png [7ecfd7c8256b8c4e8ccc431513a4312b.png]: /images/20220829/bc7ba8404b17486a9c3895ae85d382c6.png
相关 说说 Spring 定时任务如何大规模企业级运用 Spring 定时任务简介 Cloud Native 定时任务是业务应用开发中非常普遍存在的场景(如:每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天 深藏阁楼爱情的钟/ 2024年04月06日 09:34/ 0 赞/ 19 阅读
相关 嵌入式设备如何处理实时任务? 嵌入式设备通常需要处理实时任务,这些任务通常有时间限制,需要在规定的时间内完成。在处理实时任务时,嵌入式设备通常会使用实时操作系统(Real-Time Operating Sy 待我称王封你为后i/ 2024年03月17日 12:26/ 0 赞/ 10 阅读
相关 批量设备管理简介:如何高效管理大量物联网设备 目录 批量设备管理简介:如何高效管理大量物联网设备 什么是批量设备管理 高效管理大量物联网设备的方法 1. 设备标识和自动化注册 2. 远程监控和控制 3. 软件更 喜欢ヅ旅行/ 2024年02月18日 13:56/ 0 赞/ 15 阅读
相关 Ariduino入门笔记——11. Arduino 默认函数(USB设备控制) 文章目录 Keyboard 开启键盘模拟 Keyboard.begin() 关闭键盘模拟 Keyboard.end() 长摁 布满荆棘的人生/ 2023年01月19日 04:36/ 0 赞/ 215 阅读
相关 任务管理入门:如何有效控制大规模设备 一、设备管理 在IoT领域核心的场景之一就是云和设备交互。如图1是一个典型的业务场景 1. 设备上报数据到阿里云物联网(IoT)平台, 2. 然后阿里云物联网(Io 待我称王封你为后i/ 2022年09月03日 15:13/ 0 赞/ 168 阅读
相关 设备管理 Android从API2.2开始提供了设备管理的API。可以实现以下功能:http://www.verydemo.com/demo\_c131\_i116677.html 一 客官°小女子只卖身不卖艺/ 2022年07月28日 01:25/ 0 赞/ 245 阅读
相关 如何有效时间管理 如何有效管理时间的要点: 1.组织与规划 保持整洁能够提升我们的自我价值、自我形象以及自我尊严。例如将桌面保持整洁、做完事立即归档等。对于没有效果或者效 ╰+哭是因爲堅強的太久メ/ 2022年07月12日 08:54/ 0 赞/ 185 阅读
相关 通过 Web 控制蓝牙设备:WebBluetooth入门 > 翻译:疯狂的技术宅 > 原文:[https://www.smashingmagazine.com/2019/02/introduction-to-webbluetoot 青旅半醒/ 2022年03月17日 08:48/ 0 赞/ 1125 阅读
相关 如何有效实现软件的需求管理(7) 如何有效实现软件的需求管理(7) 【本篇为《如何有效实现软件的[需求管理][Link 1]》第七篇,([第一篇][Link 2],[第二篇][Link 3],[第 今天药忘吃喽~/ 2022年01月28日 12:29/ 0 赞/ 236 阅读
还没有评论,来说两句吧...