发明内容
基于此,有必要针对上述技术问题,提供一种能够提高解压效率的账单文件解压方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种账单文件解压方法,所述方法包括:
获取用于接收账单邮件的邮箱地址,所述邮箱地址对应于多个账号信息对应的账单邮件,所述账单邮件用于获取压缩的账单文件;
获取多个解压节点组成的哈希环,所述哈希环是基于一致性哈希算法生成的;
基于所述一致性哈希算法,将所述邮箱地址发送到哈希环中的目标解压节点;
所述目标解压节点基于所述账号信息获取所述账单邮件对应的解压码,将所述解压码与所述账单邮件的账号信息进行匹配,确定所述解压码对应的目标账单邮件,基于所述解压码,对压缩的目标账单文件进行解压,得到解压后的账单文件。
在其中一个实施例中,所述获取用于接收账单邮件的邮箱地址包括:
获取候选邮箱地址集合,所述候选邮箱地址集合中的候选邮箱地址分别对应于地址标识;
基于所述地址标识,对所述候选邮箱地址集合中的候选邮箱地址排序,得到排序后的候选邮箱地址;
将排序后的候选邮箱地址轮流确定为目标邮箱地址,目标邮箱地址用于获取不同账号信息的账单邮件。
在其中一个实施例中,所述将所述解压码与所述账单邮件的账号信息进行匹配,确定所述解压码对应的目标账单邮件包括:
基于所述邮箱地址进行计算,确定所述账单邮件对应的目标解压节点;
将所述账单邮件与所述解压码对应的账号信息进行匹配,得到匹配结果,基于所述匹配结果,确定所述解压码对应的目标账单邮件。
在其中一个实施例中,所述将所述账单邮件与所述解压码对应的账号信息进行匹配包括:
获取账单邮件接收时间,将账单邮件接收时间与解压码接收时间进行比较,得到解压码对应的候选账单邮件集合;
将所述解压码与所述候选账单邮件集合中的账号信息进行匹配,得到所述解压码对应的目标账单邮件。
在其中一个实施例中,若所述解压码对应的账号信息与所述邮箱地址对应的账号信息的匹配失败,则所述方法还包括:
确定所述目标解压节点在预设时间段内的匹配成功耗时,基于所述匹配成功耗时与数据清理权重计算滑动平均值,得到解压阻塞时间,其中,所述数据清理权重是基于目标解压节点中的待解压的账单文件数量生成的;
将所述解压阻塞时间与账单邮件获取到的时间长度进行比较,得到比较结果,基于所述比较结果,从所述目标解压节点中删除比较结果对应的账单邮件。
在其中一个实施例中,所述数据清理权重的生成步骤包括:
计算所述目标解压节点中的待解压的账单文件数量,并获取第一权重参数与第二权重参数,所述第一权重参数小于所述第二权重参数;
组合所述待解压的账单文件数量与所述第一权重参数,得到第一中间结果;
组合所述待解压的账单文件数量与所述第二权重参数,得到第二中间结果;
计算所述第一中间结果与所述第二中间结果的比值,得到所述数据清理权重。
在其中一个实施例中,所述从所述目标解压节点中删除比较结果对应的账单邮件之后,还包括:
检测所述目标解压节点的负载,所述负载是待解压的账单文件与最大并发数的比值;
若所述目标解压节点的负载小于阈值,则获取删除后的账单文件,执行账单文件解压方法。
第二方面,本申请还提供了一种账单文件解压装置,所述装置包括:
邮箱地址获取模块,用于获取用于接收账单邮件的邮箱地址,所述邮箱地址对应于多个账号信息对应的账单邮件,所述账单邮件用于获取压缩的账单文件;
解压节点获取模块,用于获取多个解压节点组成的哈希环,所述哈希环是基于一致性哈希算法生成的;
匹配模块,用于基于所述一致性哈希算法,将所述邮箱地址发送到哈希环中的目标解压节点;
解压模块,用于所述目标解压节点基于所述账号信息获取所述账单邮件对应的解压码,将所述解压码与所述账单邮件的账号信息进行匹配,确定所述解压码对应的目标账单邮件,基于所述解压码,对压缩的目标账单文件进行解压,得到解压后的账单文件。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取用于接收账单邮件的邮箱地址,所述邮箱地址对应于多个账号信息对应的账单邮件,所述账单邮件用于获取压缩的账单文件;
获取多个解压节点组成的哈希环,所述哈希环是基于一致性哈希算法生成的;
基于所述一致性哈希算法,将所述邮箱地址发送到哈希环中的目标解压节点;
所述目标解压节点基于所述账号信息获取所述账单邮件对应的解压码,将所述解压码与所述账单邮件的账号信息进行匹配,确定所述解压码对应的目标账单邮件,基于所述解压码,对压缩的目标账单文件进行解压,得到解压后的账单文件。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取用于接收账单邮件的邮箱地址,所述邮箱地址对应于多个账号信息对应的账单邮件,所述账单邮件用于获取压缩的账单文件;
获取多个解压节点组成的哈希环,所述哈希环是基于一致性哈希算法生成的;
基于所述一致性哈希算法,将所述邮箱地址发送到哈希环中的目标解压节点;
所述目标解压节点基于所述账号信息获取所述账单邮件对应的解压码,将所述解压码与所述账单邮件的账号信息进行匹配,确定所述解压码对应的目标账单邮件,基于所述解压码,对压缩的目标账单文件进行解压,得到解压后的账单文件。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取用于接收账单邮件的邮箱地址,所述邮箱地址对应于多个账号信息对应的账单邮件,所述账单邮件用于获取压缩的账单文件;
获取多个解压节点组成的哈希环,所述哈希环是基于一致性哈希算法生成的;
基于所述一致性哈希算法,将所述邮箱地址发送到哈希环中的目标解压节点;
所述目标解压节点基于所述账号信息获取所述账单邮件对应的解压码,将所述解压码与所述账单邮件的账号信息进行匹配,确定所述解压码对应的目标账单邮件,基于所述解压码,对压缩的目标账单文件进行解压,得到解压后的账单文件。
上述账单文件解压方法、装置、计算机设备、存储介质和计算机程序产品,通过获取用于接收账单邮件的邮箱地址,邮箱地址对应于多个账号信息对应的账单邮件,账单邮件用于获取压缩的账单文件,奠定了进行分布式计算的基础,有助于构建哈希环与哈希匹配;进一步地,获取多个解压节点组成的哈希环,哈希环是基于一致性哈希算法生成的,基于一致性哈希算法,将邮箱地址发送到哈希环中的目标解压节点,可以使计算任务量较为均匀地分布,以提高匹配效率;目标解压节点基于账号信息获取账单邮件对应的解压码,将解压码与账单邮件的账号信息进行匹配,确定解压码对应的目标账单邮件,基于解压码,对压缩的目标账单文件进行解压,得到解压后的账单文件,由此,通过将邮件匹配转换为邮箱匹配,分配到多台服务器上并行处理,提高了匹配的速度。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的账单文件解压方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。服务器104获取用于接收账单邮件的邮箱地址,所述邮箱地址对应于多个账号信息对应的账单邮件,所述账单邮件用于获取压缩的账单文件;获取多个解压节点组成的哈希环,所述哈希环是基于一致性哈希算法生成的;基于所述一致性哈希算法,将所述邮箱地址发送到哈希环中的目标解压节点;所述目标解压节点基于所述账号信息获取所述账单邮件对应的解压码,将所述解压码与所述账单邮件的账号信息进行匹配,确定所述解压码对应的目标账单邮件,基于所述解压码,对压缩的目标账单文件进行解压,得到解压后的账单文件。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现,该方法也可以由终端102充当服务器104来执行,还可以通过终端102与服务器104的交互来执行。
在一个实施例中,如图2所示,提供了一种账单文件解压方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
步骤202,获取用于接收账单邮件的邮箱地址,邮箱地址对应于多个账号信息对应的账单邮件,账单邮件用于获取压缩的账单文件。
在一可选地实施例中,用户在预设界面进行操作后,生成文件解压指令,响应于文件解压指令,某一计算机设备将发送该用户的账单邮件到预设的邮箱地址,各邮箱地址轮流接收各个用户发出的邮件。由此,通过邮箱将账号信息分组,使得各组中的账单邮箱可以通过分布式算法进行运算,降低了计算量。
步骤204,获取多个解压节点组成的哈希环,哈希环是基于一致性哈希算法生成的。
在一个可选地实施例中,解压节点是解析服务器等物理节点,用于将账单文件与对应的解压码进行匹配,是分布式计算的基础。解压节点是虚拟节点,虚拟节点的优势在于,不论作为物理节点的解析服务器增加或者删除,虚拟节点则不会被这种场景影响,一个物理节点对应多个虚拟节点,这些节点在环上均匀分布。
在一个可选地实施例中,一致性哈希的目的就是为了在节点数目发生改变时,尽可能减少的迁移数据,将所有的解压节点排列在收尾相接的哈希环上,每个key在计算哈希后,会按照顺时针的顺序,确定迁移后的节点的解压节点存放数据。而当有节点加入或退时,仅影响该节点在哈希环上顺时针相邻的后续节点。由此,在加入和删除节点只影响哈希环中顺时针方向的相邻的节点,对其他节点无影响。
在一可选地实施方式中,论述哈希环的生成;包括:确定哈希环的大小,再基于一致性哈希算法计算。哈希环的大小可以表示为slot,slot可以是231-1等任意数据。在确定哈希环的大小之后,基于一致性哈希算法,将哈希环上的地址分发给各解压节点,这一过程是基于slot与解压节点的某种地址进行计算得到的,计算结果可以确定解压节点在哈希环上的位置。在一可选地实施方式中,可以先对解压节点的网络地址进行哈希映射,得到网络地址的映射结果,再基于网络地址的映射结果与slot进行计算,确定解压节点在哈希环上的位置;其中,解压节点的网络地址可以是虚拟节点的网络地址,虚拟节点的网络地址是通过物理节点的网络地址添加标识后得到的,解压节点在哈希环上的位置可以表示为hash(ip)%slot;其中,hash表示哈希运算,ip是解压节点的网络地址,solt是哈希环的大小。
步骤206,基于一致性哈希算法,将邮箱地址发送到哈希环中的目标解压节点。
在一个可选地实施例中,为了确定各解压节点的位置,需要基于一致性哈希算法进行计算,确定邮箱地址对应的目标解压节点,进而将该邮箱地址对应的邮箱文件发送到目标解压节点。具体的,在一可选地实施方式中,获取哈希环的大小slot后,先对邮箱地址进行哈希映射,得到邮箱地址的映射结果,再基于邮箱地址的映射结果与哈希环的大小进行一致性哈希的计算,确定邮箱地址对应的解压节点在哈希环上的位置,进而确定账单邮件对应的解压节点。在另一可选地实施方式中,邮箱地址与解压节点存在静态的对应关系,该对应关系是符合一致性哈希算法的要求。
步骤208,目标解压节点基于账号信息获取账单邮件对应的解压码,将解压码与账单邮件的账号信息进行匹配,确定解压码对应的目标账单邮件,基于解压码,对压缩的目标账单文件进行解压,得到解压后的账单文件。
具体的,目标解压节点对应于邮箱地址,而邮箱地址对应于账号信息,进而凭账号信息可以获取到相应的解压码。然而,一个解压码可能对应于一个或多个账单文件,多个账单文件可能会对应于一个账号信息的,多个账号信息可能对应于一个邮箱地址,因而,在获得邮箱地址对应的解压码后,还需要进行匹配的过程。
在一可选地实施例中,将解压码与账单邮件的账号信息进行匹配,会确定某一账号信息对应的多个解压码,而各解压码可能分别用于对不同的目标账单邮件进行解压的操作。在对压缩的目标账单文件进行解压的过程中,在一个账号信息对应的解压码范围内,可以将多个解压码与账号邮件进行暴力匹配,而由于已经对邮件进行了分组,且已经凭借一致性哈希在一定程度上保障了数据量的分布均匀,因而,可以较为快速地实现匹配的过程。
上述账单文件解压方法中,通过获取用于接收账单邮件的邮箱地址,邮箱地址对应于多个账号信息对应的账单邮件,账单邮件用于获取压缩的账单文件,奠定了进行分布式计算的基础,有助于构建哈希环与哈希匹配;进一步地,获取多个解压节点组成的哈希环,哈希环是基于一致性哈希算法生成的,基于一致性哈希算法,将邮箱地址发送到哈希环中的目标解压节点,可以使计算任务量较为均匀地分布,以提高匹配效率;目标解压节点基于账号信息获取账单邮件对应的解压码,将解压码与账单邮件的账号信息进行匹配,确定解压码对应的目标账单邮件,基于解压码,对压缩的目标账单文件进行解压,得到解压后的账单文件,由此,通过将邮件匹配转换为邮箱匹配,分配到多台服务器上并行处理,提高了匹配的速度。
在一个实施例中,侧重于邮箱地址的获取,如图3所示,获取用于接收账单邮件的邮箱地址包括:
步骤302,获取候选邮箱地址集合,候选邮箱地址集合中的候选邮箱地址分别对应于地址标识。
在一可选地实施例中,在候选邮箱地址集合中,候选邮箱地址的数量是通过某一程序设置的,通过该程序定义了地址标识,地址标识是在候选邮箱地址集合中,各邮箱地址的标识。通过地址标识,能够以候选邮箱地址集合为一个范围,进行程序设计与控制。
步骤304,基于地址标识,对候选邮箱地址集合中的候选邮箱地址排序,得到排序后的候选邮箱地址。
在一可选地实施例中,对候选邮箱地址排序,可以由累加计数器(ACC)控制,也可以按照各邮箱地址对应的邮件数量来排序,将候选邮箱地址集合中的所有邮箱以0到E-1的顺序标号排列(E为可用邮箱总数),进行排列后,就得到了排序后的候选邮箱地址。
步骤306,将排序后的候选邮箱地址轮流确定为目标邮箱地址,目标邮箱地址用于获取不同账号信息的账单邮件。
在一可选地实施例中,将排序后的候选邮箱地址轮流确定为目标邮箱地址的过程中,可以设定循环算法,基于循环算法,按照排列顺序,将各候选邮箱地址轮流确定为目标邮箱地址;也可以是针对各候选邮箱地址对应的邮件数量多少,设定优先级,如果候选邮箱地址对应的邮件数量较少,则确定为目标邮箱地址。
本实施例中,定义候选邮箱地址集合中的地址标识,通过地址标识,控制集合内的候选邮件地址,可以基于各种算法来设定目标邮箱地址。由此,可以提高邮箱选择的效率,进而提升匹配的效率。
在一个实施例中,如图4所示,将解压码与账单邮件的账号信息进行匹配,确定解压码对应的目标账单邮件包括:
步骤402,基于邮箱地址进行计算,确定账单邮件对应的解压节点。
在一可选地实施方式中,基于邮箱地址进行计算,可以先计算账单邮件在哈希环上的位置,表达式为hash(email)%slot;其中,hash表示哈希运算,email是邮箱地址,solt是基于一致性哈希算法计算出的分发地址;在计算出账单邮件在哈希环上的位置之后,从该位置沿着哈希环顺时针查找,所遇到的第一台服务器或第一个虚拟节点就是可以账单邮件对应的解压节点。
在另一可选地实施方式中,基于邮箱地址进行计算后,得到一个用于确定账单邮件对应解压节点的计算结果,该计算结果可以依照某个映射表或其他映射关系,确定账单邮件对应的解压节点。
步骤404,将账单邮件与解压码对应的账号信息进行匹配,得到匹配结果。
在一可选地实施例中,一个邮箱地址对应于多个账号信息,各账号信息分别对应于多个解压码,在账单邮件与解压码对应的账号信息进行匹配的过程中,可以采取暴力匹配的方式,也可以设定某种策略,比如再次分组等方式,以确定匹配账单邮件与解压码的对应关系。
步骤406,基于匹配结果,确定解压码对应的目标账单邮件。
在一可选地实施例中,确定解压码对应的目标账单邮件后,将解压码发送到目标账单邮件所在的目标解压节点,或者,将解压码与目标账单邮件异步发送到目标解压节点,或者,将解压码与目标账单邮件同步发送到目标解压节点。
本实施例中,通过账号信息,确定解压码与账单邮件的对应关系,凭借该对应关系,确定解压码发送到的目标解压节点;由此,无需额外添加新的数据,使数据量总体较少,间接提高匹配速度,利于解压的进行。
在一个实施例中,侧重于匹配的策略,如图5所示,将账单邮件与解压码对应的账号信息进行匹配包括:
步骤502,获取账单邮件接收时间,将账单邮件接收时间与解压码接收时间进行比较,得到解压码对应的候选账单邮件集合。
在一可选地实施例中,账单邮件接收时间,是邮箱接收到账单邮件的时间;解压码接收时间,可以是解压节点接收到解压码的时间,可以是用户录入解压码的时间;在一可选地实施方式中,将账单邮件接收时间与解压码接收时间进行比较,是使用时间点进行比较,也可以按照时间段进行比较,还可以依赖某些时间之间的映射关系进行比较。而将账单邮件接收时间与解压码接收时间进行比较之后,对于发送时间早于压缩文件发送时间的解压码可以不做处理,由此,减少了数据处理的总量,进一步缩小进行计算的数据量。
步骤504,将解压码与候选账单邮件集合中的账号信息进行匹配,得到解压码对应的目标账单邮件。
在本实施例中,账单邮件接收时间是可以用于排序,还可以充当预处理的逻辑函数,对于发送时间早于压缩文件发送时间的解压码可以不做处理,由此,进一步缩小了匹配的范围,降低了计算量,提高了匹配效率。
上述实例主要面向匹配成功这一状态,如果匹配过程的时间过长,超过一定重新分发的阈值,则可以将解压码重新分发到解压节点,重新分发的阈值可以是1天,也可以是由人工设定。
在一个实施例中,如图6所示,若解压码对应的账号信息与邮箱地址对应的多个账号信息的匹配失败,则方法还包括:
步骤602,确定目标解压节点在预设时间段内的匹配成功耗时,基于匹配成功耗时与数据清理权重计算滑动平均值,得到解压阻塞时间,其中,数据清理权重是基于目标解压节点中的待解压的账单文件数量生成的。
预设时间段内的匹配成功耗时,其可以是历史时间,是在解压码对应的账号信息与邮箱地址对应的多个账号信息的匹配成功过程中,匹配所消耗的时间;匹配成功耗时常常是一个动态时间,该动态时间是最近一次匹配成功所消耗的时间,也可以是其他预设范围内匹配成功所消耗的时间。
步骤604,将解压阻塞时间与账单邮件获取到的时间长度进行比较,得到比较结果,基于比较结果,从目标解压节点中删除比较结果对应的账单邮件。
在一可选地实例中,若账单邮件获取到的时间长度大于解压阻塞时间,此时,可认为该账单邮件是阻塞状态,可以将这一邮件删除,以避免影响到其他文件的匹配结果,进而提升邮件匹配的效率。
在一可选地实施例中,计算滑动平均值的公式如下:
EWMAt=α*rt+(1-α)EWMAt-1;
其中,EWMAt是当前的指数滑动平均,α是数据清理权重,rt是目标解压节点在最近一次时间段内的匹配成功耗时,EWMAt-1是最近一次的指数滑动平均。
在一可选地实例中,解压阻塞时间称为过期时间,计算滑动平均值的公式如下:
expiret=α*matcht+(1-α)*expiret-1;
其中,expiret是当前过期时间,matcht表示当前最后一次文件匹配成功耗时,expiret-1是上一过期时间。
本实施例中,通过预设时间段内的匹配成功耗时,以及,预设时间段内的匹配成功耗时,进行滑动平均值的计算,得到解压阻塞时间,由此,可以动态清楚阻塞文件,以保障其他文件的匹配速度。
在一个实施例中,如图7所示,数据清理权重的生成步骤包括:
步骤702,计算目标解压节点中的待解压的账单文件数量,并获取第一权重参数与第二权重参数,第一权重参数小于第二权重参数。
步骤704,组合待解压的账单文件数量与第一权重参数,得到第一中间结果。
步骤706,组合待解压的账单文件数量与第二权重参数,得到第二中间结果。
步骤708,计算第一中间结果与第二中间结果的比值,得到数据清理权重。
在一可选地实施例中,计算第一中间结果与第二中间结果的比值,就是数据清理权重,在另一可选地实施例中,还需要设置一个默认阈值,若第一中间结果与第二中间结果的比值大于默认阈值,则将该默认阈值作为数据清理权重。
在一可选地实施方式中,生成数据清理权重的公式可以表示为:
其中,α为数据清理权重,min表示最小值,decay为人工设置的衰减系数,默认为0.99,doc为当前解压节点上待匹配的账单文件总数。如果过期时间超过最长阻塞时间,则设置过期时间为紧急恢复时间(均可人为设置,默认为30min和20min),快速清理阻塞文件。
本实施例中,通过第一权重参数与第二权重参数,放大待解压的账单文件数量的作用,而随着待处理账单文件数量增长,服务器资源耗尽会导致账单文件整体匹配时间增大,在账单文件数量较多时,尽可能降低最近长匹配时间的影响,快速清理无效文件可以保证解析服务的时效性。
在一个实施例中,如图8所示,从目标解压节点中删除比较结果对应的账单邮件之后,还包括:
步骤802,检测目标解压节点的负载,负载是待解压的账单文件与最大并发数的比值。
步骤804,若目标解压节点的负载小于阈值,则获取删除后的账单文件,执行账单文件解压方法。
本实施例是基于服务器集群实现的,通过设置专门的存储服务器,用于定时查询待删除文件,在解析节点的负载较低时重新发送。由此,一方面,可以使删除后的账单文件具有较高的解压效率;另一方面,也可以保证其他账单文件的匹配效率,从两个角度提升了匹配效率。
上述各实施例均有其侧重点,为了保证技术人员能够明确而清晰地了解本申请的完整技术方案,将从其系统框架等方面进行描述,以明晰整体技术方案的技术效果。
在一个可选地实施例中,阐述本发明的系统架构,其可以如图9所示,其包括下载服务器、文件存储单元、解析服务器三种服务器。由下载服务器控制账单文件下载,文件存储单元保存原始备份账单,存储服务器分发账单文件至解析服务器完成匹配解压。其中,文件存储单元与存储服务器可以是一体的。
在一个可选地实施例中,用户在微信界面发送微信账单邮件到指定邮箱,邮箱地址生成由累加计数器(ACC)控制,将所有邮箱以0到E-1的顺序标号排列(E为可用邮箱总数),每次客户申请时,累加器自动增长并生成序号ACC%E,结果序号对应邮箱即为在申请页面展示给客户的目标邮箱,目标邮箱的地址是目标邮箱地址,用于获取不同账号信息的账单邮件。
在一个可选地实施例中,在用户在微信界面发送微信账单邮件到指定邮箱后,下载服务器根据接收的邮箱地址,将账单文件下载到对应的文件存储单元,并记录邮件发送的时间戳。在一个可选地实施方式中,如图10所示,增大邮箱池中的邮箱数量,可以有效的减少单个邮箱的账单文件数据总量,缩小匹配范围,如果在每个客户发送时自动获取一个邮箱,则解压码无需匹配流程即可直接解压对应的账单文件。
在一个可选地实施例中,在存储服务器上的邮箱文件在接收到账单文件后,将账单分发到解析服务器上,分发解析服务器的地址是通过一致性哈希算法计算的。如图11所示,slot表示哈希环的大小,通常选用231-1,解析服务器(A、B、C)或其虚拟节点(A1、A2、B1、B2)在哈希环上的位置为hash(ip)%slot,ip为服务器网络地址,虚拟节点通过在ip后添加自定义后缀实现,保证服务器的流量分布均匀,其中,A1、A2表示同一解析服务器的两个虚拟节点;相对应的,账单文件使用哈希函数hash(email)%slot进行计算,确定其在哈希环上的位置,email表示邮箱地址,从此位置沿环顺时针查找,遇到的第一个解压节点就是其对应的目标解压节点,目标解压节点可以是目标解析服务器或目标解析服务器的虚拟节点。
上述实施例是邮件获取的实施例,在一个可选地实施例中,描述解压码的获取。在前端对解压码校验后,将校验后的解压码分发到对应的解析服务器处理,解压码作为客户资料与指定邮箱关联。解压码在解析服务器匹配发送时间戳,在解压码提交时间之前的同邮箱账单文件,解析成功后在解析服务器和存储服务器删除匹配账单文件,并记录解压码为删除状态。
在一个可选地实施例中,描述解压码与账单文件进行匹配的整体流程,其在解压节点的运行流程如图12所示,包括:
(1)开始遍历邮箱文件对应的未处理账单列表;
(2)添加解压码到账单文件的待解压列表,判断账单文件待解压列表是否为空;其中,单文件待解压列表为空,可以是该待解压列表已经匹配完毕,全部解压成功,也可以是获取到了空的待解压列表;
(3)若账单文件待解压列表是空的,则继续遍历邮箱文件的未处理账单列表;
(4)若账单文件待解压列表不是空的,则判断该账单文件待解压列表对应的匹配线程是否已经启动,若已启动,则继续遍历邮箱文件的未处理账单列表;
(5)若账单文件待解压列表是否已启动,若未启动,则启动账单解析线程,继续遍历邮箱文件对应的未处理账单列表;
(6)若遍历账单文件待解压列表后,账单文件待解压列表均是空的,则解析结束。
在一个可选地实施例中,描述在解压节点中,描述解压码与账单文件进行匹配的流程,文件解析匹配的流程如图13所示,包括:
(1)开始遍历待解压文件列表,
(2)尝试解压,若解压失败,则继续遍历待解压文件列表;
(3)若解压成功,则解析账单文件,修改文件状态为解析中;
(4)在解析后,删除账单文件和解压码记录;
(5)若遍历完成,则账单文件匹配解析流程结束。
在一个可选地实施例中,描述账单文件、解压码的状态变化,如图14所示,待解析状态的解压码匹配成功或者超时后,会被删除掉,而描述账单文件的状态包括:
(1)从遍历中的待解压列表,获取待解析的账单文件,若匹配成功,则成为解析中的账单文件,若解析完成,则将账单文件删除;
(2)若超过一定时间后,账单文件成为待删除状态,若不存在异常状况下的补偿机制,待删除状态会从目标解压节点中删除掉;
(3)若存在异常状况下的补偿机制,且检测到异常状态,则将待删除的账单文件重新作为待解析的账单文件。
在一个可选地实施例中,描述检测到异常状态后,则账单文件的账单文件重新作为待解析的账单文件的过程。存储服务器定时查询待删除文件,在对应解析服务器解析负载(服务器待解析账单文件与最大并发数的比值)较低时重新发送。
在一个可选地实施例中,在定时查询处于待解析状态的解压码后,如果解压码的发送时间没有超过设定的最长处理时间则重新分发解压码到解析服务器处理,最长处理时间默认为1天,可以人工进行调整。
在一个可选地实施例中,解压节点定时清理未解析账单文件。解析服务器直接删除,存储服务器修改文件状态为待删除,1天后文件状态未发生变更,再删除原始备份文件),过期时间expire通过EWMA公式动态计算
expiret=α*matcht+(1-α)*expiret-1
matcht表示当前最后一次文件匹配成功耗时,decay为人工设置的衰减系数,默认为0.99,doc为当前服务器上待匹配的账单文件总数。如果过期时间超过最长阻塞时间,则设置过期时间为紧急恢复时间(均可人为设置,默认为30min和20min),快速清理阻塞文件。随着待处理账单文件数量增长,服务器资源耗尽会导致账单文件整体匹配时间增大,在账单文件数量较多时,尽可能降低最近长匹配时间的影响,快速清理无效文件可以保证解析服务的时效性。
由此,通过将邮件匹配转换为邮箱匹配,分配到多台服务器上并行处理,同时根据现有文件的解析并发量动态调整未匹配文件的过期时间,使客户传送的账单提取码与获取的账单文件暴力循环匹配耗时较短。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的账单文件解压方法的账单文件解压装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个账单文件解压装置实施例中的具体限定可以参见上文中对于账单文件解压方法的限定,在此不再赘述。
在一个实施例中,如图15所示,提供了一种账单文件解压装置,所述装置包括:
邮箱地址获取模块,用于获取用于接收账单邮件的邮箱地址,所述邮箱地址对应于多个账号信息对应的账单邮件,所述账单邮件用于获取压缩的账单文件;
解压节点获取模块,用于获取多个解压节点组成的哈希环,所述哈希环是基于一致性哈希算法生成的;
匹配模块,用于基于所述一致性哈希算法,将所述邮箱地址发送到哈希环中的目标解压节点;
解压模块,用于所述目标解压节点基于所述账号信息获取所述账单邮件对应的解压码,将所述解压码与所述账单邮件的账号信息进行匹配,确定所述解压码对应的目标账单邮件,基于所述解压码,对压缩的目标账单文件进行解压,得到解压后的账单文件。
在其中一个实施例中,所述邮箱地址获取模块,包括:
候选地址获取单元,用于获取候选邮箱地址集合,所述候选邮箱地址集合中的候选邮箱地址分别对应于地址标识;
候选地址排序单元,用于基于所述地址标识,对所述候选邮箱地址集合中的候选邮箱地址排序,得到排序后的候选邮箱地址;
目标邮箱地址确定单元,用于将排序后的候选邮箱地址轮流确定为目标邮箱地址,目标邮箱地址用于获取不同账号信息的账单邮件。
在其中一个实施例中,解压模块,包括:
目标解压节点确定单元,用于基于所述邮箱地址进行计算,确定所述账单邮件对应的目标解压节点;
目标账单邮件确定单元,用于将所述账单邮件与所述解压码对应的账号信息进行匹配,得到匹配结果,基于所述匹配结果,确定所述解压码对应的目标账单邮件。
在其中一个实施例中,所述解压模块包括:
邮件集合的解压码确定单元,用于获取账单邮件接收时间,将账单邮件接收时间与解压码接收时间进行比较,得到解压码对应的候选账单邮件集合;
邮件的解压码确定单元,用于将所述解压码与所述候选账单邮件集合中的账号信息进行匹配,得到所述解压码对应的目标账单邮件。
在其中一个实施例中,所述装置还包括,补偿机制模块,补偿机制模块包括:
滑动平均值单元,用于确定所述目标解压节点在预设时间段内的匹配成功耗时,基于所述匹配成功耗时与数据清理权重计算滑动平均值,得到解压阻塞时间,其中,所述数据清理权重是基于目标解压节点中的待解压的账单文件数量生成的;
邮件删除单元,用于将所述解压阻塞时间与账单邮件获取到的时间长度进行比较,得到比较结果,基于所述比较结果,从所述目标解压节点中删除比较结果对应的账单邮件。
在其中一个实施例中,所述数据清理权重的生成步骤包括:
参数确定单元,用于计算所述目标解压节点中的待解压的账单文件数量,并获取第一权重参数与第二权重参数,所述第一权重参数小于所述第二权重参数;
第一中间结果计算单元,用于组合所述待解压的账单文件数量与所述第一权重参数,得到第一中间结果;
第二中间结果计算单元,用于组合所述待解压的账单文件数量与所述第二权重参数,得到第二中间结果;
数据清理权重生成单元,用于计算所述第一中间结果与所述第二中间结果的比值,得到所述数据清理权重。
在其中一个实施例中,所述从所述目标解压节点中删除比较结果对应的账单邮件之后,还包括:
负载检测单元,用于检测所述目标解压节点的负载,所述负载是待解压的账单文件与最大并发数的比值;
补偿执行单元,用于若所述目标解压节点的负载小于阈值,则获取删除后的账单文件,执行账单文件解压方法。
上述账单文件解压装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图16所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储XX数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种账单文件解压方法。
本领域技术人员可以理解,图16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。