本发明涉及网络通信技术领域,尤其涉及一种邮件传输方法、服务器及系统。
背景技术:
电子邮件是信息化社会中常用的信息传递手段,例如,在大部分企业内部,其最重要的沟通方式之一便是电子邮件。
然而,在一些应用场景下存在着大量内容相同或类似邮件重复传输的情况,如企业内部通知、材料发送等。内容相同或类似的邮件会严重浪费邮件传输系统的资源,影响邮件传输效率。
技术实现要素:
本发明提供一种邮件传输方法、服务器及系统,用以提高邮件传输效率。
第一方面,本发明实施例提供一种邮件传输方法,应用于包括第一节点和第二节点的邮件传输系统,所述第一节点用于接收发送端发送的邮件数据,所述第二节点用于向接收端发送所述邮件数据,所述方法包括:
所述第一节点对所述邮件数据进行分片处理,获取多个分片数据;
针对每一个分片数据,执行:
所述第一节点根据历史发送过的邮件数据,确定所述分片数据是否为已发送过的分片数据;
所述第一节点在所述分片数据为未发送过的分片数据时,向所述第二节点发送所述分片数据;
所述第一节点在所述分片数据为已发送过的分片数据时,向所述第二节点发送所述分片数据的特征值;所述特征值用于指示所述第二节点获取所述分片数据。
在上述方案中,第一节点将邮件数据进行分片,根据历史发送过的邮件数据,确定所述分片数据是否为已发送过的分片数据。在分片数据为已发送过的分片数据时,第一节点只发送分片数据的特征值,用于向接收端发送邮件数据的第二节点可以根据特征值获取分片数据,从而减少了第一节点与第二节点之间传输的数据量,节省了对邮件传输系统的资源占用,进而提高了邮件传输效率。
可选的,所述第一节点在所述分片数据为未发送过的分片数据时,还包括:
所述第一节点在所述第一节点的本地缓存中缓存所述分片数据和所述分片数据的特征值;
所述第一节点在所述分片数据为未发送过的分片数据时,还包括:
所述第一节点在所述第一节点的本地缓存中缓存所述分片数据和所述分片数据的特征值;
所述第一节点根据历史发送过的邮件数据,确定所述分片数据是否为已发送过的分片数据,包括:
获取所述分片数据的特征值;
根据所述分片数据的特征值查询所述第一节点的本地缓存;
在所述本地缓存中存在所述分片数据的特征值时,确定所述分片数据为已发送过的分片数据;
在所述本地缓存中不存在所述分片数据的特征值时,确定所述分片数据为未发送过的分片数据。
在上述方案中,第一节点在分片数据为未发送过的分片数据,会在第一节点的本地缓存中保存该分片数据和该分片数据的特征值。因此,第一节点通过查询本地缓存便可以确定分片数据是否为已发送过的分片数据。由于特征值可以根据分片数据直接计算得到,而且能够唯一标识分片数据,因此第一节点可以通过特征值查询本地缓存,从而确定是否发送过分片数据。
可选的,所述第一节点对所述邮件数据进行分片处理之前,还包括:
对所述邮件数据进行解析,确定所述邮件数据的正文数据;
对所述邮件数据进行分片处理,包括:
对所述邮件数据的正文数据进行分片处理。
在上述方案中,内容相同或类似的邮件,多由邮件正文内容的重复程度而定,邮件标题等其它数据可能存在不同,因此可以只对邮件正文进行分片,从而简化分片处理过程,减轻第一节点的处理压力。
可选的,所述向所述第二节点发送所述分片数据的特征值之后,还包括:
所述第一节点接收所述第二节点发送的未命中响应;所述未命中响应是所述第二节点在所述第二节点的本地缓存中未获取所述特征值对应的分片数据时向所述第一节点发送的;所述未命中响应包括所述特征值;
所述第一节点根据所述未命中响应中的特征值确定所述特征值对应的分片数据;
所述第一节点向所述第二节点发送所述特征值对应的分片数据。
采用上述方案,虽然分片数据为已发送过的分片数据,但可能不是发送给第二节点的,因此,第二节点有可能在收到特征值后在第二节点的本地缓存中获取不到该特征值对应的分片数据,此时第二节点会向第一节点发送未命中响应。第一节点收到未命中响应后,再次向第二节点发送分片数据,使得第二节点能够获取该分片数据。
可选的,向所述第二节点发送所述分片数据,包括:
向所述第二节点发送第一数据包,所述第一数据包中包括所述分片数据、所述分片数据的特征值及所述分片数据的分片序号;所述分片序号用于标识与所述分片序号对应的分片数据在所述邮件数据中的序号;
所述向所述第二节点发送所述分片数据的特征值,包括:
向所述第二节点发送第二数据包,所述第二数据包包括所述分片数据的特征值及所述分片数据的分片序号。
采用上述方案,第一节点向第二节点发送的第一数据包和第二数据包中还包括分片数据所对应的分片序号,使得第二节点可以根据分片序号确定分片数据在邮件数据中的顺序,从而可以将多个分片数据合并为邮件数据并发送给接收端。
第二方面,本发明实施例提供一种邮件传输方法,应用于包括第一节点和第二节点的邮件传输系统,所述第一节点用于接收发送端发送的邮件数据,所述第二节点用于向接收端发送所述邮件数据,所述方法包括:
所述第二节点接收所述第一节点发送的邮件数据的分片数据;所述分片数据是所述第一节点对所述邮件数据进行分片处理后,根据历史发送过的邮件数据,确定所述分片数据为未发送过的分片数据时,向所述第二节点发送的;和/或
所述第二节点接收所述第一节点发送的所述邮件数据的分片数据的特征值;所述特征值是所述第一节点对所述邮件数据进行分片处理后,根据历史发送过的邮件数据,确定所述分片数据为发送过的分片数据时,向所述第二节点发送的;
所述第二节点根据接收的各分片数据和/或各特征值生成所述邮件数据;
所述第二节点将所述邮件数据发送给所述接收端。
可选的,所述第二节点接收所述第一节点发送的邮件数据的分片数据,包括:
所述第二节点接收所述第一节点发送的第一数据包,所述第一数据包包括所述分片数据及所述分片数据的特征值;
所述第二节点将所述分片数据和所述分片数据的特征值存入所述第二节点的本地缓存;
所述第二节点接收所述第一节点发送的所述邮件数据的分片数据的特征值后,还包括:
所述第二节点根据所述特征值查询所述第二节点的本地缓存;
所述第二节点在所述第二节点的本地缓存中存在所述特征值对应的分片数据时,获取所述分片数据。
可选的,还包括:
所述第二节点在所述第二节点的本地缓存中不存在所述特征值对应的分片数据时,向所述第一节点发送未命中响应;所述未命中响应包括所述特征值,所述未命中响应用于指示所述第一节点向所述第二节点发送所述特征值和所述分片数据。
可选的,所述第二节点接收所述第一节点发送的所述邮件数据的分片数据的特征值,包括:
所述第二节点接收所述第一节点发送的第二数据包;所述第二数据包包括分片数据的特征值及分片数据的分片序号;所述分片序号用于标识与所述分片序号对应的分片数据在所述邮件数据中的序号;所述第一数据包还包括分片数据的分片序号;
所述第二节点根据接收的各分片数据和/或各特征值生成所述邮件数据,包括:
所述第二节点根据所述第一数据包和/或所述第二数据包获取各分片数据;
所述第二节点根据所述分片序号将所述各分片数据合并为所述邮件数据。
第三方面,本发明实施例提供一种节点服务器,应用于包括第一节点和第二节点的邮件传输系统,所述第一节点用于接收发送端发送的邮件数据,所述第二节点用于向接收端发送所述邮件数据,所述节点服务器对应于所述第一节点,所述节点服务器包括:处理单元和收发单元;
所述处理单元,用于对所述邮件数据进行分片处理,获取多个分片数据;针对每一个分片数据,执行:根据历史发送过的邮件数据,确定所述分片数据是否为已发送过的分片数据;在所述分片数据为未发送过的分片数据时,通过所述收发单元向所述第二节点发送所述分片数据;在所述分片数据为已发送过的分片数据时,通过所述收发单元向所述第二节点发送所述分片数据的特征值;所述特征值用于指示所述第二节点获取所述分片数据。
可选的,所述处理单元还用于:
在所述第一节点的本地缓存中缓存所述分片数据和所述分片数据的特征值;
所述处理单元用于:
获取所述分片数据的特征值;
根据所述分片数据的特征值查询所述第一节点的本地缓存;
在所述本地缓存中存在所述分片数据的特征值时,确定所述分片数据为已发送过的分片数据;
在所述本地缓存中不存在所述分片数据的特征值时,确定所述分片数据为未发送过的分片数据。
可选的,所述处理单元还用于:
对所述邮件数据进行解析,确定所述邮件数据的正文数据;
所述处理单元用于:
对所述邮件数据的正文数据进行分片处理。
可选的,所述收发单元还用于:
接收所述第二节点发送的未命中响应;所述未命中响应是所述第二节点在所述第二节点的本地缓存中未获取所述特征值对应的分片数据时发送的;所述未命中响应包括所述特征值;
所述处理单元还用于:
根据所述未命中响应中的特征值确定所述特征值对应的分片数据;通过所述收发单元向所述第二节点发送所述特征值对应的分片数据。
可选的,所述处理单元用于:
通过所述收发单元向所述第二节点发送第一数据包,所述第一数据包中包括所述分片数据、所述分片数据的特征值及所述分片数据的分片序号;所述分片序号用于标识与所述分片序号对应的分片数据在所述邮件数据中的序号;
通过所述收发单元向所述第二节点发送第二数据包,所述第二数据包包括所述分片数据的特征值及所述分片数据的分片序号。
第四方面,本发明实施例提供一种节点服务器,应用于包括第一节点和第二节点的邮件传输系统,所述第一节点用于接收发送端发送的邮件数据,所述第二节点用于向接收端发送所述邮件数据,所述节点服务器对应于所述第二节点,所述节点服务器包括:处理单元和收发单元;
所述收发单元,用于接收所述第一节点发送的邮件数据的分片数据;所述分片数据是所述第一节点对所述邮件数据进行分片处理后,根据历史发送过的邮件数据,确定所述分片数据为未发送过的分片数据时发送的;和/或
接收所述第一节点发送的所述邮件数据的分片数据的特征值;所述特征值是所述第一节点对所述邮件数据进行分片处理后,根据历史发送过的邮件数据,确定所述分片数据为发送过的分片数据时发送的;
所述处理单元,用于根据接收的各分片数据和/或各特征值生成所述邮件数据;通过所述收发单元将所述邮件数据发送给所述接收端。
可选的,所述收发单元用于:
接收所述第一节点发送的第一数据包,所述第一数据包包括所述分片数据及所述分片数据的特征值;
所述处理单元用于:
将所述分片数据和所述分片数据的特征值存入所述第二节点的本地缓存;
所述处理单元还用于:
根据所述特征值查询所述第二节点的本地缓存;在所述第二节点的本地缓存中存在所述特征值对应的分片数据时,获取所述分片数据。
可选的,所述处理单元还用于:
在所述第二节点的本地缓存中不存在所述特征值对应的分片数据时,向所述第一节点发送未命中响应;所述未命中响应包括所述特征值,所述未命中响应用于指示所述第一节点发送所述特征值和所述分片数据。
可选的,所述收发单元用于:
接收所述第一节点发送的第二数据包;所述第二数据包包括分片数据的特征值及分片数据的分片序号;所述分片序号用于标识与所述分片序号对应的分片数据在所述邮件数据中的序号;所述第一数据包还包括分片数据的分片序号;
所述处理单元用于:
根据所述第一数据包和/或所述第二数据包获取各分片数据;根据所述分片序号将所述各分片数据合并为所述邮件数据。
第五方面,本发明实施例提供一种邮件传输系统,包括如上述第三方面和第四方面中任一项所述的节点服务器。
第六方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如第一方面中任一项所述的方法,和/或,如上述第二方面中任一项所述的方法。
第七方面,本发明实施例提供一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如上述第一方面中任一项所述的方法,和/或,如上述第二方面中任一项所述的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种邮件传输系统;
图2为本发明实施例提供的一种邮件传输方法流程示意图;
图3为本发明实施例提供的一种具体可行的邮件传输系统结构示意图;
图4为本发明实施例提的一种邮件发送过程示意图;
图5为本发明实施例提供的一种具体可行的第一节点邮件传输流程示意图;
图6为本发明实施例提供的一种具体可行的第二节点邮件传输流程示意图;
图7为本发明实施例提供的一种节点服务器结构示意图;
图8为本发明实施例提供的一种节点服务器结构示意图;
图9为本发明实施例提供的一种节点服务器结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种邮件传输系统,如图1所示,邮件传输系统100包括第一节点101和第二节点102,其中,第一节点101用于接收发送端发送的邮件数据,第二节点102用于向接收端发送邮件数据。第一节点101与第二节点102之间通过网络连接。具体实施过程中,第一节点101和第二节点102可以是加速网络中的节点,如网宿科技的appa加速网络。在appa加速网络中,其节点分布在全球各个地区,该系统可以分为近端和远端,其中近端指的是靠近发送端的appa节点,即本发明实施例中的第一节点101,远端指的是靠近接收端的appa节点,即本发明实施例中的第二节点102。应理解,发送端和接收端之间可以相互转换,因此对于任一节点而言,其也可以在第一节点101或第二节点102之间进行转换。例如,在邮件服务器向用户终端发送邮件的过程中,发送端为邮件服务器,接收端为用户终端时,第一节点为101靠近邮件服务器的节点,第二节点102为靠近用户终端的节点。而在用户终端向邮件服务器上传邮件数据的过程中,发送端为用户终端,接收端为邮件服务器,第一节点101为靠近用户终端的节点,第二节点102为靠近邮件服务器的节点。
基于图1所示的邮件传输系统,本发明实施例提供一种邮件传输方法。图2为本发明实施例提供的一种邮件传输方法流程示意图,如图2所示,主要包括以下步骤:
s201:第一节点对邮件数据进行分片处理,获取多个分片数据。
s202:针对每一个分片数据,执行:第一节点根据历史发送过的邮件数据,确定分片数据是否为已发送过的分片数据;第一节点在分片数据为未发送过的分片数据时,向第二节点发送分片数据;第一节点在分片数据为已发送过的分片数据时,向第二节点发送分片数据的特征值;特征值用于指示第二节点获取分片数据。
s203:第二节点接收第一节点发送的邮件数据的分片数据,和/或,第一节点发送的邮件数据的分片数据的特征值。
s204:第二节点根据接收的各分片数据和/或各特征值生成邮件数据;
s205:第二节点将邮件数据发送给接收端。
在s201中,第一节点的邮件数据是发送端提供给第一节点的。在具体实施过程中,分片数据的大小可以根据邮件系统的实际工作环境而定,分片数据越短越容易命中,但是需要耗费更多的第一节点的系统资源。反之,分片数据越长则越难命中,但是所耗费的第一节点的系统资源更小。可选的,第一节点可以按照一定的规律对邮件数据进行分片,使得在邮件数据与历史发送过的邮件数据的初始数据不同时,能够在一定分片数量内,实现追击并使得后续分片数据实现对齐,即该邮件数据后续分片数据将与历史发送过的邮件数据的分片数据一致。同样的,在邮件数据中间部分如果发生与历史发送过的邮件数据不同时,只要后续数据足够,依然能够完成后续分片数据的对齐。
可选的,第一节点在对邮件数据进行分片处理之前,还包括:对邮件数据进行解析,确定邮件数据的正文数据;对邮件数据进行分片处理,包括:对邮件数据的正文数据进行分片处理。应理解,本申请中的正文数据包括邮件中的附件数据。相同或类似的邮件,多指的是邮件正文数据的重复,邮件标题等其它数据可能存在不同,因此可以只对邮件正文进行分片,其它数据可以按照现有技术进行处理。
在s202中,第一节点将每一个分片数据与历史发送过的邮件数据进行比较,以确定分片数据是否为已发送过的分片数据。应理解,历史发送过的邮件数据指的是邮件传输系统发送过的邮件数据,对于第一节点而言,即包括其发送过的邮件数据,也包括第一节点接收过的数据。具体实施过程中,第一节点可以将邮件数据分为多个分片数据后,再将每一个分片数据分别与历史发送过的邮件数据进行比较,也可以每获取一个分片数据,便将该分片数据与历史发送过的邮件数据进行比较等等。
在一种可行的实现方式中,历史发送过的邮件数据是以分片数据的形式缓存在第一节点的本地缓存中的。在第一节点的本地缓存中,每一个分片数据都有对应的特征值。针对待发送的邮件数据的任一分片数据,计算该分片数据的特征值并根据该特征值查询本地缓存已确定该分片数据是否是已发送过的分片数据。应理解,在本实现方式中,第一节点的本地缓存中可以不保存完整的邮件数据,只保存已发送过的邮件数据的分片数据及其各分片数据对应的特征值。在本发明实施例中,特征值是按预设的特征值算法根据分片数据计算获得的,例如,采用md5算法对分片数据进行运算从而获得该分片数据的特征值。特征值的大小远远小于分片数据,因此,第一节点向第二节点发送特征值相较于向第二节点发送分片数据,将占用更少的资源,从而能够获得更高的传输效率。
可选的,第一节点在分片数据为未发送过的分片数据时,向第二节点发送分片数据的同时,还会向第二节点发送该分片数据的特征值,第二节点缓存该分片数据和特征值,使得下一次第一节点需要发送该分片数据时,只需发送该分片数据的特征值,第二节点便可以根据该分片数据的特征值从第二节点的本地缓存中获取该分片数据。在另一种可选的实现方式中,第一节点在分片数据为未发送过的分片数据时,向第二节点发送分片数据后,第二节点接收该分片数据,并按照预先约定的特征值算法获取该分片数据的特征值并缓存该分片数据和该分片数据的特征值。以上实施方式皆可以根据实际使用情况灵活配置。
可选的,第一节点在分片数据为未发送过的分片数据时,还包括:第一节点在第一节点的本地缓存中缓存分片数据和分片数据的特征值;第一节点根据历史发送过的邮件数据,确定分片数据是否为已发送过的分片数据,包括:获取分片数据的特征值;根据分片数据的特征值查询第一节点的本地缓存;在本地缓存中存在分片数据的特征值时,确定分片数据为已发送过的分片数据;在本地缓存中不存在分片数据的特征值时,确定分片数据为未发送过的分片数据。
在上述方案中,第一节点在分片数据为未发送过的分片数据,会在第一节点的本地缓存中保存该分片数据和该分片数据的特征值。因此,第一节点通过查询本地缓存便可以确定分片数据是否为已发送过的分片数据。由于特征值可以根据分片数据直接计算得到,而且能够唯一标识分片数据,因此第一节点可以通过特征值查询本地缓存,从而确定是否发送过分片数据。而且,由于特征值的大小较分片数据小得多,通过比对特征值可以大大提高第一节点的处理速度。
在s204中,对于特征值,第二节点可以先根据特征值获取该特征值对应的分片数据,之后,将多个分片数据合并为邮件数据。
可选的,在第二节点收到分片数据的同时还收到该分片数据的特征值的情况下,第二节点对应缓存该分片数据和该特征值。可选的,在第二节点只收到分片数据时,第二节点根据预先约定的特征值算法获得该分片数据的特征值,第二节点对应缓存该分片数据和该分片数据的特征值。第二节点只收到特征值时,根据该特征值查询第二节点的本地缓存,以获取该特征值对应的分片数据。
对于任一分片数据而言,虽然第一节点发送过该分片数据,但可能不是发送给第二节点的,因此,第二节点有可能在收到特征值后在本地缓存中找不到对应的分片数据。可选的,在第二节点的本地缓存中存在该特征值对应的分片数据时,第二节点向第一节点返回命中响应。可选的,在第二节点的本地缓存中不存在特征值对应的分片数据时,第二节点向第一节点发送未命中响应,未命中响应包括特征值。第一节点接收第二节点发送的未命中响应,根据未命中响应中的特征值确定特征值对应的分片数据,向第二节点发送特征值对应的分片数据。第二节点接收该分片数据,并对其进行后续处理。可选的,第一节点在返回分片数据的同时还会返回该分片数据的特征值,以便于第二节点进行识别和缓存。
第二节点在获取邮件数据的全部分片数据后,将分片数据合并为该邮件数据。可选的,第一节点通过数据包向第二节点发送分片数据或分片数据的特征值。在分片数据为未发送过的分片数据时,向第二节点发送第一数据包,第一数据包中包括分片数据、分片数据的特征值及分片数据的分片序号;在分片数据为已发送过的分片数据时,向第二节点发送第二数据包,第二数据包包括分片数据的特征值及分片数据的分片序号。第二节点在收到第二数据包后,先根据第二数据包中的特征值获取对应的分片数据。在根据第一数据包和第二数据包获取了分片数据后,在根据每个数据包中的分片序号将分片数据合并为邮件数据。例如,数据包1中包括分片数据a、分片数据a的特征值a、和分片序号x,数据包2中包括特征值b和分片序号y,则第二节点根据特征值b获得与特征值b对应的分片数据b,并分别按分片序号x和分片序号y将分片数据a和分片数据b合并为邮件数据。
为了更具体地说明本发明实施例所提供的邮件传输方法,本发明实施例还提供以下具体实例以供说明:
图3为本发明实施例提供的一种具体可行的邮件传输系统结构示意图,如图3所示,邮件传输系统100位于邮件服务器200与用户终端300和用户终端400之间,邮件传输系统100中包括节点101和节点102,其中,节点101靠近邮件服务器200,节点102靠近用户终端300和用户终端400。需指出的是,不论是在本发明实施例中,还是在现有技术中,用户终端接收邮件之前都需要向邮件服务器直接或间接发送邮件请求,邮件请求中包括用户终端所要接收的目的邮件信息,邮件服务器接收邮件请求后,才会向用户终端直接或间接发送邮件数据。
基于图3所示的邮件传输系统100,本发明实施例以邮件群发和邮件转发两种常见的邮件数据重复率高的情况对本发明实施例所提供的邮件转发方法进行说明。
在情况一中,邮件服务器200对用户终端300和用户终端400群发邮件1。
以用户终端300为例,邮件服务器200在向用户终端300发送邮件1的过程中,邮件服务器200为发送端,用户终端300为接收端,因此,节点101为第一节点,节点102为第二节点。图4为本发明实施例提的一种邮件发送过程示意图,如图4所示,主要包括以下步骤:
s401:用户终端300向节点102发送邮件请求。
邮件请求中包括邮件1的标识。
s402:节点102将邮件请求通过加速网络发送给节点101。
s403:节点101将邮件请求转发给邮件服务器。
s404:邮件服务器根据邮件1的标识获取邮件1。
s405:邮件服务器将邮件1发送给节点101。
s406:节点101对邮件1进行分片处理。
s407:节点101根据历史发送过的邮件数据,确定所述分片数据是否为已发送过的分片数据。
s408:节点101通过加速网络向节点102发送分片数据和/或分片数据的特征值。
s409:节点102根据分片数据或分片数据的特征值,获得邮件1。
s410:节点102将邮件1发送给用户终端300。
在图4所示的流程中,节点101作为第一节点,具体执行如图5所示过程,图5为本发明实施例提供的一种具体可行的第一节点邮件传输流程示意图,其对应于图4中的s406至s408,具体包括以下步骤:
s501:接收邮件1。
s502:解析邮件1。
对邮件1的解析主要包括识别邮件1的正文开始位置、正文结束位置。
s503:确定邮件1的正文开始位置。
s504:对邮件1的正文进行分片处理,获取分片数据a。
其中,分片数据a并不特指某一具体分片数据,而是对邮件1进行分片处理时,最新获得的分片数据。
s505:计算分片数据a的特征值。
s506:根据分片数据a的特征值查询本地缓存。在本地缓存中存在分片数据a时,执行s507。在本地缓存中不存在分片数据a时,执行s508。
s507:构建第二数据包。
第二数据包包括分片数据a的特征值和分片数据a的分片序号。
s508:构建第一数据包。
第一数据包包括分片数据a、分片数据a的特征值和分片数据a的分片序号。
s509:对第一数据包和/或第二数据包构成的数据流进行压缩并发送。
s510:判断分片处理是否到达邮件1的正文结束位置;若是,则执行s511;若否,则返回s504,继续对还未分片的数据进行分片处理。
s511:结束。
s512:接收节点102返回的响应消息。
s513:判断接收到的应答消息是否为未命中响应,若是,则执行s508,若否,则执行s511。
在图4所示的流程中,节点102作为第二节点,具体执行如图6所示过程,图6为本发明实施例提供的一种具体可行的第二节点邮件传输流程示意图,其对应于图4中的s409和s410,具体包括以下步骤:
s601:接收数据包。
s602:解压缩。
s603:在数据包为第一数据包时,获取第一数据包中的分片数据和特征值。
s604:缓存分片数据和特征值。
s605:在数据包为第二数据包时,获取第二数据包中的特征值。
s606:根据特征值查询本地缓存。在本地缓存中存在对应的分片数据时,执行s607。在本地缓存中不存在对应的分片数据时,执行s608。
s607:更新本地缓存中该分片数据的生命周期。
s608:向节点101发送未命中响应。
s609:向节点101发送命中响应。
s610:根据分片序号,组装分片数据,获取邮件1。
s611:将邮件1发送给用户终端300。
通过图4、图5和图6所示流程,使用户终端300接收到了邮件1。假设邮件1同时群发至用户终端400,在用户终端300已接收到了邮件1的情况下,节点102中将缓存有邮件1所有的分片数据,节点101向节点102发送邮件1时,邮件1的所有分片数据都是已发送过的分片数据,因此节点101只需向节点102发送分片数据的特征值和分片序号即可,节点102可以根据分片数据的特征值从节点102的本地缓存中获取分片数据,并根据分片序号将分片数据合并为邮件1,进而将邮件1发送给用户终端400。
情况二:用户终端300向用户终端400转发邮件。
假设用户终端300对邮件1进行了编辑,生成了邮件2。用户终端300需要先将邮件2直接或间接上传至邮件服务器200,再由用户终端400直接或间接向邮件服务器200发送邮件请求以使邮件服务器200将邮件2直接或间接发送给用户终端400。
基于图3所示的邮件传输系统,在用户终端300向邮件服务器200上传邮件2的过程中,用户终端300为发送端,邮件服务器200为接收端,因此节点102为第一节点,节点101为第二节点。
节点102接收用户终端300发送的邮件2后,也会对邮件2进行分片处理,并确定每一个分片数据是否为已发送过的分片数据。由于邮件2是在邮件1的基础上编辑获得的,因此,邮件2的分片数据中大部分是已发送过的分片数据,只有部分分片数据为未发送过的分片数据。节点102对不同的分片数据采用与图5类似的处理过程,本发明实施例对此不再赘述。同样的,节点101对接收的数据包也会采用与图6类似的过程,本发明实施例对此也不再进行赘述。
基于相同的技术构思,本发明实施例还提供一种节点服务器,该节点服务器应用于包括第一节点和第二节点的邮件传输系统,第一节点用于接收发送端发送的邮件数据,第二节点用于向接收端发送邮件数据,该节点服务器对应于第一节点,可以实现上述任一实施例所提供的邮件传输方法。图7为本发明实施例提供的一种节点服务器结构示意图,如图7所示,节点服务器700包括:处理单元701和收发单元702;
处理单元701,用于对邮件数据进行分片处理,获取多个分片数据;针对每一个分片数据,执行:根据历史发送过的邮件数据,确定分片数据是否为已发送过的分片数据;在分片数据为未发送过的分片数据时,通过收发单元702向第二节点发送分片数据;在分片数据为已发送过的分片数据时,通过收发单元702向第二节点发送分片数据的特征值;特征值用于指示第二节点获取分片数据。
可选的,处理单元701还用于:
在第一节点的本地缓存中缓存分片数据和分片数据的特征值;
处理单元701具体用于:
获取分片数据的特征值;
根据分片数据的特征值查询第一节点的本地缓存;
在本地缓存中存在分片数据的特征值时,确定分片数据为已发送过的分片数据;
在本地缓存中不存在分片数据的特征值时,确定分片数据为未发送过的分片数据。
可选的,处理单元701还用于:
对邮件数据进行解析,确定邮件数据的正文数据;
处理单元701具体用于:
对邮件数据的正文数据进行分片处理。
可选的,收发单元702还用于:
接收第二节点发送的未命中响应;未命中响应是第二节点在第二节点的本地缓存中未获取特征值对应的分片数据时发送的;未命中响应包括特征值;
处理单元701还用于:
根据未命中响应中的特征值确定特征值对应的分片数据;通过收发单元702向第二节点发送特征值对应的分片数据。
可选的,处理单元701具体用于:
通过收发单元702向第二节点发送第一数据包,第一数据包中包括分片数据、分片数据的特征值及分片数据的分片序号;分片序号用于标识与分片序号对应的分片数据在邮件数据中的序号;
通过收发单元702向第二节点发送第二数据包,第二数据包包括分片数据的特征值及分片数据的分片序号。
基于相同的技术构思,本发明实施例还提供一种节点服务器,该节点服务器应用于包括第一节点和第二节点的邮件传输系统,第一节点用于接收发送端发送的邮件数据,第二节点用于向接收端发送邮件数据,该节点服务器对应于第二节点,可以实现上述任一实施例所提供的邮件传输方法。图8为本发明实施例提供的一种节点服务器结构示意图,如图8所示,节点服务器800包括:处理单元801和收发单元802;
收发单元802,用于接收第一节点发送的邮件数据的分片数据;分片数据是第一节点对邮件数据进行分片处理后,根据历史发送过的邮件数据,确定分片数据为未发送过的分片数据时发送的;和/或
接收第一节点发送的邮件数据的分片数据的特征值;特征值是第一节点对邮件数据进行分片处理后,根据历史发送过的邮件数据,确定分片数据为发送过的分片数据时发送的;
处理单元801,用于根据接收的各分片数据和/或各特征值生成邮件数据;通过收发单元802将邮件数据发送给接收端。
可选的,收发单元802具体用于:
接收第一节点发送的第一数据包,第一数据包包括分片数据及分片数据的特征值;
处理单元801具体用于:
将分片数据和分片数据的特征值存入第二节点的本地缓存;
处理单元801还用于:
根据特征值查询第二节点的本地缓存;在第二节点的本地缓存中存在特征值对应的分片数据时,获取分片数据。
可选的,处理单元801还用于:
在第二节点的本地缓存中不存在特征值对应的分片数据时,向第一节点发送未命中响应;未命中响应包括特征值,未命中响应用于指示第一节点发送特征值和分片数据。
可选的,收发单元802具体用于:
接收第一节点发送的第二数据包;第二数据包包括分片数据的特征值及分片数据的分片序号;分片序号用于标识与分片序号对应的分片数据在邮件数据中的序号;第一数据包还包括分片数据的分片序号;
处理单元801具体用于:
根据第一数据包和/或第二数据包获取各分片数据;根据分片序号将各分片数据合并为邮件数据。
基于相同的技术构思,本发明实施例还提供一种邮件传输系统,该邮件传输系统包括上述任一实施例所提供的节点服务器,能够实现上述任一实施例所提供的邮件传输方法。
基于相同的技术构思,本发明实施例提供一种计算设备,该计算设备为节点服务器,图9为本发明实施例提供的一种节点服务器结构示意图。图9中终端包括处理器900,用于读取存储器920中的程序,执行上述任一实施例提供的邮件传输方法。
在图9中,总线接口可以包括任意数量的互联的总线和桥,具体由处理器900代表的一个或多个处理器和存储器920代表的存储器的各种电路链接在一起。总线接口还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发器910可以是多个元件,即包括发送器和接收器,提供用于在传输介质上与各种其他装置通信的单元。
处理器900负责管理总线接口和通常的处理,存储器920可以存储处理器600在执行操作时所使用的数据。
可选的,处理器900可以是cpu(中央处埋器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或cpld(complexprogrammablelogicdevice,复杂可编程逻辑器件)。
基于相同的技术构思,本发明实施例还提供一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算设备执行上述任一实施方式中的域名解析方法。
所述非易失性计算机可读存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(mo)等)、光学存储器(例如cd、dvd、bd、hvd等)、以及半导体存储器(例如rom、eprom、eeprom、非易失性存储器(nandflash)、固态硬盘(ssd))等。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。