一种基于TimeWheel的电表升级方法与流程

文档序号:28548652发布日期:2022-01-19 15:21阅读:113来源:国知局
一种基于TimeWheel的电表升级方法与流程
一种基于timewheel的电表升级方法
技术领域
1.本发明涉及智能技术领域,尤其涉及一种基于timewheel的电表升级方法。


背景技术:

2.电表升级作为电表数据采集系统mdc的一项重要必备功能,主要实现对现场电表进行远程程序升级,解决了以前需要人工到现场进行升级成本高、效率低的问题。由于升级的时间比较长,当现场网络出现不稳定或者其他原因时,可能会出现升级失败的情况,为了保证升级成功率,mdc系统需要对升级失败的电表,在规定的时间间隔后,尝试对电表重新升级。
3.目前的升级流程,由于每只电表的升级进度不一致,所以如果升级失败,在重试升级时,系统会为每只升级失败的电表设置一个定时器,以控制对应的电表在对应时间后进行重新升级。如果升级失败的电表数量比较庞大,则需定时器过多,就会导致系统资源占用严重,甚至出现内存溢出的可能性,大大降低系统的稳定性,且一旦生成了延时任务,系统层面无法取消任务,且无法获知当前系统有多少延时任务等待执行,无法获知单只重试任务还需要等待多久执行,这会在系统层面变成黑匣子,增加系统的不稳定性。
4.为了解决上述问题,有研究者采用时间轮对重新尝试升级的电表进行监控,即将时间轮想象成一个时钟表盘,时钟的指针相当于一个定时器,刻度相当于一个一个存放任务的容器,当指针走到相应的刻度上时,就把当前刻度容器里的任务取出来执行。
5.时间轮替代了定时器,大大节约了系统内存,同时使得系统更加稳定,但其也存在不足,因为时间轮的最大延迟时间只允许是12小时,倘若需尝试重新升级的电表数量很多,当出现延迟时间相当大,或者对时间刻度要求非常精细时,则时间轮的时间刻度会非常庞大,这将会造成资源的浪费。


技术实现要素:

6.鉴于上述问题,本发明的目的在于提供一种占用内存资源少,可确保系统性能稳定,且便于查看系统任务情况,使系统任务透明化,提升系统的易用性的基于timewheel的电表升级方法。
7.为了实现上述目的,本发明的技术方案为:一种基于timewheel的电表升级方法,其特征在于:所述方法包括,
8.s1、从数据库中加载任务,将任务放入时间轮中,初始化时间轮;
9.s2、判断时间轮的分针所指当前刻度容器内是否存在任务,若是,执行s3,若否,执行s4;
10.s3、判断当前任务所对应的时间轮圈数是否为0,若是,异步进行升级任务,若否,将当前任务所对应的时间轮圈数减1,并执行s4;
11.s4、等待n分钟,并针对下个刻度容器再次执行s2操作,直至完成所有任务的升级操作。
12.进一步的,所述方法还包括,在执行s1的将任务放入时间轮前,还进行如下操作:
13.s10、判断任务的下次执行时间是否小于当前时间,若是,则异步执行任务,若否,执行s1中的将任务放入时间轮中这一操作。
14.进一步的,所述时间轮圈数=int((第i块待升级电表的升级设定时间-当前时间)/m),其中,i和m均为不为0的自然数。
15.进一步的,所述方法还包括,在执行完异步进行升级任务后,还将当前被执行完的任务从数据库中删除。
16.进一步的,所述方法还包括,在将当前被执行完的任务从数据库中删除后,还从时间轮的刻度容器中删除当前被执行完的任务。
17.进一步的,所述方法还包括在电表完成升级操作后,判断升级是否成功,若不成功,则安排下次补充升级时间,若升级成功,则返回结束信息。
18.进一步的,所述安排下次补充升级时间具体包括,将失败次数s加1,并判断累加后的失败次数s是否超过阈值,若是,则返回升级任务失败信息,若否,依据重新升级固定间隔时间和累加后的失败次数s设定下次升级时间,s初始取值为1。
19.进一步的,所述依据重新升级固定间隔时间和累加后的失败次数设定下次升级时间具体为,下次升级时间=重新升级固定间隔时间+累加后的失败次数s*1h+确定电表升级失败时所对应的当前时间。
20.进一步的,所述重新升级固定间隔时间取值为2h。
21.进一步的,所述n取值为1,所述m取值60,所述阈值取值5。
22.与现有技术相比,本发明的优点在于:
23.通过将电表的补充升级时间转换成时间轮圈数,能支持任意的补充升级延时时间和精度要求,避免了因补充升级电表数量多或时间轮时间刻度要求精细而导致的时间轮时间刻度庞大,资源浪费问题,减少了资源的占用,提高了升级效率;同时,完成补充升级后对数据库和时间轮中的任务进行对应删除操作,使得任务操作可视化,提高了系统稳定性和易用性,也进一步保障了占用资源的最小化
附图说明
24.图1为本技术采用timewheel进行电表升级操作流程图。
25.图2为本技术中电表升级失败后确定下次升级时间的流程图。
具体实施方式
26.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
27.图1示出了本技术基于timewheel的电表升级方法流程图,如图所示,该基于timewheel的电表升级方法包括,
28.s1、从数据库中加载任务,将任务放入时间轮中,初始化时间轮;
29.s2、判断时间轮的分针所指当前刻度容器内是否存在任务,若是,执行s3,若否,执行s4;
30.s3、判断当前任务所对应的时间轮圈数是否为0,若是,异步进行升级任务,若否,将当前任务所对应的时间轮圈数减1,并执行s4;
31.s4、等待n分钟,并针对下个刻度容器再次执行s2操作,直至完成所有任务的升级操作。
32.在本技术中,该时间轮以分钟为最小刻度,故而,当发现当前刻度容器内无任务时,需等待时间继续往前走,直至走到下一个刻度容器,继续进行是否存在任务的判断。为了便于操作,本实施例中的n取值为1,也即本技术在设置时间刻度时,以1分钟为基准单位。
33.同时,在本技术中,时间轮圈数=int((第i块待升级电表的升级设定时间-当前时间)/m),其中,i和m均为不为0的自然数。其中,本实施例中的m取值60,也即圈数的获取以60分钟为一个换算单位量,当然,此处的“圈”仅是人为定义的一个完整圈,也可根据实际需要,将此处的“圈”定义为时钟走了半圈,也即将时钟走了半圈定义为一个“圈”的单位量,具体还是以实际需要决定。
34.由于系统在升级电表过程中,可能存在故障异常等,导致系统被重启,这就会存在一个现象,电表升级的设定时间小于当前系统重启后对应的时间,比如,电表a、b、c被设定的升级时间分别为1:20、3:20、5:20,而运行过程中系统因某种原因在2点50关闭,然后在3点30重启,对于b表而言,其升级设定时间是3点20,而当前时间却是3点30,显然,对于b表而言,其升级任务操作时间早已经过去,也即b表的升级设定时间小于当前时间。
35.为了解决此类已错过升级时间的电表的升级问题,本技术的方案还包括,在执行s1的将任务放入时间轮前,还进行如下操作:
36.s10、判断任务的下次执行时间是否小于当前时间,若是,则异步执行任务,若否,执行s1中的将任务放入时间轮中这一操作。
37.如前所述,现有的升级操作一旦生成延时升级任务,系统层面就无法取消该任务,但又无法获知当前系统具体有多少等待被执行的延时升级任务,导致系统操作不透明,且过多的任务堆积以及无法删除,导致系统资源被过度占用,影响系统不稳定性。
38.为了解决该问题,本方法还包括,在执行完异步进行升级任务后,还将当前被执行完的任务从数据库中删除和从时间轮的刻度容器中删除。
39.在电表升级过程中,即使是补充升级,依旧可能存在升级失败的问题,为了使得该升级能以最大概率完成绝大部分的电表成功升级操作本技术在电表完成升级操作后,会对该升级操作是否成功进行判断,若不成功,则安排下次补充升级时间,若升级成功,则返回结束信息,具体如图2所示。
40.该安排下次补充升级时间具体包括,将失败次数s加1,判断累加后的失败次数s是否超过阈值,若是,则返回升级任务失败信息,若否,依据重新升级固定间隔时间和累加后的失败次数s设定下次升级时间,也即下次升级时间=重新升级固定间隔时间+累加后的失败次数s*1h+确定电表升级失败时所对应的当前时间。显然,该s初始取值为1,根据实际经验,此处重新升级固定间隔时间取值为2h,阈值取值为5。
41.当电表第一次升级失败时,根据重新升级固定间隔时间计算出相应的圈数,并将失败次数s+1,新建延时升级任务,放入到相应的刻度容器中,等待下次任务重试。当出现第二次或者以上失败的时候,重新升级时间需要结合失败次数来计算,失败次数越多,则重试间隔时间越长,也即如上表述的,下次升级时间=重新升级固定间隔时间+累加后的失败次
数s*1小时+确定电表升级失败时所对应的当前时间,当失败次数大于设置的阈值时,不再进行重试,通知客户升级失败。
42.本技术的方法将升级任务放入到时间轮的刻度容器同时,需要在数据库中持久化一份,在任务取出执行的时候,从数据库中删除。任务在数据库中记录下次的执行时间。当程序出错或者被关闭,重新启动初始化时间轮时,从数据库中加载所有任务,当发现下次执行时间小于当前时间时,立即执行升级任务,当下次执行时间大于当前时间时,根据下次执行时间与当前时间的差值计算出圈数以及刻度位置,将任务放入时间轮中,如此,如果要取消某只电表的升级任务,只需要找到相应的任务,删除即可,使得所有任务可视。
43.同时,时间轮以及时间轮圈数的采用,使得即使存在多个需要补充升级的电表,也只需要采用时间轮这一个定时器即可完成,且不限待补充升级电表数量的多少,降低了系统使用资源,提升了系统性能。
44.尽管已经示出和描述了本发明的实施例,本领域技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变形,本发明的范围由权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1