一种升级状态数据管理装置、系统和方法与流程

文档序号:11877981阅读:221来源:国知局
一种升级状态数据管理装置、系统和方法与流程

本发明涉及通信领域,尤其涉及一种升级状态数据管理装置、系统和方法。



背景技术:

随着移动通信以及移动互联网的快速发展,移动终端的持有量在不断上升,大量的移动终端的用户进行的FOTA(Firmware Over-The-Air,固件空中升级)升级,FOTA系统收集的用户终端的升级状态数据也随之大量增长。这种情况下,部分升级状态数据的上报相对会有所延迟,并且升级状态数据采用的是按阈值进行分表存储的策略,当系统处于持续大并发的情况下,由于产生的升级状态数据量较大,因此,分表很容易在短时间内到达阈值,则MOM(Message-Oriented Middleware,面向消息的中间件)中间件产生新的分表,使得终端进行升级处理过程中,针对一次升级处理所产生的升级状态数据不能存储到其对应的分表下,造成升级状态数据存储准确性的下降,进而造成升级状态数据的统计失真。



技术实现要素:

本发明的主要目的在于提出一种升级状态数据管理装置、系统和方法,旨在解决无法将升级状态数据存储到对应的位置,使得存储的升级状态数据准确性下降,造成升级状态数据统计失真的问题。

为实现上述目的,本发明实施例提供一种升级状态数据管理装置,包括:

数据存储处理模块,用于获取升级状态数据,并根据升级状态数据的上报时间是否超出预设时间将升级状态数据存储到正常分表或异常表中;

数据回写处理模块,用于将异常表中存储的升级状态数据按照预设规则回写到升级状态数据对应的正常分表中,并将正常分表在分表索引表中的统计状态标记为统计失效;

数据统计处理模块,用于对标记为统计失效的正常分表进行升级状态数据统计处理。

其中,数据存储处理模块还用于:在将升级状态数据存储到异常表中之前,判断异常表中是否存在与升级状态数据相同会话身份标识的数据;

当异常表中不存在与升级状态数据相同会话身份标识的数据时,从升级状态数据对应的会话身份标识中解析出搜包时间,将搜包时间和升级状态数据对应存储到异常表中;

当异常表中存在与升级状态数据相同会话身份标识的数据时,将升级状态数据相对于相同会话身份标识数据的增量存储到异常表中对应位置。

其中,会话身份标识信息依次包括:当前服务器网络协议字段,当前时间戳字段,5位随机字符字段,1位随机数字厂商字段,终端型号字段和搜包时间字段。

其中,数据回写处理模块还用于:将异常表中的升级状态数据对应的搜包时间与预设时间进行匹配,从而确定升级状态数据对应的正常分表;将升级状态数据存储到正常分表中。

进一步的,本发明实施例提供了一种升级状态数据管理系统,包括上述升级数据管理装置。

进一步的,本发明实施例还提供了一种升级状态数据管理方法,包括:

获取升级状态数据,根据升级状态数据的上报时间是否超出预设时间将升级状态数据存储到正常分表或异常表中;

将异常表中存储的升级状态数据按照预设规则回写到升级状态数据对应的正常分表中,并将正常分表在分表索引表中的统计状态标记为统计失效;

对标记为统计失效的正常分表进行升级状态数据统计处理。

其中,将升级状态数据存储到异常表中之前,还包括:判断异常表中是否存在与升级状态数据相同会话身份标识的数据;

当异常表中不存在与升级状态数据相同会话身份标识的数据时,从升级状态数据对应的会话身份标识中解析出搜包时间,将搜包时间和升级状态数 据对应存储到异常表中;

当异常表中存在与升级状态数据相同会话身份标识的数据时,将升级状态数据相对于相同会话身份标识数据的增量存储到异常表中对应搜包时间位置。

其中,会话身份标识信息依次包括:当前服务器网络协议字段,当前时间戳字段,5位随机字符字段,1位随机数字厂商字段,终端型号字段和搜包时间字段。

其中,升级状态队列处理装置将异常表中的升级状态数据按照预设规则回写到其对应的正常分表中,包括:将异常表中的升级状态数据对应的搜包时间与预设时间进行匹配,从而确定异常表中的升级状态数据对应的正常分表;将升级状态数据存储到正常分表中。

其中,对标记为统计失效的正常分表进行升级状态数据统计处理,包括:

清除标记为统计失效的正常分表对应的升级状态数据统计记录后,对正常分表进行升级状态数据统计处理。

本发明实施例提供的升级状态数据管理装置、系统和方法,通过获取升级状态数据,并判断该升级状态数据的上报时间是否超出预设时间,根据判断结果将升级状态数据存储到正常分表或异常表中;然后将异常表中的升级状态数据按照预设规则存储到其对应的正常分表中,并将正常分表在分表索引表中的统计状态标记为统计失效;再对标记为统计失效的正常分表进行升级状态数据统计处理。保证升级过程中的升级状态数据都可以存储到其对应的正常分表中,从而提高了升级状态数据存储的完整性和准确性,同时也提升了升级状态数据统计的准确性。

附图说明

图1实现本发明优选实施例的服务器示意图;

图2为实现本发明优选实施例的FOTA系统示意图;

图3为实现本发明优选实施例的FOTA系统升级数据流向图;

图4为实现本发明优选实施例的FOTA系统的中间件中的分表生成示意图;

图5为实现本发明实施例一的升级状态数据管理装置示意图;

图6为本发明实施例一的升级状态数据管理系统示意图;

图7为本发明实施例二的升级状态数据管理方法流程图;

图8为本发明实施例三的升级状态数据管理系统中对升级状态数据进行存储处理的流程图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。

如图1所示,为实现本发明各个实施例一个可选的服务器的结构示意图,该服务器至少包括:输入输出(IO)总线11、处理器12、存储器13、内存14和通信装置15。其中,

输入输出(IO)总线11分别与自身所属的服务器的其它部件(处理器12、存储器13、内存14和通信装置15)连接,并且为其它部件提供传送线路。

处理器12通常控制自身所属的服务器的总体操作。例如,处理器12执行计算和确认等操作。其中,处理器12可以是中央处理器(CPU)。

存储器13存储处理器可读、处理器可执行的软件代码,其包含用于控制处理器12执行本文描述的功能的指令(即软件执行功能)。

内存14,一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE),RAM是其中最重要的存储器。内存14是计算机中重要的部件之一,它是与CPU12进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行的,其作用是用于暂时存放CPU12中的运算数据,以及与硬盘等外部存储器交换的数据,只要计算机在运行中,CPU12就会把需要运算的数据调到内存中进行运算,当运算完成后CPU12 再将结果传送出来,内存的运行也决定了计算机的稳定运行。

通信装置15,通常包括一个或多个组件,其允许自身所属的服务器与无线通信系统或网络之间的无线电通信。

图2为实现本发明各个实施例的FOTA系统示意图,请参见图2,该FOTA系统应至少包括如下子系统模块:FOTA客户端31,即终端;FOTA服务器32,该FOTA服务器32可以是图1所示的服务器,在升级过程中,FOTA服务器32通过通信装置15与终端及系统中的Redis(key-value数据库,键值数据库)集群33等其他设备间进行通信,通过存储器13存储终端发来的升级状态数据等其他数据,通过处理器12和内存协调配合完成升级处理;Redis集群33,即Redis分布式缓存系统;MOM中间件34,该MOM中间件34可以是分布式延迟异步持久化中间件;数据库35,即数据存储系统;后台运营管理系统36,即数据统计查询系统;运营人员37。具体的,终端的FOTA升级状态数据流向如图3所示,FOTA服务器321和FOTA服务器322接收到终端发送的升级状态数据后,通过Redis集群33和MOM中间件34的处理,将该升级状态数据存储到数据库35中。另外,如附图4所示,当FOTA系统处于持续大并发的情况下,由于产生的升级状态数据量较大,因此,分表很容易在短时间内到达阈值,则MOM中间件34会调控数据库35中的分布式文件存储数据库(mongodb)产生新的分表,存储后续的升级状态数据。

这里描述的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施。

基于上述FOTA系统和终端的FOTA升级数据流向,为了使本技术领域的人员更好地理解本发明方案,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例;需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

实施例一:

本实施例提出一种升级状态数据管理装置,请参见图5,具体包括数据存储处理模块41,用于获取升级状态数据,并根据升级状态数据的上报时间是否超出预设时间将升级状态数据存储到对应的正常分表或异常表中;数据回写处理模块42,用于将异常表中的存储的升级状态数据按照预设规则回写到其对应的正常分表中,并将正常分表在分表索引表中的统计状态标记为统计失效;数据统计处理模块43,用于对标记为统计失效的正常分表进行升级状态数据统计处理。本实施例中提供的数据存储处理模块41的功能具体可以由MOM中间件34中的数据持久处理装置实现,数据回写处理模块42的功能具体可以由MOM中间件34中的升级状态队列处理装置实现,数据统计处理模块43的功能具体可以由后台运营管理系统36来实现。

具体的,数据存储处理模块41,用于从服务器获取升级状态数据,并判断升级状态数据的上报时间是否超出预设时间,根据判断结果将升级状态数据存储到其对应的正常分表或存储到异常表中,包括:在升级过程中,终端将需要反馈给FOTA服务器32的升级状态数据发送给FOTA服务器32,FOTA服务器32将终端发送的升级状态数据存储到存储器13中,然后在处理器12和内存14的调控下进行后续处理。数据存储处理模块41从FOTA服务器32获取升级状态数据,获取到升级状态数据后先判断该升级状态数据是否为第一个升级交互数据,若该升级状态数据不是第一个升级交互数据,则判断该升级状态数据的上报时间是否超出预设时间。若该升级状态数据为第一个升级交互数据,则判断该升级状态数据是否为协议交互错误数据,具体可以通过该升级状态数据中是否携带协议交互错误标识来判断其是否为协议交互错误数据,比如判断返回信息(resultMsg)字段中的信息前缀是否存在协议交互错误标识FOTA_ERROR字符串,若存在,则该升级状态数据为协议交互错误数据,将该升级状态数据存储到升级状态错误表中;当不存在协议交互错误标识FOTA_ERROR字符串时,则进一步判断上报时间是否超出了预设时间。该预设时间为当前正在进行数据存储的正常分表允许升级状态数据存储的时间。

进一步的,数据存储处理模块41还用于:当上报时间未超出预设时间 时,将升级状态数据存储到其对应的正常分表中;当上报时间超出预设时间时,将升级状态数据存储到异常表。

具体的,若该升级状态数据的上报时间未超出预设时间,则将该升级状态数据增加当前正常分表的分表名字段存储到当前正在进行数据存储的正常分表中;若超出了预设时间,则将该升级状态数据存储到异常表中,该异常表用于存储所有上报时间超出预设时间的升级状态数据。

进一步的,数据存储处理模块41还用于:在将升级状态数据存储到异常表中之前,判断异常表中是否存在与升级状态数据相同会话身份标识(sessionID)的数据,当不存在时,从升级状态数据对应的会话身份标识中解析出搜包时间,将搜包时间和升级状态数据对应存储到异常表中。

具体的,若该升级状态数据的上报时间超出了预设时间,需要将该升级状态数据存储到异常表中,则先判断在异常表中是否存在与该升级状态数据相同sessionID的数据,若存在,则将该升级状态数据的增量存储到该异常表中;若不存在,则将该升级状态数据存储到异常表中,并且从sessionID中解析出该升级状态数据对应的搜包时间,将该搜包时间同时存储到该异常表中与该升级状态数据对应的位置。

进一步的,sessionID,即会话身份标识信息依次包括:当前服务器网络协议(IP)字段,当前时间戳字段,5位随机字符字段,1位随机数字厂商字段,终端型号字段和搜包时间字段。

具体的,在终端与FOTA服务器32交互的整个过程中,唯一标识为sessionID,即在所有的升级状态:搜包,下载,升级,sessionID都为相同的,要使升级状态数据存储到其对应的正常分表中,就需要升级状态数据在上报时,无论上报时间是否超时都可找到其对应的正常分表,继而进行正确的升级状态的更新处理,保证原生的升级状态数据的准确。在当前的分表存储策略中,索引表存储了升级状态记录在当前分表的开始和结束的时间点,因此,这2个时间相关的字段可以作为升级状态的更新处理定位标记,当前的sessionID的生成算法为:base64(当前服务器IP-当前时间戳-5位随机字符-1位随机数字),即在当前的sessionID中缺少了对分表的定位的相应标识。 本实施例提供的升级状态数据升级装置,优化sessionID的生成算法,将该算法改进为:base64(当前服务器IP-当前时间戳-5位随机字符-1位随机数字-厂商-终端型号-搜包时间),该优化后的sessionID依然可作为升级交互过程中的唯一标识。

进一步的,数据回写处理模块还用于将异常表中存储的升级状态数据对应的搜包时间与预设时间进行匹配,从而确定异常表中的升级状态数据对应的正常分表;将升级状态数据存储到正常分表中。

具体的,为保证升级状态数据存储的准确性,需要将存储到异常表中的升级状态数据存储到其对应的正常分表中,其具体过程包括:MOM中间件的负责管理集群中所有服务器并提供查询接口的主服务节点(master节点)启动升级状态队列处理器的运行状况监听器,当系统为空闲状态,并且在异常表中存在异常数据时,根据该异常表中存储的升级状态数据对应的搜包时间与预设时间进行匹配,从而来确定其对应的正常分表。确定异常表中存储的升级状态数据对应的分表,可以是先获取异常表中所有搜包时间中的最小搜包时间与最大搜包时间,比如最小搜包时间为a,最大搜包时间为b,则将时间范围[a,b]作为回写时间范围,即进行后续回写处理的数据范围。然后从分表索引表中获取开始和结束时间在回写时间范围内的索引记录列表。当系统为空闲时获取索引记录列表中的分表名以及开始和结束时间,从异常表中,获取该搜包开始和结束时间范围的升级状态数据列表,判断升级状态数据列表中的升级状态数据在该分表名对应的正常分表中是否存在相同的sessionID的数据,当存在时则将该升级状态数据增量更新到该正常分表中;当不存在时,将该升级状态数据新增到该正常分表中;然后将分表索引表中该存储了异常表中的升级状态数据的正常分表的索引记录标记为统计失效。

数据统计处理模块43对标记为统计失效的正常分表进行升级状态数据统计处理包括:清除标记为统计失效的正常分表对应的升级状态数据统计记录后,对正常分表进行升级状态数据统计处理。该升级状态统计数据包括存储升级状态数据的正常分表的分表名对应的统计中间数据和该统计之间数据对应的统计处理中间表的已统计状态。当清除掉上述升级状态数据的统计 记录后,从分表索引表中获取为未统计状态的正常分表列表,进行数据统计处理。

本实施例提供的升级状态数据统计装置,通过数据存储处理模块获取到升级状态数据后,判断该升级状态数据的上报时间是否超出预设时间,根据判断结果将升级状态数据存储到正常分表或异常表中;然后由数据回写处理模块将异常表中的升级状态数据存储到其对应的正常表中,并将正常分表在分表索引表中的统计状态标记为统计失效;当需要对升级状态数据进行统计处理时,由数据统计处理模块对标记为统计失效的正常分表进行升级状态数据统计处理。保证升级交互过程中的升级状态数据可以存储到其对应的正常分表中,从而提高了升级状态数据存储的完整性和准确性,同时也提升了升级状态数据统计的准确性。

本实施例还提供一种升级状态数据管理系统,请参见图6,包括上述升级状态数据管理装置,本实施例提供的升级状态数据统计系统,通过升级状态数据管理装置获取到升级状态数据后,判断该升级状态数据的上报时间是否超出预设时间,根据判断结果将升级状态数据存储到正常分表或异常表中;然后将异常表中的升级状态数据回写到其对应的正常表中,并将正常分表在分表索引表中的统计状态标记为统计失效;当需要对升级状态数据进行统计处理时,再对标记为统计失效的正常分表进行升级状态数据统计处理。保证了升级交互数据可以存储到其对应的正常分表中,从而提高了升级状态数据存储的完整性和准确性,同时也提升了升级状态数据统计的准确性。

实施例二:

本实施例提出一种升级状态数据管理方法,请参见图7,包括:

步骤S101,获取升级状态数据,根据升级状态数据的上报时间是否超出预设时间将升级状态数据存储到正常分表或异常表中。

具体的,接收到服务器发送的升级状态数据后,先判断该升级状态数据是否为第一个升级交互数据,若该升级状态数据不是第一个升级交互数据,则判断该升级状态数据的上报时间是否超出预设时间。若该升级状态数据为第一个升级交互数据,则判断该升级状态数据是否为协议交互错误数据,具体可以通过该升级状态数据中是否携带协议交互错误标识来判断其是否为 协议交互错误数据,比如判断返回信息(resultMsg)字段中的信息前缀是否存在协议交互错误标识FOTA_ERROR字符串,若存在,则该升级状态数据为协议交互错误数据,将该升级状态数据存储到升级状态错误表中;当不存在FOTA_ERROR字符串时,则进一步判断上报时间是否超出了预设时间。该预设时间为当前正在进行数据存储的正常分表允许升级状态数据存储的时间。

进一步的,判断升级状态数据的上报时间是否超出预设时间,根据判断结果将升级状态数据存储到正常分表或异常表中,包括:当上报时间未超出预设时间时,将升级状态数据存储到其对应的正常分表中;当上报时间超出预设时间时,将升级状态数据存储到异常表。

具体的,若该升级状态数据的上报时间未超出预设时间,则将该升级状态数据增加当前正常分表的分表名字段存储到当前正在进行数据存储的正常分表中;若超出了预设时间,则将该升级状态数据存储到异常表中,该异常表用于存储所有上报时间超出预设时间的升级状态数据。

进一步的,将升级状态数据存储到异常表中之前,还包括:判断异常表中是否存在与升级状态数据相同会话身份标识的数据,当不存在时,从升级状态数据对应的会话身份标识中解析出搜包时间,将搜包时间和升级状态数据对应存储到异常表中;当存在时,将升级状态数据相对于相同会话身份标识数据的增量存储到异常表中对应搜包时间位置。

具体的,若该升级状态数据的上报时间超出了预设时间,需要将该升级状态数据存储到异常表中,则先判断在异常表中是否存在与该升级状态数据相同sessionID的数据,若存在,则将该升级状态数据的增量存储到该异常表中;若不存在,则将该升级状态数据存储到异常表中,并且从sessionID中解析出该升级状态数据对应的搜包时间,将该搜包时间同时存储到该异常表中与该升级状态数据对应的位置。

进一步的,sessionID,即会话身份标识信息依次包括:当前服务器IP字段,当前时间戳字段,5位随机字符字段,1位随机数字厂商字段,终端型号字段和搜包时间字段。

具体的,在终端与FOTA服务器32交互的整个过程中,唯一标识为sessionID,即在所有的升级状态:搜包,下载,升级,sessionID都为相同的,要使升级状态数据存储到其对应的正常分表中,就需要升级状态数据在上报时,无论上报时间是否超时都可找到其对应的正常分表,继而进行正确的升级状态的更新处理,保证原生的升级状态数据的准确。在当前的分表存储策略中,索引表存储了升级状态记录在当前分表的开始和结束的时间点,因此,这2个时间相关的字段可以作为升级状态的更新处理定位标记,当前的sessionID的生成算法为:base64(当前服务器IP-当前时间戳-5位随机字符-1位随机数字),即在当前的sessionID中缺少了对分表的定位的相应标识。本实施例提供的升级状态数据升级装置,优化sessionID的生成算法,将该算法改进为:base64(当前服务器IP-当前时间戳-5位随机字符-1位随机数字-厂商-终端型号-搜包时间),该优化后的sessionID依然可作为升级交互过程中的唯一标识。

步骤S102,将异常表中的升级状态数据按照预设规则回写到其对应的正常分表中,并将正常分表标记为统计失效正常分表。

具体的,为使所有升级状态数据都能存储到其对应的正常分表中,需要将异常表中的升级状态数据存储到其对应的正常分表中。

进一步的,将异常表中的升级状态数据按照预设规则回写到其对应的正常分表中包括:将异常表中升级状态数据对应的搜包时间与预设时间进行匹配,从而确定异常表中的升级状态数据对应的正常分表;将升级状态数据存储到正常分表中。

具体的,为保证升级状态数据存储的准确性,需要将存储到异常表中的升级状态数据存储到其对应的正常分表中,其具体过程包括:MOM中间件的master节点启动升级状态队列处理器的运行状况监听器,当系统为空闲状态,并且在异常表中存在异常数据时,根据该异常表中存储的升级状态数据对应的搜包时间与预设时间进行匹配,从而来确定其对应的正常分表。确定异常表中存储的升级状态数据对应的分表,可以是先获取异常表中所有搜包时间中的最小搜包时间与最大搜包时间,比如最小搜包时间为a,最大搜包 时间为b,则将时间范围[a,b]作为回写时间范围,即进行后续回写处理的数据范围。然后从分表索引表中获取开始和结束时间在回写时间范围内的索引记录列表。当系统为空闲时获取索引记录列表中的分表名以及开始和结束时间,从异常表中,获取该搜包开始和结束时间范围的升级状态数据列表,判断升级状态数据列表中的升级状态数据在该分表名对应的正常分表中是否存在相同的sessionID的数据,当存在时则将该升级状态数据增量更新到该正常分表中;当不存在时,将该升级状态数据新增到该正常分表中;然后将分表索引表中该存储了异常表中的升级状态数据的正常分表的索引记录标记为统计失效。

步骤S103,升级状态数据统计装置对标记为统计失效的正常分表进行升级状态数据统计处理。

具体的,升级状态数据统计装置对标记为统计失效的正常分表进行升级状态数据统计处理,包括:清除标记为统计失效的正常分表对应的升级状态数据统计记录后,对正常分表进行升级状态数据统计处理。该升级状态统计数据包括存储升级状态数据的正常分表的分表名对应的统计中间数据和该统计之间数据对应的统计处理中间表的已统计状态。当清除掉上述升级状态数据的统计记录后,从分表索引表中获取为未统计状态的正常分表列表,进行数据统计处理。

本实施例提供的升级状态数据统计系统方法,通过获取升级状态数据,根据该升级状态数据的上报时间是否超出预设时间将升级状态数据存储到正常分表或异常表中;然后将异常表中的升级状态数据存储到其对应的正常表中,并将正常分表在分表索引表中的统计状态标记为统计失效;当需要对升级状态数据进行统计处理时,再对统计失效的正常分表进行升级状态数据统计处理。保证升级交互数据可以存储到其对应的正常分表中,从而提高了升级状态数据存储的完整性和准确性,同时也提升了升级状态数据统计的准确性。

实施例三:

本实施例对升级状态数据管理方法分步进行详细描述,其具体包括:

第一步,调整FOTA协议服务器sessionID生成算法,并向升级会话配 置sessionID。

具体地,在FOTA客户端与FOTA服务器交互的整个过程中,唯一标识为sessionID,即在所有的升级状态:搜包,下载,升级,sessionID都为相同的,解决准确性的问题之一,就是在升级状态数据在上报时,无论是否超时都可找到所对应的分表,继而进行正确的升级状态的更新处理,保证原生的升级状态数据的准确。在当前的分表存储策略中,索引表存储了升级状态记录在当前分表的开始和结束的时间点,因此,这2个时间相关的字段可以作为升级状态的更新处理定位标记,当前的sessionID的生成算法为:base64(当前服务器IP-当前时间戳-5位随机字符-1位随机数字),在当前的sessionID中缺少了对分表的定位的相应标识。优化sessionID的生成算法,将该算法改进为:base64base64(当前服务器IP-当前时间戳-5位随机字符-1位随机数字-厂商-终端型号-搜包时间)。经过base64(当前服务器IP-当前时间戳-5位随机字符-1位随机数字)处理的部分已保证了唯一性,因此,优化后的整体sessionID依然保证了唯一性,可作为唯一标识。因此,优化后的整体sessionID依然保证了唯一性,仍然可作为唯一标识。而且通过该sessionID能准确定位到每条升级状态数据对应的分表,不会使升级状态数据丢失,保证了存储升级状态数据的准确性,使得升级状态数据的统计更准确。

第二步,调整MOM中间件的数据持久化处理逻辑,对升级状态数据进行存储,处理流程请参见图8,具体包括:

步骤S201,获取升级状态数据;

具体的,MOM中间件从FOTA服务器获取终端发送的升级状态数据,该升级状态数据包括升级协议交互开始数据、升级协议交互完成数据和升级下载回调数据,其中升级协议交互开始数据和升级协议交互完成数据在MOM中间件中进行了合并之后,进行了插入持久化处理。而升级下载回调数据,由于在实际过程中,是等待下载完成后的上报数据,因此,相对会有所延迟,并且升级状态数据采用的是按阈值进行分表存储的策略,如附图3所示,当系统处于持续大并发的情况下,由于产生的升级状态数据量较大,因此,分表很容易在短时间内到达阈值,则MOM中间件产生新的分表,而终端进行升级包下载过程中,并未上报最后的下载回报数据,当下载完成,上报数据后,由于无法定位到相应的前2个升级状态数据所在的分表,造成 相应的升级状态数据丢失,使得存储数据准确性下降,造成升级数据的统计失真。所以在升级状态数据的存储过程中,需要制定策略将一次升级处理过程中的三次交互数据都存储到其对应的分表中,以保证升级状态数据存储的完整性和准确性。

步骤S202,判断升级状态数据是否为第一个交互数据,若为是,跳转到步骤S203;若为否,跳转到步骤S205;

具体的,当获取到升级状态数据后先判断该升级状态数据是否为第一个升级交互数据,若该升级状态数据不是第一个升级交互数据,则判断该升级状态数据的上报时间是否超出预设时间。若该升级状态数据为第一个升级交互数据,则判断在resultMsg字段中的信息前缀是否存在FOTA_ERROR字符串。

步骤S203,判断是否存在FOTA_ERROR标识字符串,若存在,跳转到步骤S204;若不存在,跳转到步骤S205;

具体的,判断在resultMsg字段中的信息前缀是否存在FOTA_ERROR字符串是为确定该升级状态数据是否为协议交互错误数据,若存在FOTA_ERROR字符串,则说明该升级状态数据为协议交互错误数据时,将该升级状态数据存储到升级状态错误表中;当不存在FOTA_ERROR字符串时,则进一步判断上报时间是否超出了预设时间。

步骤S204,路由存储到升级状态错误表;

具体的,当升级状态数据为协议交互错误数据时,将该升级状态数据存储到升级状态错误表中。

步骤S205,判断上报时间是否超过预设时间,若否,跳转到步骤S206;若否,跳转到步骤S208;

具体的,预设时间为当前正在进行数据存储的正常分表允许升级状态数据存储的时间。若该升级状态数据的上报时间未超出预设时间,则将该升级状态数据增加当前正常分表的分表名字段存储到当前正在进行数据存储的正常分表中;若超出了预设时间,则将该升级状态数据存储到异常表中,该异常表用于存储所有上报时间超出预设时间的升级状态数据。

步骤S206,从回溯队列获取相应的分表名,跳转到步骤S207;

具体的,将升级状态数据存储到正常分表中时,先从回溯队列中获取其 对应的分表名。

步骤S207,增加当前分表名字段,将升级状态数据一起写入相应的支持分表。

步骤S208,将写入操作,路由到异常表;然后跳转到步骤S209;

具体的,当升级状态数据的上报时间超过预设时间时,将存储处理路由到异常表。

步骤S209,解析该sessionID,将搜包时间解析出来,跳转到步骤S210;

具体的,若该升级状态数据的上报时间超出了预设时间,需要将该升级状态数据存储到异常表中,则将写入操作路由到异常表中,并解析该升级状态数据对应的sessionID,得到其搜包时间。

步骤S210,判断在异常中是否存在同sessionID的升级状态数据,若存在,跳转到步骤S211;若不存在,跳转到步骤S212;

具体的,在将升级状态数据存储到异常表中之前,先判断在异常表中是否存在与该升级状态数据相同sessionID的数据,当存在时,只需要将升级状态数据增量存储到异常表中;当不存在时,需要将该升级状态数据和其对应的搜包时间设置到异常表中。

步骤S211,将该升级状态数据增量更新持久化到异常表中;

步骤S212,将升级状态数据以及搜包时间新增持久化到异常表中。

具体的,将升级状态数据和与其对应的搜包时间按照对应关系存储到异常表中作为该异常表中的一条记录。

通过上述方法,将正常的升级状态数据和延迟异常的升级状态数据进行分离存储,保障了系统的升级状态数据存储的完整性。

第三步,对延迟异常的升级状态数据进行回写处理,即将异常表中的升级状态数据回写到其对应的正常分表中,处理过程具体包括:

步骤S301,MOM中间件的master节点启动升级状态队列处理器的运行状况监听器;

具体的,MOM中间件的master节点启动升级状态队列处理器的运行状况监听器,检测系统是否空闲,并进行后续的数据回写处理。

步骤S302,判断系统是否为空闲状态,若是,跳转到步骤S303;若否,返回步骤S301;

具体的,判断系统事故为空闲状态,即判断终端的升级处理是否已经结束;当结束的时候再去解析升级状态数据的回写处理。

步骤S303,判断异常表是否存在数据,若是,跳转到步骤S304;若否,返回步骤S301;

具体的,判断升级过程中是否有升级状态数据存储到异常表中,若有,则需要进行回写处理;若没有,则不需要进行回写处理。

步骤S304,获取异常数据的最小搜包时间与最大搜包时间,划定本次回写的数据范围,跳转到步骤S305;

具体的,获取升级状态数据的最小搜包时间与最大搜包时间,划定本次回写的数据范围,若最小搜包时间为a,最大搜包时间为b,则回写范围是[a,b]。

步骤S305,获取开始和结束时间在回写时间范围的索引记录列表,遍历处理索引记录列表;

具体的,在分表索引表中查找开始时间和结束时间在该回写范围内的分表索引记录,得到分表索引记录列表,再进行后续回写处理。

步骤S306,判断分表索引记录列表中是否还有未遍历数据,若是,跳转到步骤S307;若否,返回步骤S301;

具体的,判断分表索引记录列表中是否还有正常分表对应的记录未进行数据的回写处理。

步骤S307,判断系统是否为空闲状态,若是,跳转到步骤S308;若否,返回步骤S301;

具体的,确定系统为空闲状态的时候,进行后续回写处理处理。

步骤S308,获取索引记录的分表名以及开始和结束时间,跳转到步骤S309;

具体的,选定索引记录列表中的一条索引记录,然后获取该索引记录中的分表名,及其中的开始时间和结束时间。

步骤S309,获取该开始和时间范围的升级状态数据列表,遍历该列表;

具体的,对应上述一条索引记录中的开始时间和结束时间,在异常表中获取搜包时间在该开始时间和结束时间内的升级状态数据。

步骤S310,判断升级状态数据列表中是否还有未遍历数据,若是,跳 转到步骤S311;若否,跳转到步骤S314;

具体的,确定异常表中与该索引记录对应的升级状态数据都被查找到了,以保证异常表中的搜有升级状态数据都能存储到对应正常分表中。

步骤S311,判断正常分表中是否存在相同的sessionID的数据,若是,跳转到步骤S312;若否,跳转到步骤S313;

具体的,当将异常表中的数据存储到其对应的正常分表时,先判断正常分表中是否有该升级状态数据相同sessionID的数据。

步骤S312,将该升级状态数据增量更新到正常分表中,返回步骤S310;

具体的,当正常分表中存在与该升级状态数据相同sessionID的数据时,将该升级状态数据的增量存储到其对应的正常分表中。

步骤S313,将该升级状态数据新增到该分表中,返回步骤S310;

具体的,当正常分表中不存在与该升级状态数据相同sessionID的数据时,将该升级状态数据存储到其对应的正常分表中。

步骤S314,将该分表索引记录标记为统计失效。

具体的,该正常分表进行回写处理后,其存储的数据改变了,需要将存储了异常表中的升级状态数据在分表索引表中的统计状态标记为统计失效,重新进行数据统计处理。

步骤S4,对完成回写的升级状态数据进行重算处理,处理过程具体包括:

步骤S401,启动后台运营管理系统,定时任务启动,跳转到步骤S402;

具体的,当完成对异常表中的升级状态数据的回写处理后,需要对进行了回写处理的正常分表重新进行数据统计数据。

步骤S402,获取原始数据表的对应分表索引表中统计结果失效的分表名里列表,跳转到步骤S403;

具体的,从分表索引表中获取统计状态为统计结果失效的分表名列表,该分表名对应的分表即为需要进行重新进行数据统计处理的正常分表。

步骤S403,依次循环读取统计结果失效的分表名列表;

具体的,依次循环读取统计结果失效的分表名列表对该分表名列表中的记录一一进行重算处理。

步骤S404,判断分表名列表中是否还有未遍历数据,若是,跳转到步 骤S405;若否,跳转到步骤S409;

具体的,确保分表名列表中的分表名对应的正常表都重新进行了数据统计处理。

步骤S405,获取业务中间报表列表,依次遍历统计处理中间报表列表;

具体的,获取分表名对应的正常分表的业务中间统计数据。

步骤S406,判断业务中间报表列表是否还有未遍历数据,若是,跳转到步骤S407;若否,返回步骤S404;

具体的,确保该业务中间报表列表中的数据都已被清除。

步骤S407,清除该业务中间报表的属于该分表名的统计中间数据,跳转到步骤S408;

具体的,当正常分表中传出的升级状态数据有变化时,说明业务中间报表中其对应的统计中间数据已经不正确了,此时需要清除该业务中间报表的属于该分表名的统计中间数据。

步骤S408,清除该分表索引记录的该统计处理中间表已统计状态;

具体的,清除掉统计中间数据后,将分别索引表中该正常分表对应的统计处理中间表的统计状态。

步骤S409,按各个业务中间表,获取分表索引表中未统计状态的分表列表,跳转到步骤S410;

具体的,当墙出完上述与该正常分表有关的统计信息后,获取未统计状态的正常分表,开始进行数据统计处理。

步骤S410,进行定时数据统计处理。

通过上述处理,实现了对终端升级状态数据统计处理的修正完善,极大提升了用户移动终端的升级状态数据收集的准确性。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运

用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1