System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及iot设备数据处理,更具体地说,它涉及一种基于高利用率非阻断队列处理iot设备数据的方法。
技术介绍
1、iot设备数据接口承载着大量设备数据,其中包含设备状态数据、运行数据、日志数据、统计数据等。iot平台随着业务量上升,设备数据接口的压力上升明显。目前iot平台普遍的做法是使用队列对数据生产端和消费者模块进行解耦,以避免接口阻塞。但如果消费者模块的处理能力跟不上,则非常容易在队列中产生消息积压,严重的甚至会产生雪崩效应。
2、同时,在消息消费过程中,由于不同类型和场景的设备信息消费会存在一定的时效性问题,用传统的方式通过场景划分队列可能会导致部分消息消费速率快,使得队列空闲利用率不高;而部分队列消费速率慢,使得消息挤压甚至阻断。基于此背景下,需寻求一种更高效且非阻断形式的消息消费机制来优化整个iot设备消息的处理场景,保障系统可用性的同时提高整体数据的消费性能。
技术实现思路
1、本专利技术要解决的技术问题是针对现有技术的不足,提供一种基于高利用率非阻断队列处理iot设备数据的方法,降低阻塞风险,达到了提高整体消息消费效率的目的。
2、本专利技术所述的一种基于高利用率非阻断队列处理iot设备数据的方法,该方法包括以下步骤:
3、步骤一、根据不同的业务场景生成业务消息;
4、步骤二、根据所述业务消息的消息类型查询与消息类型对应的执行指标,并根据所述执行指标查询业务消息的消息优先级,并根据所述消息优先级将业务消息调度到指
5、步骤三、根据所述消息类型对业务消息按优先级进行消息分发,以将所述业务消息分发至消费端;
6、步骤四、获取所述消息分发的执行结果,并根据所述执行结果执行业务消息的后处理任务。
7、作进一步的改进,在步骤二中,若查询不到所述业务消息所对应的消息优先级,则将所述业务消息调度到中优先级队列;若查询到所述业务消息所对应的消息优先级,则将所述业务消息调度到指定优先级的队列中。
8、进一步的,所述队列包括高优先级队列、中优先级队列、低优先级队列和慢速处理队列。
9、作进一步的改进,在步骤三中,位于同一队列中的所述业务消息按先进先出的顺序进行消息分发。
10、作进一步的改进,在进行消息分发时,首先将所述队列中的业务消息调度到空闲队列工作线程中,然后再将所述业务消息分发至消费端。
11、作进一步的改进,所述后处理任务具体为:
12、当所述消息分发的执行结果为成功时,对所述业务消息的执行数据进行指标分析,以得到执行指标;
13、当所述消息分发的执行结果为失败时,对所述业务消息的执行数据进行指标分析,以得到执行指标,并将所述业务消息调度到故障队列中等待后续补偿处理;
14、当所述消息分发的执行耗时超过设定的时间阈值时,则强制中止所述业务消息的执行,并对所述业务消息的优先级进行降级处理。
15、进一步的,所述后续补偿处理具体为:
16、第一步、定时抽取所述故障队列中的业务消息,并将其进行消息分发;
17、第二步、对故障队列分发来的业务消息进行执行,若执行成功,将所述业务消息的执行数据进行指标分析,以得到执行指标,然后将所述故障队列中与该业务消息的消息类型一致的其他业务消息重新推送至步骤二中执行;
18、若执行耗时超过设定的时间阈值,则强制中止所述业务消息的执行,并对所述业务消息的执行数据进行指标分析,以得到执行指标。
19、更进一步的,对重新推送的所述业务消息进行执行计数,若所述故障队列中同一业务消息的计数超过设定的计数阈值,则将所述业务消息永久移出队列,并对所述业务消息做持久化备份处理。
20、更进一步的,所述指标分析为对业务消息的消息执行效率、平均执行时间、执行成功比例、最小执行时间、最大执行时间进行统计并作均值处理;所述执行指标为一个消息类型中的业务消息的消息执行效率、平均执行时间、执行成功比例、最小执行时间、最大执行时间的均值。
21、进一步的,在所述降级处理中,若所述业务消息的优先级为低优先级,则将所述业务消息移至故障队列中。
22、有益效果
23、本专利技术的优点在于:
24、1.通过消息类型与执行指标的相结合用于协调各消息任务执行的顺序,并通过动态调整各任务的执行队列降低阻塞风险,从而达到了提高整体消息消费效率的目的。
25、2.本专利技术的优先级队列相比于传统队列可提高队列的利用率,可让业务处理更高效,避免了极端情况下某消息类型的队列阻塞、其他类型的消息队列空闲等情况。在提高利用率的同时,也有动态监控调度,防止某个队列或者某个消息出现问题一直阻塞正常消息的消费,降低引发雪崩的风险。
本文档来自技高网...【技术保护点】
1.一种基于高利用率非阻断队列处理IOT设备数据的方法,其特征在于,该方法包括以下步骤:
2.根据权利要求1所述的一种基于高利用率非阻断队列处理IOT设备数据的方法,其特征在于,在步骤二中,若查询不到所述业务消息所对应的消息优先级,则将所述业务消息调度到中优先级队列;若查询到所述业务消息所对应的消息优先级,则将所述业务消息调度到指定优先级的队列中。
3.根据权利要求2所述的一种基于高利用率非阻断队列处理IOT设备数据的方法,其特征在于,所述队列包括高优先级队列、中优先级队列、低优先级队列和慢速处理队列。
4.根据权利要求1所述的一种基于高利用率非阻断队列处理IOT设备数据的方法,其特征在于,在步骤三中,位于同一队列中的所述业务消息按先进先出的顺序进行消息分发。
5.根据权利要求1或4所述的一种基于高利用率非阻断队列处理IOT设备数据的方法,其特征在于,在进行消息分发时,首先将所述队列中的业务消息调度到空闲队列工作线程中,然后再将所述业务消息分发至消费端。
6.根据权利要求1所述的一种基于高利用率非阻断队列处理IOT设备数
7.根据权利要求6所述的一种基于高利用率非阻断队列处理IOT设备数据的方法,其特征在于,所述后续补偿处理具体为:
8.根据权利要求7所述的一种基于高利用率非阻断队列处理IOT设备数据的方法,其特征在于,对重新推送的所述业务消息进行执行计数,若所述故障队列中同一业务消息的计数超过设定的计数阈值,则将所述业务消息永久移出队列,并对所述业务消息做持久化备份处理。
9.根据权利要求7所述的一种基于高利用率非阻断队列处理IOT设备数据的方法,其特征在于,所述指标分析为对业务消息的消息执行效率、平均执行时间、执行成功比例、最小执行时间、最大执行时间进行统计并作均值处理;所述执行指标为一个消息类型中的业务消息的消息执行效率、平均执行时间、执行成功比例、最小执行时间、最大执行时间的均值。
10.根据权利要求6所述的一种基于高利用率非阻断队列处理IOT设备数据的方法,其特征在于,在所述降级处理中,若所述业务消息的优先级为低优先级,则将所述业务消息移至故障队列中。
...【技术特征摘要】
1.一种基于高利用率非阻断队列处理iot设备数据的方法,其特征在于,该方法包括以下步骤:
2.根据权利要求1所述的一种基于高利用率非阻断队列处理iot设备数据的方法,其特征在于,在步骤二中,若查询不到所述业务消息所对应的消息优先级,则将所述业务消息调度到中优先级队列;若查询到所述业务消息所对应的消息优先级,则将所述业务消息调度到指定优先级的队列中。
3.根据权利要求2所述的一种基于高利用率非阻断队列处理iot设备数据的方法,其特征在于,所述队列包括高优先级队列、中优先级队列、低优先级队列和慢速处理队列。
4.根据权利要求1所述的一种基于高利用率非阻断队列处理iot设备数据的方法,其特征在于,在步骤三中,位于同一队列中的所述业务消息按先进先出的顺序进行消息分发。
5.根据权利要求1或4所述的一种基于高利用率非阻断队列处理iot设备数据的方法,其特征在于,在进行消息分发时,首先将所述队列中的业务消息调度到空闲队列工作线程中,然后再将所述业务消息分发至消费端。
6.根据权利要求1所述的一种基于高利用率非阻...
【专利技术属性】
技术研发人员:陈廉,陈驹远,张皓,杨光,谭添戈,
申请(专利权)人:广西东信数建信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。