一种邮件同步方法、装置与计算机可读存储介质与流程

文档序号:15221381发布日期:2018-08-21 17:30阅读:147来源:国知局

本发明涉及电子邮件服务技术领域,具体涉及一种邮件同步方法、装置与计算机可读存储介质。



背景技术:

电子邮件是人们在日常生活中进行通信交流的一个重要组成部分。电子邮件不仅是简单的消息,它像电话一样已成为不可缺少的通信工具。电子邮件已因它的低成本、简单性、易用性和全球兼容性而被采用为消息传输的标准。

为了保证邮件服务器的高可用性与稳定性,减少因为计算机硬件故障或网络等原因导致不能访问邮件系统带来的损失,一些邮件系统服务器会采用双机热备方案,分别部署两套邮件系统:主邮件系统与镜像系统。镜像系统会实时或定时同步主邮件系统的站点结构、用户、邮件及其他数据,主邮件系统与镜像系统保持相同的拓扑结构、站点结构及企业组织。目前的邮件同步方式是:镜像系统会把文件平均切分成若干个小块(如512个字节);主邮件系统对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的md5强校验;镜像系统会把filedst的一个checksum列表传给同步源;同步源通过搜索文件filesrc的所有大小为512的数据块,来寻找与文件的某一块有着相同的弱校验码和强校验码的数据块;同步源找出filesrc相邻两次匹配中的那些数据,并传送到镜像系统进行同步。但是这种邮件同步方法存在如下缺陷:同步源在同步大量文件时,比对时间较长,且同步源进行数据比对及同步时,一般以文件或目录为单位,如果需要同步邮件系统数据,则可能会以整套邮件系统数据来进行全部比对及增量同步,邮件系统数据容量大并且文件数量较多,进一步增加比对及同步的时间,无法以用户及时间范围进行小范围的单独同步,无法快速同步指定用户的邮件数据;同步源只能进行有想镜像系统进行单向同步。



技术实现要素:

本发明的目的是提供一种邮件同步方法、装置与计算机可读存储介质,能够限有效缩短邮件对比的时间,实现小范围的邮件数据同步,提高邮件数据的同步效率,同时可以实现主节点系统与镜像节点系统的双向同步。

为解决以上技术问题,本发明实施例提供一种邮件同步方法,包括:

分别获取主节点系统以及镜像节点系统在设定时间范围内邮件的索引数据,其中,所述索引数据包括邮件标识、标志位、文件夹以及收信时间;

根据所述主节点系统在所述设定时间范围内邮件的索引数据生成第一邮件索引列表;

根据所述镜像节点系统在所述设定时间范围内邮件的索引数据生成第二邮件索引列表;

根据所述第一邮件索引列表生成所述主节点系统在所述设定时间范围内邮件的校验值;

根据所述第二邮件索引列表生成所述镜像节点系统在所述设定时间范围内邮件的校验值;

对比所述主节点系统生成的校验值以及所述镜像节点系统生成的检验值;

当所述主节点系统生成的校验值与所述镜像节点系统生成的检验值不一致时,同步所述主节点系统与所述镜像节点系统在所述设定时间范围内的邮件数据。

优选地,所述当所述主节点系统生成的邮件校验值与所述镜像节点系统生成的邮件检验值不一致时,同步所述主节点系统与所述镜像节点系统在所述设定时间范围内的邮件数据,具体包括:

当所述主节点系统生成的邮件校验值与所述镜像节点系统生成的邮件检验值不一致时,将所述第一邮件索引列表中的邮件标识、标志位以及所述第二邮件索引列表中的邮件标识、标志位进行一一对比,获取部分索引属性变更的列表、主节点系统新增的邮件标识列表、主节点系统删除的邮件标识列表以及镜像点新增的邮件标识列表;

根据所述部分索引属性变更的列表、主节点系统新增的邮件标识列表以及主节点系统删除的邮件标识列表,将所述主节点系统在所述设定时间范围内的邮件数据同步到所述镜像节点系统;

根据镜像点新增的邮件标识列表,将所述镜像节点系统在所述设定时间范围内的邮件数据同步到所述主节点系统。

优选地,所述根据所述部分索引属性变更的列表、主节点系统新增的邮件标识列表以及主节点系统删除的邮件标识列表,将所述主节点系统在所述设定时间范围内的邮件数据同步到所述镜像节点系统,具体包括:

根据所述部分索引属性变更的列表,将所述主节点系统在所述设定时间范围内的变更内容更新到所述镜像节点系统;

根据所述主节点系统新增的邮件标识列表,获取所述主节点系统在所述设定时间范围内标记为非延迟删除状态的新增邮件列表,并将所述主节点系统中与所述新增邮件列表对应的邮件数据同步到所述镜像节点系统;

根据所述主节点系统删除的邮件标识列表,获取所述主节点系统在所述设定时间范围内标记为延迟删除状态的删除邮件列表,并删除所述镜像节点系统中与所述删除邮件列表对应的邮件数据。

优选地,所述根据镜像点新增的邮件标识列表,将所述镜像节点系统在所述设定时间范围内的邮件数据同步到所述主节点系统,具体包括:

根据所述镜像点新增的邮件标识列表,获取由所述镜像节点系统生成的系统邮件列表,并将所述镜像节点系统中与系统邮件列表对应的邮件数据同步到所述主节点系统。

优选地,所述根据所述第一邮件索引列表生成所述主节点系统在所述设定时间范围内的校验值,具体包括:

根据所述第一邮件索引列表中任意一封邮件对应的邮件标识、标志位以及文件夹生成所述任意一封邮件对应的字符串;

根据所述任意一封邮件对应的字符串,通过crc校验工具生成一个32bit的crc值;

根据所述第一邮件索引列表中所述任意一封邮件对应的收信时间,生成所述任意一封邮件对应的初始检验值;

对所述任意一封邮件对应的crc值以及所述初始校验值进行异或处理,得到所述任意一封邮件对应的当前校验值,并将所述任意一封邮件对应的当前校验值更新到预设的第一映射表中;

根据当前日期计算所述设定时间范围内邮件对应的当前检验值,并将所述设定时间范围内邮件对应的当前检验值更新到所述预设的第一映射表中。

优选地,所述根据所述第一邮件索引列表中所述任意一封邮件对应的收信时间,生成所述任意一封邮件对应的初始检验值,具体包括:

当所述任意一封邮件对应的收信时间早于预设的年份时,根据所述任意一封邮件对应的收信时间的年份生成所述任意一封邮件对应的初始检验值;

当所述任意一封邮件对应的收信时间为当天时,根据所述任意一封邮件对应的收信时间的年、月、日生成所述任意一封邮件对应的初始检验值;

当所述任意一封邮件对应的收信时间为当月时,根据p1=y-n+m+d-1计算所述任意一封邮件对应的初始检验值,其中,y、m、d分别为所述任意一封邮件对应的收信时间的年份、月、日,n为所述预设的年份;

当所述任意一封邮件对应的收信时间为当年时,根据p2=y-n+m-1计算所述任意一封邮件对应的初始检验值,其中,y、m分别为所述任意一封邮件对应的收信时间的年份、月,n为所述预设的年份;

当所述任意一封邮件对应的收信时间晚于所述预设的年份时,根据p3=y-n计算所述任意一封邮件对应的初始检验值,其中,y为所述任意一封邮件对应的收信时间的年份,n为所述预设的年份。

优选地,所述根据当前日期计算所述设定时间范围内邮件对应的当前检验值,并将所述设定时间范围内邮件对应的当前检验值更新到预设的第一映射表中,具体包括:

根据当前日期对应的年份以及所述预设的年份,计算从所述预设的年份到所述当前日期对应的年份的每一年对应的检验值;

根据当前日期对应的年份、月以及所述预设的年份,计算从所述当前日期的年份的第一个月到当前日期对应的月份的每一个月对应的校验值;

根据当前日期对应的年份、月、天以及所述预设的年份,计算从所述当前日期的月份的第一天到当前日期对应的天数的每一个天对应的校验值;

将所述每一年对应的检验值、所述每一个月对应的校验值以及所述每一个天对应的校验值更新到所述预设的第一映射表中。

本发明实施例还提供一种邮件同步装置,包括:

索引数据获取模块,用于分别获取主节点系统以及镜像节点系统在设定时间范围内邮件的索引数据,其中,所述索引数据包括邮件标识、标志位、文件夹以及收信时间;

第一索引列表生成模块,用于根据所述主节点系统在所述设定时间范围内邮件的索引数据生成第一邮件索引列表;

第二索引列表生成模块,用于根据所述镜像节点系统在所述设定时间范围内邮件的索引数据生成第二邮件索引列表;

第一校验值生成模块,用于根据所述第一邮件索引列表生成所述主节点系统在所述设定时间范围内邮件的校验值;

第二校验值生成模块,用于根据所述第二邮件索引列表生成所述镜像节点系统在所述设定时间范围内邮件的校验值;

校验值对比模块,用于对比所述主节点系统生成的校验值以及所述镜像节点系统生成的检验值;

邮件同步模块,用于当所述主节点系统生成的校验值与所述镜像节点系统生成的检验值不一致时,同步所述主节点系统与所述镜像节点系统在所述设定时间范围内的邮件数据。

本发明实施例还提供一种邮件同步装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述的邮件同步方法。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述的邮件同步法。

相对于现有技术,本发明实施例提供的一种邮件同步方法的有益效果在于:所述邮件同步方法包括:分别获取主节点系统以及镜像节点系统在设定时间范围内邮件的索引数据,其中,所述索引数据包括邮件标识、标志位、文件夹以及收信时间;根据所述主节点系统在所述设定时间范围内邮件的索引数据生成第一邮件索引列表;根据所述镜像节点系统在所述设定时间范围内邮件的索引数据生成第二邮件索引列表;根据所述第一邮件索引列表生成所述主节点系统在所述设定时间范围内邮件的校验值;根据所述第二邮件索引列表生成所述镜像节点系统在所述设定时间范围内邮件的校验值;对比所述主节点系统生成的校验值以及所述镜像节点系统生成的检验值;当所述主节点系统生成的校验值与所述镜像节点系统生成的检验值不一致时,同步所述主节点系统与所述镜像节点系统在所述设定时间范围内的邮件数据。通过所述方法能够有效缩短邮件对比的时间,实现小范围的邮件数据同步,提高邮件数据的同步效率,同时可以实现主节点系统与镜像节点系统的双向同步。本发明实施例还提供一种邮件同步装置与计算机可读存储介质,

附图说明

图1是本发明实施例提供的一种邮件同步方法的流程图;

图2是本发明实施例提供的一种邮件同步装置的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,其是本发明实施例提供的一种邮件同步方法的流程图,所述邮件同步方法包括:

s100:分别获取主节点系统以及镜像节点系统在设定时间范围内邮件的索引数据,其中,所述索引数据包括邮件标识、标志位、文件夹以及收信时间;

s200:根据所述主节点系统在所述设定时间范围内邮件的索引数据生成第一邮件索引列表;

s300:根据所述镜像节点系统在所述设定时间范围内邮件的索引数据生成第二邮件索引列表;

s400:根据所述第一邮件索引列表生成所述主节点系统在所述设定时间范围内邮件的校验值;

s500:根据所述第二邮件索引列表生成所述镜像节点系统在所述设定时间范围内邮件的校验值;

s600:对比所述主节点系统生成的校验值以及所述镜像节点系统生成的检验值;

s700:当所述主节点系统生成的校验值与所述镜像节点系统生成的检验值不一致时,同步所述主节点系统与所述镜像节点系统在所述设定时间范围内的邮件数据。

通过所述方法直接根据索引数据生校验值,校验值只与邮件数量相关,与邮件大小无关,可以达到快速生成比对校验值的目的,同时比对时无需检查邮件内容,缩短减少对比时间,从而能够有效缩短邮件对比的时间,提高邮件数据的同步效率,同时可以实现主节点系统与镜像节点系统的双向同步。

其中,所述索引数据还包括索引修改时间、发信人、收信人、主题以及信头message-id等。当所述设定的时间范围为空值时,分别获取主节点系统以及镜像节点系统所有邮件的索引数据,并按照索引修改时间对索引数据进行排序。具体地,根据所述主节点系统在所述设定时间范围内邮件的索引数据中的邮件标识、标志位、文件夹以及收信时间生成第一邮件索引列表;根据所述镜像节点系统在所述设定时间范围内邮件的索引数据中的邮件标识、标志位、文件夹以及收信时间生成第二邮件索引列表。其中,计算所述主节点系统在所述设定时间范围内的校验值的方法与计算所述镜像节点系统在所述设定时间范围内的校验值相同因此,下面以计算所述主节点系统在所述设定时间范围内的校验值为了进行说明。

在一种可选的实施例中,s700:当所述主节点系统生成的邮件校验值与所述镜像节点系统生成的邮件检验值不一致时,同步所述主节点系统与所述镜像节点系统在所述设定时间范围内的邮件数据,具体包括:

当所述主节点系统生成的邮件校验值与所述镜像节点系统生成的邮件检验值不一致时,将所述第一邮件索引列表中的邮件标识、标志位以及所述第二邮件索引列表中的邮件标识、标志位进行一一对比,获取部分索引属性变更的列表、主节点系统新增的邮件标识列表、主节点系统删除的邮件标识列表以及镜像点新增的邮件标识列表;

根据所述部分索引属性变更的列表、主节点系统新增的邮件标识列表以及主节点系统删除的邮件标识列表,将所述主节点系统在所述设定时间范围内的邮件数据同步到所述镜像节点系统;

根据镜像点新增的邮件标识列表,将所述镜像节点系统在所述设定时间范围内的邮件数据同步到所述主节点系统。

在一种可选的实施例中,所述根据所述部分索引属性变更的列表、主节点系统新增的邮件标识列表以及主节点系统删除的邮件标识列表,将所述主节点系统在所述设定时间范围内的邮件数据同步到所述镜像节点系统,具体包括:

根据所述部分索引属性变更的列表,将所述主节点系统在所述设定时间范围内的变更内容更新到所述镜像节点系统;

根据所述主节点系统新增的邮件标识列表,获取所述主节点系统在所述设定时间范围内标记为非延迟删除状态的新增邮件列表,并将所述主节点系统中与所述新增邮件列表对应的邮件数据同步到所述镜像节点系统;

根据所述主节点系统删除的邮件标识列表,获取所述主节点系统在所述设定时间范围内标记为延迟删除状态的删除邮件列表,并删除所述镜像节点系统中与所述删除邮件列表对应的邮件数据。

在本实施例中,当用户删除一封邮件时,将在所述主节点系统中对被用户删除的邮件标记为延迟删除状态。此时,在用户看来该邮件已经被删除,而后台会在一段时间后真正删除该邮件,为所述主节点系统与所述镜像节点系统双向同步提供数据基础。

在一种可选的实施例中,所述根据镜像点新增的邮件标识列表,将所述镜像节点系统在所述设定时间范围内的邮件数据同步到所述主节点系统,具体包括:

根据所述镜像点新增的邮件标识列表,获取由所述镜像节点系统生成的系统邮件列表,并将所述镜像节点系统中与系统邮件列表对应的邮件数据同步到所述主节点系统。

在一种可选的实施例中,所述根据所述第一邮件索引列表生成所述主节点系统在所述设定时间范围内的校验值,具体包括:

根据所述第一邮件索引列表中任意一封邮件对应的邮件标识、标志位以及文件夹生成所述任意一封邮件对应的字符串;

根据所述任意一封邮件对应的字符串通过crc校验工具生成一个32bit的crc值;

根据所述第一邮件索引列表中所述任意一封邮件对应的收信时间,生成所述任意一封邮件对应的初始检验值;

对所述任意一封邮件对应的crc值以及所述初始校验值进行异或处理,得到所述任意一封邮件对应的当前校验值,并将所述任意一封邮件对应的当前校验值更新到预设的第一映射表中;

根据当前日期计算所述设定时间范围内邮件对应的当前检验值,并将所述设定时间范围内邮件对应的当前检验值更新到预设的第一映射表中。

在本实施中,采用与计算所述主节点系统在所述设定时间范围内的校验值相同的方法计算所述镜像节点系统在所述设定时间范围内的校验值,并将所述镜像节点系统在所述设定时间范围内的校验值更新到预设的第二映射表中。所述预设的第一映射表记录了所述设定时间范围内的检验值,可以直接对根据所述第一邮件索引列表获得的所述预设的第一映射表的校验值与根据所述第二邮件索引列表获得的所述预设的第二映射表的校验值进行一一对比。由于校验值是根据每封邮件的索引数据产生的,并不需要检查邮件的内容,可以大大减少比对时检查的内容,缩短生成检验值的时间,校验值只与邮件数量相关,与邮件大小无关,可以达到快速生成比对校验值的目的。

在一种可选的实施例中,所述根据所述第一邮件索引列表中所述任意一封邮件对应的收信时间,生成所述任意一封邮件对应的初始检验值,具体包括:

当所述任意一封邮件对应的收信时间早于预设的年份时,根据所述任意一封邮件对应的收信时间的年份生成所述任意一封邮件对应的初始检验值;

当所述任意一封邮件对应的收信时间为当天时,根据所述任意一封邮件对应的收信时间的年、月、日生成所述任意一封邮件对应的初始检验值;

当所述任意一封邮件对应的收信时间为当月时,根据p1=y-n+m+d-1计算所述任意一封邮件对应的初始检验值,其中,y、m、d分别为所述任意一封邮件对应的收信时间的年份、月、日,n为所述预设的年份;

当所述任意一封邮件对应的收信时间为当年时,根据p2=y-n+m-1计算所述任意一封邮件对应的初始检验值,其中,y、m分别为所述任意一封邮件对应的收信时间的年份、月,n为所述预设的年份;

当所述任意一封邮件对应的收信时间晚于所述预设的年份时,根据p3=y-n计算所述任意一封邮件对应的初始检验值,其中,y为所述任意一封邮件对应的收信时间的年份,n为所述预设的年份。

在一种可选的实施例中,所述根据当前日期计算所述设定时间范围内邮件对应的当前检验值,并将所述设定时间范围内邮件对应的当前检验值更新到预设的第一映射表中,具体包括:

根据当前日期对应的年份以及所述预设的年份,计算从所述预设的年份到所述当前日期对应的年份的每一年对应的当前检验值;

根据当前日期对应的年份、月以及所述预设的年份,计算从所述当前日期的年份的第一个月到当前日期对应的月份的每一个月对应的当前校验值;

根据当前日期对应的年份、月、天以及所述预设的年份,计算从所述当前日期的月份的第一天到当前日期对应的天数的每一个天对应的当前校验值;

将所述每一年对应的当前检验值、所述每一个月对应的当前校验值以及所述每一个天对应的当前校验值更新到预设的第一映射表中。

在本实施例中,通过p[yi]=yi-n分别计算从所述预设的年份到所述当前日期对应的年份的每一年对应的检验值,其中,yi为第i年对应的年份,n为所述预设的年份;通过p[y+(ai-u)]=y-n+mi-1分别计算从所述当前日期的年份的第一个月到当前日期对应的月份的每一个月对应的校验值;其中,y为所述当前日期对应的年份,mi为所述当前日期对应的年份中第i个月对应的月份,n为所述预设的年份,ai为第i个月对应的索引值;u为所述当前日期对应的年份与所述预设的年份的差值-1;通过p[y+m+(bi-v)]=y-n+m+di-1计算从所述当前日期的月份的第一天到当前日期对应的天数的每一个天对应的校验值,其中,y、m分别为所述当前日期对应的年份、月,di为所述当前日期的月份中第i天对应的天数,n为所述预设的年份,bi为第i天对应的索引值;v为所述当前日期对应的年份与所述预设的年份的差值-1。具体地,第i个月对应的索引值ai根据编号递增原则自动生成,ai的初始值为所述当前日期对应的年份与所述预设的年份的差值;第i天对应的索引值bi根据编号递增原则自动生成,bi的初始值为ai的最大值+1。

以预设的年份为2000年,当前日期为2017年9月30号为例进行说明,此时17≤ai≤25,26≤bi≤54;从所述预设的年份到所述当前日期对应的年份的每一年对应的检验值分别为:p[2000]=2000-2000=0,p[2001]=1,……p[2016]=16;从所述当前日期的年份的第一个月到当前日期对应的月份的每一个月对应的校验值分别为:p[2017+17-16=2018]=2017-2000+1-1=17,p[2019]=18,……p[2026]=25;从所述当前日期的月份的第一天到当前日期对应的天数的每一个天对应的校验值分别为:p[2017+9+26-25=2027]=2017-2000+9+1-1=26,p[2028]=27……p[2055]=55。

在本实施例中,通过对比设定的时间范围内邮件的校验值,当校验值不一致时,对设定的时间范围内邮件数据进行同步,例如,设定时间范围为最近一个月,则可以对最近一个月的邮件数据进行同步,可以减少同步数据总量,实现小范围的邮件数据同步,保证同步效率及速度。同时可以设定不同的时间范围,从而为不同等级的用户群体设置不同的同步策略,提高用户体验。后台服务器还可以分时间段来同步历史邮件数据。

从上面的计算所得的校验值来看,时间越往以前,时间范围的统计粒度越大(以年为主),时间越靠近现在,时间范围的统计粒度就越小(以天为主),将邮件的同步与邮件的使用相关联,符合时间越接近当前日期,用户邮件变化就越大的规则,如果设定时间范围对应的邮件有变化,则需要同步的邮件数据就越小,可以避免获取大量的邮件数据,通过对校验值进行比对,当只有部分校验值不一致时,只需要对不一致的校验值对应的时间范围的邮件数据进行同步,减少数据传输量及比对邮件数量,同步效率更高。

请参阅图2,其是本发明实施例还提供一种邮件同步装置的示意图,所述邮件同步装置包括:

索引数据获取模块1,用于分别获取主节点系统以及镜像节点系统在设定时间范围内邮件的索引数据,其中,所述索引数据包括邮件标识、标志位、文件夹以及收信时间;

第一索引列表生成模块2,用于根据所述主节点系统在所述设定时间范围内邮件的索引数据生成第一邮件索引列表;

第二索引列表生成模块3,用于根据所述镜像节点系统在所述设定时间范围内邮件的索引数据生成第二邮件索引列表;

第一校验值生成模块4,用于根据所述第一邮件索引列表生成所述主节点系统在所述设定时间范围内邮件的校验值;

第二校验值生成模块5,用于根据所述第二邮件索引列表生成所述镜像节点系统在所述设定时间范围内邮件的校验值;

校验值对比模块6,用于对比所述主节点系统生成的校验值以及所述镜像节点系统生成的检验值;

邮件同步模块7,用于当所述主节点系统生成的校验值与所述镜像节点系统生成的检验值不一致时,同步所述主节点系统与所述镜像节点系统在所述设定时间范围内的邮件数据。

通过所述装置直接根据索引数据生校验值,校验值只与邮件数量相关,与邮件大小无关,可以达到快速生成比对校验值的目的,同时比对时无需检查邮件内容,缩短减少对比时间,从而能够有效缩短邮件对比的时间,提高邮件数据的同步效率,同时可以实现主节点系统与镜像节点系统的双向同步。

其中,所述索引数据还包括索引修改时间、发信人、收信人、主题以及信头message-id等。当所述设定的时间范围为空值时,分别获取主节点系统以及镜像节点系统所有邮件的索引数据,并按照索引修改时间对索引数据进行排序。具体地,根据所述主节点系统在所述设定时间范围内邮件的索引数据中的邮件标识、标志位、文件夹以及收信时间生成第一邮件索引列表;根据所述镜像节点系统在所述设定时间范围内邮件的索引数据中的邮件标识、标志位、文件夹以及收信时间生成第二邮件索引列表。其中,所述第一校验值生成模块与所述第二校验值生成模块具有的功能模块以及单元完全相同,实现的功能也完全相同,即所述第二校验值生成模块具有与所述第一校验值生成模块一一对应的功能模块或单元,因此,下面以所述第一校验值生成模块进行说明。

在一种可选的实施例中,所述邮件同步模块包括:

邮件数据对比单元,用于当所述主节点系统生成的邮件校验值与所述镜像节点系统生成的邮件检验值不一致时,将所述第一邮件索引列表中的邮件标识、标志位以及所述第二邮件索引列表中的邮件标识、标志位进行一一对比,获取部分索引属性变更的列表、主节点系统新增的邮件标识列表、主节点系统删除的邮件标识列表以及镜像点新增的邮件标识列表;

镜像节点系统同步单元,用于根据所述部分索引属性变更的列表、主节点系统新增的邮件标识列表以及主节点系统删除的邮件标识列表,将所述主节点系统在所述设定时间范围内的邮件数据同步到所述镜像节点系统;

主节点系统同步单元,用于根据镜像点新增的邮件标识列表,将所述镜像节点系统在所述设定时间范围内的邮件数据同步到所述主节点系统。

在一种可选的实施例中,所述镜像节点系统同步单元包括:

属性同步单元,用于根据所述部分索引属性变更的列表,将所述主节点系统在所述设定时间范围内的变更内容更新到所述镜像节点系统;

新增邮件同步单元,用于根据所述主节点系统新增的邮件标识列表,获取所述主节点系统在所述设定时间范围内标记为非延迟删除状态的新增邮件列表,并将所述主节点系统中与所述新增邮件列表对应的邮件数据同步到所述镜像节点系统;

删除邮件同步单元,用于根据所述主节点系统删除的邮件标识列表,获取所述主节点系统在所述设定时间范围内标记为延迟删除状态的删除邮件列表,并删除所述镜像节点系统中与所述删除邮件列表对应的邮件数据。

在本实施例中,当用户删除一封邮件时,将在所述主节点系统中对被用户删除的邮件标记为延迟删除状态。此时,在用户看来该邮件已经被删除,而后台会在一段时间后真正删除该邮件,为所述主节点系统与所述镜像节点系统双向同步提供数据基础。

在一种可选的实施例中,所述主节点系统同步单元包括:

系统邮件同步单元,用于根据所述镜像点新增的邮件标识列表,获取由所述镜像节点系统生成的系统邮件列表,并将所述镜像节点系统中与系统邮件列表对应的邮件数据同步到所述主节点系统。

在本实施中,采用与计算所述主节点系统在所述设定时间范围内的校验值相同的方法计算所述镜像节点系统在所述设定时间范围内的校验值,并将所述镜像节点系统在所述设定时间范围内的校验值更新到预设的第二映射表中。所述预设的第一映射表记录了所述设定时间范围内的检验值,可以直接对根据所述第一邮件索引列表获得的所述预设的第一映射表的校验值与根据所述第二邮件索引列表获得的所述预设的第二映射表的校验值进行一一对比。由于校验值是根据每封邮件的索引数据产生的,并不需要检查邮件的内容,可以大大减少比对时检查的内容,缩短生成检验值的时间,校验值只与邮件数量相关,与邮件大小无关,可以达到快速生成比对校验值的目的。

在一种可选的实施例中,所述主节点初始检验值生成单元,用于当所述任意一封邮件对应的收信时间早于预设的年份时,根据所述任意一封邮件对应的收信时间的年份生成所述任意一封邮件对应的初始检验值;

所述主节点初始检验值生成单元,用于当所述任意一封邮件对应的收信时间为当天时,根据所述任意一封邮件对应的收信时间的年、月、日生成所述任意一封邮件对应的初始检验值;

所述主节点初始检验值生成单元,用于当所述任意一封邮件对应的收信时间为当月时,根据p1=y-n+m+d-1计算所述任意一封邮件对应的初始检验值,其中,y、m、d分别为所述任意一封邮件对应的收信时间的年份、月、日,n为所述预设的年份;

所述主节点初始检验值生成单元,用于当所述任意一封邮件对应的收信时间为当年时,根据p2=y-n+m-1计算所述任意一封邮件对应的初始检验值,其中,y、m分别为所述任意一封邮件对应的收信时间的年份、月,n为所述预设的年份;

所述主节点初始检验值生成单元,用于当所述任意一封邮件对应的收信时间晚于所述预设的年份时,根据p3=y-n计算所述任意一封邮件对应的初始检验值,其中,y为所述任意一封邮件对应的收信时间的年份,n为所述预设的年份。

在一种可选的实施例中,所述主节点第二校验值生成单元,用于根据当前日期对应的年份以及所述预设的年份,计算从所述预设的年份到所述当前日期对应的年份的每一年对应的当前检验值;

主节点第二校验值生成单元,用于根据当前日期对应的年份、月以及所述预设的年份,计算从所述当前日期的年份的第一个月到当前日期对应的月份的每一个月对应的当前校验值;

主节点第二校验值生成单元,用于根据当前日期对应的年份、月、天以及所述预设的年份,计算从所述当前日期的月份的第一天到当前日期对应的天数的每一个天对应的当前校验值;

主节点第二校验值生成单元,用于将所述每一年对应的当前检验值、所述每一个月对应的当前校验值以及所述每一个天对应的当前校验值更新到预设的第一映射表中。

在本实施例中,通过p[yi]=yi-n分别计算从所述预设的年份到所述当前日期对应的年份的每一年对应的检验值,其中,yi为第i年对应的年份,n为所述预设的年份;通过p[y+(ai-u)]=y-n+mi-1分别计算从所述当前日期的年份的第一个月到当前日期对应的月份的每一个月对应的校验值;其中,y为所述当前日期对应的年份,mi为所述当前日期对应的年份中第i个月对应的月份,n为所述预设的年份,ai为第i个月对应的索引值;u为所述当前日期对应的年份与所述预设的年份的差值-1;通过p[y+m+(bi-v)]=y-n+m+di-1计算从所述当前日期的月份的第一天到当前日期对应的天数的每一个天对应的校验值,其中,y、m分别为所述当前日期对应的年份、月,di为所述当前日期的月份中第i天对应的天数,n为所述预设的年份,bi为第i天对应的索引值;v为所述当前日期对应的年份与所述预设的年份的差值-1。具体地,第i个月对应的索引值ai根据编号递增原则自动生成,ai的初始值为所述当前日期对应的年份与所述预设的年份的差值;第i天对应的索引值bi根据编号递增原则自动生成,bi的初始值为ai的最大值+1。

以预设的年份为2000年,当前日期为2017年9月30号为例进行说明,此时17≤ai≤25,26≤bi≤54;从所述预设的年份到所述当前日期对应的年份的每一年对应的检验值分别为:p[2000]=2000-2000=0,p[2001]=1,……p[2016]=16;从所述当前日期的年份的第一个月到当前日期对应的月份的每一个月对应的校验值分别为:p[2017+17-16=2018]=2017-2000+1-1=17,p[2019]=18,……p[2026]=25;从所述当前日期的月份的第一天到当前日期对应的天数的每一个天对应的校验值分别为:p[2017+9+26-25=2027]=2017-2000+9+1-1=26,p[2028]=27……p[2055]=55。

在本实施例中,通过对比设定的时间范围内邮件的校验值,当校验值不一致时,对设定的时间范围内邮件数据进行同步,例如,设定时间范围为最近一个月,则可以对最近一个月的邮件数据进行同步,可以减少同步数据总量,实现小范围的邮件数据同步,保证同步效率及速度。同时可以设定不同的时间范围,从而为不同等级的用户群体设置不同的同步策略,提高用户体验。后台服务器还可以分时间段来同步历史邮件数据。

从上面的计算所得的校验值来看,时间越往以前,时间范围的统计粒度越大(以年为主),时间越靠近现在,时间范围的统计粒度就越小(以天为主),将邮件的同步与邮件的使用相关联,符合时间越接近当前日期,用户邮件变化就越大的规则,如果设定时间范围对应的邮件有变化,则需要同步的邮件数据就越小,可以避免获取大量的邮件数据,通过对校验值进行比对,当只有部分校验值不一致时,只需要对不一致的校验值对应的时间范围的邮件数据进行同步,减少数据传输量及比对邮件数量,同步效率更高。

本发明实施例还提供一种邮件同步装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述的邮件同步方法。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述邮件同步装置中的执行过程。例如,所述计算机程序可以被分割成索引数据获取模块,用于分别获取主节点系统以及镜像节点系统在设定时间范围内邮件的索引数据,其中,所述索引数据包括邮件标识、标志位、文件夹以及收信时间;第一索引列表生成模块,用于根据所述主节点系统在所述设定时间范围内邮件的索引数据生成第一邮件索引列表;第二索引列表生成模块,用于根据所述镜像节点系统在所述设定时间范围内邮件的索引数据生成第二邮件索引列表;第一校验值生成模块,用于根据所述第一邮件索引列表生成所述主节点系统在所述设定时间范围内邮件的校验值;第二校验值生成模块,用于根据所述第二邮件索引列表生成所述镜像节点系统在所述设定时间范围内邮件的校验值;校验值对比模块,用于对比所述主节点系统生成的校验值以及所述镜像节点系统生成的检验值;邮件同步模块,用于当所述主节点系统生成的校验值与所述镜像节点系统生成的检验值不一致时,同步所述主节点系统与所述镜像节点系统在所述设定时间范围内的邮件数据。

所述邮件同步装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述邮件同步装置可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是邮件同步装置的示例,并不构成对邮件同步装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述邮件同步装置还可以包括输入输出设备、网络接入设备、总线等。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述邮件同步装置的控制中心,利用各种接口和线路连接整个邮件同步装置的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述邮件同步装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,所述邮件同步装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述的邮件同步法。

相对于现有技术,本发明实施例提供的一种邮件同步方法的有益效果在于:所述邮件同步方法包括:分别获取主节点系统以及镜像节点系统在设定时间范围内邮件的索引数据,其中,所述索引数据包括邮件标识、标志位、文件夹以及收信时间;根据所述主节点系统在所述设定时间范围内邮件的索引数据生成第一邮件索引列表;根据所述镜像节点系统在所述设定时间范围内邮件的索引数据生成第二邮件索引列表;根据所述第一邮件索引列表生成所述主节点系统在所述设定时间范围内邮件的校验值;根据所述第二邮件索引列表生成所述镜像节点系统在所述设定时间范围内邮件的校验值;对比所述主节点系统生成的校验值以及所述镜像节点系统生成的检验值;当所述主节点系统生成的校验值与所述镜像节点系统生成的检验值不一致时,同步所述主节点系统与所述镜像节点系统在所述设定时间范围内的邮件数据。通过所述方法能够有效缩短邮件对比的时间,实现小范围的邮件数据同步,提高邮件数据的同步效率,同时可以实现主节点系统与镜像节点系统的双向同步。本发明实施例还提供一种邮件同步装置与计算机可读存储介质。

以上是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

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