CN101636742B - 对有时间限制的消息进行有效处理的方法和设备 - Google Patents
对有时间限制的消息进行有效处理的方法和设备 Download PDFInfo
- Publication number
- CN101636742B CN101636742B CN2006800147315A CN200680014731A CN101636742B CN 101636742 B CN101636742 B CN 101636742B CN 2006800147315 A CN2006800147315 A CN 2006800147315A CN 200680014731 A CN200680014731 A CN 200680014731A CN 101636742 B CN101636742 B CN 101636742B
- Authority
- CN
- China
- Prior art keywords
- message
- metadata
- journal file
- time
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/107—Computer-aided management of electronic mailing [e-mailing]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/212—Monitoring or handling of messages using filtering or selective blocking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1458—Denial of Service
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Marketing (AREA)
- Physics & Mathematics (AREA)
- Economics (AREA)
- Computer Hardware Design (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Data Mining & Analysis (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
此处描述了对有时间限制的消息的有效处理(100)。在一个实施例中,消息被分类为有时间限制的消息(125)或者无时间限制的消息(130)。然后,将有时间限制的消息与无时间限制的消息分开处理(115(1),115(2))(120)。有时间限制的消息的示例可以包括垃圾邮件或者遵循保留策略的其它类型或种类的电子邮件,使得它们仅被保留一段设置期限的时间。与有时间限制的消息有关的元数据被编译并且与该消息分开存储,由此能够优化元数据存储并与该消息分开处理。在成批处理之前累加有时间限制的消息,由此减少由有时间限制的消息消耗的I/O操作的数量,并且减少用以支持有时间限制的消息的处理的资源的量和成本。
Description
技术领域
本发明涉及对有时间限制的消息的有效处理。
背景
垃圾邮件构成了到达并且由电子邮件服务、公司以及因特网服务提供商(ISP)处理的消息中的一大部分。由于垃圾邮件的出现,电子邮件业务和ISP的一大部分带宽和硬件资源都被用以加工并处理垃圾邮件。与此同时,由于垃圾邮件通常具有不同的性质并且处理方法与一般邮件不同,所以有机会通过利用这些具体性质和处理特性来优化电子邮件服务器和其它硬件的性能。更具体地,垃圾邮件消息趋向于比一般邮件消息小,它们被读取的可能性比较小,它们趋向于对终端用户不那么重要或者不那么有价值并由此会被成批删除,而且它们通常在某段时间周期(例如,几天)之后被自动删除。
在类似的环境中,公司在管理和存储诸如电子邮件的消息通信量时也可能面对类似的问题。更具体地,这些公司可能不仅受到垃圾邮件的影响,还受到发往在该公司工作的人员或由这些人员发出的大量非垃圾邮件消息的影响。为了降低由该公司内电子邮件服务器存储的这种消息的量,管理员可以建立在给定时间周期之后自动删除某类消息的命令。例如,可以在某些种类或类型的消息已被发送或接收的30天之后自动删除这些消息,而不考虑它们是否被认为是“垃圾邮件”。在这种情况下,这类非垃圾邮件消息可能与垃圾邮件共享某些特性,因为两者都会被保留规定的时间周期并且在该时间周期期满之后会被自动删除。
处理、管理以及删除大量的消息通常需要消息服务器执行大量的输入/输出(I/O)操作。已知这样的操作相比于实际移动考虑作为I/O操作的有效负载的数据,会在准备诸如磁盘驱动器之类的硬件的过程中涉及大量额外开销。然而,如果优化这种消息的处理,那么就可以降低或者合并被调配用以支持这种处理的硬件资源,从而降低ISP、电子邮件业务提供商、公司等的整体运营成本。此处的教导解决了本领域中的这些和其它问题。
概述
此处描述了对有时间限制的消息的有效处理。
在一个实现方式中,消息被分类为有时间限制的消息或无时间限制的消息。然后,将有时间限制的消息与无时间限制的消息分开处理。有时间限制的消息的示例可以包括垃圾邮件或遵循保留策略的其它类型或种类的电子邮件,使得它们仅被保留某个设定的时间周期。与有时间限制的消息有关的元数据被编译并与该消息分开存储,由此可以优化该元数据的存储并且与该消息分开处理。有时间限制的消息在被成批处理之前被累加,由此减少被有时间限制的消息消耗的I/O操作的量,并且降低支持有时间限制的消息的处理的资源的量和成本。
附图简述
查看附图描述了详细说明。在附图中,参考标记最左边的数字标识该参考标记首次出现的附图。在不同的附图中使用相同的参考标记表示相同或相似的条目。
图1是示出了用于对有时间限制的消息的有效处理的高级数据流程的框图。
图2是示出了与图1中所示的用于处理有时间限制的消息的管理和存储系统相关联的部件和数据流程的框图。
图3是更详细地示出了与图1和2中所示的管理和存储系统相关联的部件和数据流程,尤其是给定群集的各部件的框图。
图4是更详细地示出了与以上图3中所示的处理和存储有时间限制的消息的消息体相关联的部件和数据流程的框图。
图5是示出了如以上图3中所示的元数据存储结构的一种实现的框图。
图6是示出了该元数据存储结构的另一种实现的框图。
图7是示出了执行用以接收并投递有时间限制的消息的过程流程的流程图。
图8是示出了用于管理消息体被写入其中的一个或多个日志文件的过程流程的流程图。
图9是示出了用于存储与有时间限制的消息相对应的元数据的过程的流程图。
图10是图9中所示过程的时序图。
图11是示出了用于遍历表结构以搜索请求的元数据或标题信息的过程的流程图。
图12是示出了用于按请求检索给定的消息以便能够将其呈现给用户的过程的 流程图。
图13是示出了用于将给定的消息标记为已读的过程的流程图。
图14是示出了一计算环境的框图,在该计算环境中,用于对有时间限制的消息的有效处理的系统和方法以及此处描述的计算、网络和系统体系结构可以被全部或部分地实现。
详细说明
图1示出了根据此处的教导提供的高级数据流程100。消息105由消息分类器110接收。消息分类器110将这些消息105划分为至少两类,即包括有时间限制的消息115的第一类和包括无时间限制的消息120的至少第二类。有时间限制的消息115包括遵循规定它们被保留多久的某种规则的那些消息。消息115中不同的各消息可能遵循一个或多个不同的保留周期。图1示出了消息115的两个样本组,第一组消息115(1)遵循5天保留期,而第二组消息115(2)遵循30天保留期。尽管图中为了清楚和方便示出了消息115的两个组,但是任意数量的不同保留期都可应用于不同组的有时间限制的消息115。
消息115被路由给用于有时间限制的消息115的管理和存储系统125,该系统125会在此处详细描述。为了清楚和方便,示出的两组消息115(1)和115(2)路由给管理和存储系统125的一个实例。然而,应当注意到,可以为遵循不同保留期的每一不同组的消息115实现管理和存储系统125的各个实例。
无时间限制的消息120包括不遵循规定它们将被保留多久的任何规则并且因此被无限期地保留的那些消息120。这些消息120可以被路由给用于无时间限制的消息120的常规管理和存储系统130。
图1中所示的数据流程100可用于多种环境。作为第一个实施例,数据流程100可用于将电子邮件服务提供给多个订户的ISP上下文。在此第一实施例中,消息105可以采取电子邮件的形式引入订户,而消息分类器110可以采取垃圾邮件过滤器的形式。有时间限制的消息115可以采取由消息分类器110识别为垃圾邮件的电子邮件的形式。此ISP可以执行规定被分类为垃圾邮件的消息105将被保留多久的策略。为了讨论方便而非限制,该持续时间在此被称作“保留期”。例如,被分类为垃圾邮件的消息105可以遵循5天保留期。在此实施例中,被分类为垃圾邮件的消息105被路由给管理和存储系统125,该管理和存储系统125管理垃圾邮件并在保留期期满之后删除该垃圾邮件,这些将在如下进一步描述。
作为第二个实施例,数据流程100可用在服务于例如特定公司的电子邮件应用程序的上下文中。该公司可以执行对由该公司接收到的或从该公司发送的某类电子邮件指定保留期的策略。作为示例而非限制,特定公司可以为“已发送”电子邮件形式的消息105指定30天的保留期。在此实施例中,消息分类器110会识别这些“已发送”电子邮件,并且将它们路由给管理和存储系统125以按此策略的处理。
图2示出了与图1所示用于处理有时间限制的消息115的管理和存储系统125相关联的部件和数据流程。管理和存储系统125包括接收有时间限制的消息115的前端205,并且还包括与前端205通信的多个群集210(1)和210(N)(总称为群集210)。前端205在多个群集210之间进行负载平衡,并且将有时间限制的消息115中给出的那些消息如虚线215所表示的那样路由给群集210中的一个。
尽管图2中示出了N个群集210,但是此处所示的这种配置以及其它配置都仅仅是为了方便和简明而选择的,而没有限制此处的教导。相反,此处的教导可用任意数量的群集210来实现,其中N是从大于1的整数中选出的一个整数,从而群集的总数为N。此一般说明应用于此处示出的与整数N有关的任何部件。
图3示出了进一步细化的与图1和图2中所示的管理和存储系统125相关的部件和数据流程,尤其是群集210的部件。给出的群集210包括多个服务器机器305(1)和305(N)(总称为服务器机器305),在其上执行运行群集210的软件。服务器设备305的一个合适的示例是一种被配置用以支持此处所教导功能的微微(pico)服务器(“PServ”)网络服务器。
前端205选择给定的群集210来接收给定的有时间限制的消息115。选定群集210内的给定服务器设备305将给定的有时间限制的消息115的消息体310传递给一个或多个机器315以供存储,这在如下将结合图4进一步讨论。服务器机器305还向标题结构内填充与有时间限制的消息115有关的元数据320,并且将此元数据320路由给元数据存储结构325,所有这些将在如下结合图5作进一步的讨论。
服务器机器305能够把消息体310和元数据320写入各自的存储结构,由此使得消息体310和元数据320彼此分开存储。消息体310整体被认为是包括与该消息有关的任何标题数据,但是包含该元数据320的标题结构本身可以与该消息体310分开存储。与元数据320分开存储消息体310可以使管理和存储系统125彼此独立地优化对消息体310和元数据320的处理。在此处使用的术语“处理”至少可以包括接收、处理、存储或检索消息,或者在任何可应用保留期期满之后删除消息。
仅为了方便以及简明起见,图3示出了N个服务器机器305(分别为服务器机器305(1)和305(N))以及N个存储机器315(分别为存储机器315(1)和315(N))。然而,应当注意到,该举例说明并没有限制此处的教导。相反,此处的教导可以采用任意数量的服务器机器305和存储机器315来实现。更具体地,单个盒(asinglebox)可以运行或者容纳该服务器机器305、存储机器315以及元数据存储325。可替换地,前述机器中的部分或者全部都可以在其它盒上实现。
图4更详细地示出了与图3所示的处理并存储有时间限制的消息115的消息体310相关联的部件和数据流程。如以上图3中所讨论的,消息体310和元数据320是被分开的,并且在分开的结构中对其进行处理和存储。图4解决了管理消息体310的问题,而图5解决了管理元数据320的问题。
每个服务器机器305都包含在消息体310到达时其内可以存储消息体310数据结构405。此数据结构405可以驻留在服务器设备305的存储器中。数据结构405的确切性能并不关键,并且可以假设具有例如,队列、链接表、栈、阵列等的形式。数据结构405包括用于各个消息体310的响应的字段410(1)和410(N)(总称为字段410),并且仅为了方便起见,给出的消息体310被示为正载入字段410(N)中。假设数据结构405被实现为队列,则给出的消息体310可以被追加到该队列。
数据结构405用于累加多个相应的消息体310。当数据结构405变得足够大(例如,兆字节量级)或者在给定的时间间隔(例如,大约每次100毫秒)期满之后,数据结构405中的消息体310就被写入主存在相应存储机器315上的一个或多个日志文件415(1)和415(N)(总称为日志文件415或者日志文件组415)。此处所使用的术语“组”是指一个或多个中的一些。存储机器315可以使用磁盘驱动器介质以及相关的存储技术来主存日志文件415。如果适于给出的实现,则可出于冗余和容错的考虑将给出的消息体310写入日志文件组415。按照此处的教导的一些方面,日志文件415至少可以部分利用一个或多个数据库而被实现。在此实现中,日志文件415可以被成批写入一组表格。应当理解,此处的教导的这些方面本质上是示意性而非限定性的。
服务器机器305可以利用修改的循环复用算法选择存储机器315上的日志文件组415,这可以有偏差的以便存储机器315之间的负载平衡。例如,当给出的存储机器315达到其存储容量时,服务器机器305可以降低新消息体310被写入该存储机器315的速率。在此处教导的示意性实施例中,给出的日志文件415可以仅由一个服务器机器305写入,由此消除对调整由不同服务器机器305写入给出的日志 文件415的任何需要。当存在对该组415中的任何一部分的写入错误时,或者当日志文件415已经打开一给定的周期(例如,数小时)时,就可关闭日志文件组415,而这将在如下面结合图6进一步讨论。
与写入高速缓存、缓冲器或者中间数据结构的其它形式相比,可以使用迫使该写入完全通过磁盘介质的选项来写入日志文件415,并且可以认为直到该写入变为不变为止,该写入操作是不完全的。当完成对存储机器315的写入时,服务器机器305就得知存储给定的消息体310的日志文件415名称、包含该日志文件415的存储机器315、给定的消息体310在日志文件415内的偏移、以及消息体310的长度。服务器机器305可以为每个消息体310在元数据存储结构325中存储这些参数来作为元数据320。
与将每个消息体310逐一写入日志文件415相比,通过在将据结构405中的多个消息体310写入日志文件415之前累加这些消息体310,管理和存储系统125就实现更高的效率。假设存储机器315包括诸如磁盘驱动器的次级存储机器,并且从这种驱动器中读取或者写入这种驱动器被称作“I/O操作”,则每个I/O操作都涉及在可以从该存储媒体中读取或者向其写入任何数据“有效负载”之前在该存储介质内定位合适扇区的大量额外开销。更具体地,这种额外开销包括该驱动器在该驱动器上查找合适磁道所花费的时间、将读写头径向移动到该磁道的时间、以及旋转该驱动器以便恰当放置目标扇区位于该读写头之下的时间。通常,除非该有效负载很大,否则上述额外开销时间实质上超出了将数据传送给存储媒体或从中读取数据的时间。例如,根据当代标准,在兆字节的有效负载下接近此折衷点。然而随着技术的发展,此折衷点会改变。
以单独或者逐一的基础上将消息体310写入存储机器315的效率会很低,因为写入消息体310本身所花费的实际时间相对于上述额外开销可能很小。同样地,这种额外开销会在管理和存储系统125接收每个消息体310时重复,以致于存储X个消息体310会导致X次重复该额外开销。相反,管理和存储系统125在数据结构405中累加多个消息体310,并且然后将这些累加的消息体310成批写入存储机器315。因为这些消息体310被成批写入,则上述额外开销仅消耗了将消息体310写入存储机器315的整个I/O操作中的较小比例。同样地,存储X个消息体310就仅需要一个上述额外开销的示例。上述这两个因素就增加了由管理和存储系统125执行的I/O操作的整体效率。
因为I/O操作中的每一个都移动更多的“有效负载”,并且因此更加有效,所 以按此教导所构造的系统和方法可以采用较少I/O操作来支持常规系统的消息处理负载。因此,服务该负载所涉及的机器也较少,这意味着在获得并维护该机器所需的投入也更少。可替换地,如果将具有给定的一组资源的常规系统按照此教导修改,则它将能够处理更高的消息负载。
图5示出了图3所示元数据存储结构325的实现500。该元数据存储结构325的另一个实施例将在以下结合图6示出并讨论。
尽管以上讨论的日志文件415可以有效地收集并成批存储消息体310,但是在用户希望列表或者查看他或她邮箱的内容时,维持第二结构315存储与日志文件415分开的元数据可能更为有效。这种元数据320可以包括能够让适当的电子邮件应用程序显示消息标题的信息。
元数据320可以包括相对于终端用户可见的数据以及对该终端用户不可见的其它数据。可见元数据320可以包括表示消息的目的地和/或始发地址的数据、表示发送或接收时间的时间或日期标记、主题行、指示消息是否已被阅读的图标等。次可见的元数据320可以包括涉及给定的消息体310定位的信息,并且可以包括含有给定的消息体310的日志文件415的名称、包含日志文件415的存储机器315、该消息体310在日志文件415内的偏移、以及该消息体310的长度。
元数据存储结构325至少可以被实现为图5中所示的实施例500。在该实施例500中,元数据存储可以被实现为一组数据库表505(例如,基于SQL的表),并且在图6中所示的第二实施例中被实现为基于图像的日志。在这两个实施例中,用于给定邮箱的元数据320可以被存储在给定的存储机器315上。此外,元数据320还可以通过运行来自接收更新请求的服务器机器305的事务而被更新。在基于表的实现中,每一更新仅涉及一项事务,而这些更新被追加到适当的表。某些基于图像的实现可以执行分别读取和写入事务来实现次更新。然而,其它基于图像的实现也可以通过将写入聚拢到扇区边界或者通过将扇区尾端存储在存储器中来避免该读取事务。
相反,常规方法对于每个更新可能需要两项事务来考虑将部分写入记述到消息日志文件中。第一项事务读取该部分消息日志文件写入,而第二项事务则写入各更新。
图5和6中所示的实施例可以允许元数据320在过了保留期之后仍存在。也就是说,一些元数据320可以描述已经过期和/或已经被删除的消息体310和/或日志文件415。由于元数据320与消息体310分开存储和管理,所以可以为元数据320 和消息体310规定和优化各自的维护和删除算法。当最有效的是删除给定组的消息体310和/或日志文件415时,删除对应的元数据320可能就不是最有效的。然而,如以下将详细讨论的那样,服务器机器305在遍历元数据存储结构325时忽略这种“已过期”元数据320。在以元数据存储实现成SQL表505为特征的实施例中,服务器机器305可以写入被设计成不返回有关已删除的/过期的日志文件415和/或消息体310的元数据的队列。
在数据库表实施例500中,元数据320可以被存储在一组表505中。典型的表505(1)中的一行510(1)可以对应于由管理和存储系统125所存储的每个消息体310。当有新消息体310被存储或删除时,可以创建另一行510(N),或者可以删除或空出现有行510(N)。
表505可以被构造成自然为一代的(generational)。也就是说,给定的表505可以存储有关所有消息体310的元数据320一个给定的时间周期,例如,大约半个保留期。表505可以用邮箱ID515和消息ID520来索引,并且表505的各列可以与以上讨论的多种类型的元数据320相对应。对于每个给定的消息体310,列525可以存储包含存储该消息体310的日志文件415的存储机器315的ID,列530可以存储该存储机器315内的日志文件415的ID,列535可以存储消息体310在日志文件415内的偏移,而列540可以存储该消息体310的长度。单独的表可以跟踪任意表或者重复上述内容的其它结构的位置。
图6示出了元数据存储结构325的一个额外实现600。实施例600可以包括表605,该表有3行:用于给定邮箱的名称的行610,包含世代号(通常是整数)的行615,以及用于给定邮箱的图像的行620。各列都可以为每个邮箱而被实例化。
在此,图像620被称作日志“blob”。已知术语“blob”在工业上是是用作“二进制大型对象(binary large object)”的简写。因此,不是规定每个消息体310用一行515的表505,而是该实施例600可以包括用于每个非空邮箱的图像或者日志blob 620。
日志blob 620可以包含与上述表505中所含的元数据320相类似的元数据320。当服务器机器305为给定邮箱更新元数据320时,它可以从元数据存储结构325中检索用于该邮箱的日志blob 620和世代号615。服务器机器305随后就能够用新的元数据320更新该日志blob 620,递增该世代号615,以及将更新的日志blob620和递增的世代号615写回到元数据存储结构325。
在将更新的日志blob 620和递增的世代号615写回到元数据存储结构325之 前,服务器机器305检测自从服务器机器305最初读取该日志blob 620以来当前存储在元数据存储结构325内的日志blob 565的世代号615是否已经改变。如果该世代号61 5自从最初读取以来有所改变,则这就可能指示另一个服务器机器305或者其它过程已经在该读取和该更新之间的某一时刻更新了该日志blob 620。在这种情况下,服务器机器305重新读取该日志blob 620,并且重新尝试对元数据存储结构325的更新。
如果世代号615自从服务器机器305最初读取该日志blob 620以来尚未改变,该服务器机器305就更新元数据存储结构325。以此方式,世代号615可以避免不同的服务器机器305或其它过程对同一邮箱执行冲突的更新。
作为以上所述的世代号方案的一个可选替换,并且为了消除更新它的写入事务,如果当前值仍然是服务器机器305最初读取的值,则服务器机器305可以通过将日志blob 620更新为新值的增强更新事务而使用更新的日志blob 620来更新该元数据存储结构325。这种替换方法为了管理少一个的参数作为交换涉及为每一事务移动更多的数据,但是这种折衷在某些情况下是有利的。
另一可选替换组合了世代号方法和增强更新事务方法。这种可选替换可以将世代号615预挂起(pre-pend)或追加到日志blob 620的开头或末尾。在更新过程中,服务器机器305可以引用该世代号615来确保产生看上去相同的中间结果的一组更新会被适当地串行化。
当为给定邮箱更新日志blob 620时,服务器机器305在重写该日志blob 620之前,可以为该邮箱删除元数据320中任何陈旧项。陈旧项例如可以包括与比可用保留期还要老旧的有时间限制的消息115相对应的项。如果该邮箱中不再有消息体310,则递增世代号615并且删除日志blob 620。删除日志blob 620的一种方法是将其作为零长度文件写入。
非空日志blob 620可以具有一最小尺寸,该最小尺寸大到仅有很小百分比的邮箱可能需要比这个尺寸更大的尺寸。如果大量的相邻页被分配在有关该日志blob620的表605中,则日志blob 620在其增大或者收缩时就无需重新分配。例如,假设给定的实现中,每天每个邮箱有八(8)个消息到达。如果用于给定的有时间限制的消息115的元数据320大约是500个字节,并且保留期是5天,那么日志blob565的平均使用部分会是约20K。这样,64K的最小blob尺寸应当会使几乎所有日志blob 620不再需要扩大。这种方法比起其它方法可能会在整体上使用更多的空间,但是其使用的总空间则仍可能是相对较小的。每个存储机器315的邮箱的平均 数量是大约100,000,所以配置64K/邮箱会使支持日志blob 620的每个存储机器315存储6.4G。
如果给定的邮箱根本没有活动(既没有消息达到,也没被所有者访问),那么其日志blob 620会无限地维持,即使它可能仅描述了过期的消息体310。在管理和存储系统125的某些实施例中,代理进程(daemon)可以遍历该邮箱,并且移动与过期消息体310有关的任何元数据320。然而,如果管理和存储系统125在某个时间周期之后完全移除了不活动的邮件账户,则该类的代理进程可能并无意义。
图7示出了被执行用以接收和存储有时间限制的消息115的过程700。在框705,处理700等待给定的有时间限制的消息115的到达或者与数据结构405(可以采取缓冲器的形式)相关联的超时参数期满的发生。例如,给定的有时间限制的消息115可以由管理和存储系统125接收,并且被路由给服务器机器305。当这些事件中的任一事件发生时,过程700进行到框710,在其中确定与该数据结构405相关联的超时参数是否已经期满。如果超时参数尚未期满,则过程700就就如框715所示把有时间限制的消息115载入数据结构405。然后,过程700进行至框720以评估数据结构405是否已满。如果数据结构405未满,则过程700返回框705以等待下一个事件,该事件可以是超时条件或者下一个有时间限制的消息310的到达。从框720,如果数据结构405已满,这过程700进行到框725。图7包括页面上的标号A,以便方便和清楚的表示过程700。然而,包括页面上的标号A并非以任何方式限制此处的教导。
返回到框710,如果超时参数已经期满,过程700随后进行到框725。同样地,包括页面上的A并非以任何方式限制此处的教导。在框725,过程700确定是否已经超过了用于写入一个或多个当前日志文件415的时间限制。正如在别处更详细讨论的那样,可以在一个有限的时间周期内写入给定的日志文件415。如果已经超过了用于一个或多个当前日志文件415的时间限制,过程700则进行到框730以关闭一个或多个当前日志文件415。然后,过程700进行到框735以打开一个或多个新的日志文件415。然后,过程700返回到判定框725。
从框725,如果尚未超过有关一个或多个当前日志文件415的时间限制,则过程700进行到框740,在其中数据结构405的内容(即,多个有时间限制的消息115的消息体)被写入一个或多个日志文件。为了便于对有关有时间限制的消息115的元数据320的后续处理,就对每个消息115进行时间标记。这种时间标记可以在消息115被载入数据结构405中时发生,或者可以在数据结构405的内容被写入一 个或多个日志文件415时发生。
框745随后检验对一个或多个日志文件415的写入是否成功。假设消息115出于冗余的目的被写入两个或更多的日志文件415,如果对任何日志文件415的写入失败,随后过程700就进行到框730以关闭一个或多个当前日志文件415中的每一个。其后,过程700进行到框735以打开一个或多个新的日志文件415。其后,过程700进行到判定框725以检测是否已经超过了用于写入一个或多个当前日志文件415的时间限制。由于一个或多个当前日志文件415刚被创建,该过程700随后将进行到框740以重新尝试写入操作。
在某些实施例中,过程700可以打开存储机器315上的一个或多个新日志文件415,而不是打开先前向其写入失败的主存日志文件415的机器存储315。过程700的这个方面会导致消息115被写入日志文件组415中的一个日志文件415,而不是一个或多个其它日志文件415。然而,由于对日志文件组415的组合写入失败,所以没有元数据320引用日志文件415的非复制部分,因此日志文件415的非复制部分将来也不会被访问。由于在写入日志文件组415一半失败的情况下日志文件415被关闭并且没有被再次写入,所以日志文件415的尾部可能并不相同。然而,由于没有元数据320引用这些日志文件415的不同尾部,并且这些不同的尾部将来也不会被访问,所以这些文件的尾部可能不同的事实上无关紧要。
日志文件415可以使用全局唯一标识符(GUID)名称,其中日志文件组415的两个部分具有相同的名称。GUID允许服务器机器305在无需与管理和存储系统125的其它部件协调的情况下,为日志文件415创建不会冲突的名称。
基于消息115达到的时间的低位字节,有时间限制的消息115可以被分配给存储机器315上的日志文件415。作为将消息115分配给存储机器315上的日志文件415的这种方法的结果,用于特定邮箱的消息115被分布给不同的存储机器315。这意味着不均匀的邮箱尺寸和负载不太可能会造成管理和存储系统125中负载热点(hotspot)或者过载。基于各存储机器315上可用的空闲空间的循环复用算法的偏差可以进一步降低管理和存储系统125中出现存储热点或过载的可能性。
从判定框745,如果写入成功,则过程700进行到框750以创建与所存储的消息115相对应的元数据320。写入日志文件415的各消息115可以被寻址到多个不同的用户,并由此可以与多个不同的邮箱相关联。结果是每个用户的邮箱都可以包括被存储在多个日志文件415中的相应的消息,而上述多个日志文件415被存储在多个不同的存储机器上。元数据320能够为每个邮箱在随后定位和收集这些多个消 息115。因此,每个用户的邮箱通常都与元数据存储结构325相关联。在框755,过程700遍历被写入一个或多个当前日志文件415的每个消息115,识别每个消息115所寻址的邮箱,并且为每个这种邮箱定位主存该元数据320的元数据存储结构325。在框760,过程700用在框745中创建的元数据320为每个这种邮箱更新元数据存储结构325中的项。
假设用图5中所示的数据库表实施例500来实践该过程700,则该过程700通过将新行510添加到描述新消息体310的最新的世代表,就可以创建用于为新消息体310所创建的元数据320的项。
假设用图6中所示的日志blob实施例来实践过程700,该过程700可以读取该blob图像620以及世代号615,从blob图像620中清除任何过期项,将用于该新消息体310的项添加给blob图像620,并且启动对元数据存储结构325的事务以更新blob图像620并且在世代号615尚未改变的情况下更新世代号615。如果世代号61 5已经改变,则过程700在其从元数据存储结构325中读取的那一点重新启动。
图8示出了用于监视消息体310正写入其中的一个或多个日志文件415的状态的过程流程800。在框805,建立了此处所讨论的保留期参数。在上述的电子邮件的垃圾邮件实施例中,有关垃圾邮件的保留期可以被设置为5天。在上述企业电子邮件管理实施例中,用于“已发送”消息的保留期可以被设置为30天。在框810,过程800选择消息体310被写入的日志文件415中最旧的一个。例如,过程800可以访问与一个或多个日志文件415相关联的写入时间标记。如果出于某种原因,写入时间标记不可用或者不可访问,则假设消息体310按照达到的顺序被写入到日志文件415,就使用最新的消息体310被写入到日志文件415的时间开确定日志文件415的年龄。在框815,过程800确定日志文件415是否已经比保留期还要旧。如果日志文件415不比保留期旧,则过程800进行到框820,在其中过程800等待日志文件415中的一个变得比可用的保留期还要旧。一旦这种事件发生,则过程800返回到框810,在其中就选择该给定的日志文件415作为最旧的当前日志文件415。过程800随后进行到前面讨论的框815。如果选出的日志文件415比保留期还要旧,那么过程800进行到框825,在其中将选定的日志文件415删除。
图8中所示的过程800可以作为代理进程与图7中所示的过程700并排运行,或者与此处所教导的其它过程并排运行。可替换地,过程800可以并入过程700或者此处所教导的其它过程。过程800仅为了示意性和讨论的方便目的而在图8中单独示出,但是并不限制对此处的教导的应用。
图9更详细地示出了用于更新与有时间限制的消息115相对应的元数据320的过程755。在框805,过程900建立如以上结合图8所讨论的保留期参数。如果保留期参数已被创建,则框805无需重新创建它。在这种情况下,过程900可以引用先前存在的保留期参数。
在框910,过程900建立元数据320将在该过程900的不同步骤中写入其中的至少两个表,这在如下将进一步讨论。在框915,过程900选择在框910创建的表中的第一个,该表是有关被存储在日志文件415中的消息体310的元数据320写入其中的表。在框920,过程900将元数据320写入在框915中选出的表。
在框925,过程900检验第一表中最旧的消息体310是否比可应用于消息体310的保留期还要旧。如果不是,则过程900就返回到框920以继续将元数据320写入所选定的表,并且返回给判定框925。然而,当第一表中的最旧的消息体310比该保留期要旧时,则过程900进行到框930,在其中关闭第一表。在框935,过程900删除第二表,并且然后进行到框940,在框940,过程900选择在框910创建的第二表用于写入。在框945,过程900将元数据320写入该第二表。
在框950,过程900检验保留期的另一示例是否已经期满。如果不是,过程900返回到框945以继续将元数据320写入第二表,并且返回判定框950。当保留期的下一示例期满时,过程900进行到框955,在其中删除元数据320写入其中的第一表。在框960,过程900关闭用于写入的第二表,并且在框965,过程900重新创建第一表。过程900随后返回框915并且用第一表重复该过程。
图10给出了图9中所示的过程900的时序图1000。时间线1005从由线1010表示的时刻t0开始,并且如用箭头1015一般指示沿着水平时间轴无限延伸。线1020在假设保留期从时刻t0开始运行的情况下,表示第一保留期期满时刻。在由线1010和1020表示的时刻之间,图9的过程900如框920所示写入第一表。通常在时刻t0或在t0之前,如用参考标记915所示那样选择第一表。
通常在由垂线1020指示的第一保留期期满处或在其后不久,过程900根据框925选取“是”分支,停止向第一表的写入,并且如图10中呈现的参考标号935所示的那样开始将元数据320写入第二表。在由线1020所标记的时刻,保留期的第二示例开始并运行,直到由垂线1025所标记的时刻为止。
在由线1020和1025所标记的时刻之间,过程900如参考标号940所示将元数据320写入第二表。当保留期的第二示例期满时,过程900停止向第二表的写入,这对应于图7中框945的“是”分支。因此,参考标号945如同它出现在图10中 的那样出现在框940的结尾或者结尾附近处。
当过程900达到由线1025所标记的时刻时,过程900认识到被写入第一表(框920)的任何元数据320现在都已经太旧而不应保留了,因为现在保留期的整个第二示例都已期满。由于整个第一表现在含有的都是与已经过期的日志文件415相对应的元数据320,因而现在可以删除第一表。在由线1025标记的时刻之前,被写入第一表(框920)的元数据320中的一些可能仍然是活动的,因为这些元数据320的保留期还没有到。因此,直到由线1025标记的时间为止,在对这个元数据320的任何请求到达的情况下,都可以保持第一表中的元数据320可访问。
如图9和10中所示,过程900可以将元数据320交替地写入两个表,其中每个表轮流地被写入、在一个保留期之后关闭、并在第二个保留期之后删除。为了清楚和方便起见,图9和10示出了这个过程900的一次重复。然而,应当注意到,该过程900可以被无限制地重复,其中两个表中的每一个被轮流写入和删除。还应当注意到,过程900可以用多于两个的表来实现,并且此处所示出并讨论的两个表的实施例仅仅是为了方便而示出的。通常,过程900可以创建N个表,其中N是比其间可以写入表的时间周期划分成的消息保留期大一的整数。
图11示出了用于遍历表结构以搜索所请求的元数据320或标题信息的过程1100。在框1105,过程1100接收对给定的消息标题信息的请求。在上述实施例中,该请求可以针对遵循保留期的采取垃圾邮件消息或者“已发送”消息形式的给定电子邮件。例如,用户可以请求检索给定的消息,或者可以请求与被检索的给定邮箱相关联的所有消息中的一些或全部。过程1100适于兑现(honor)该请求或者确定该请求是否能够被根本兑现。
在框1110,过程1100搜索可以采用表格形式的第一标题结构以定位有关响应于在框1105所接收请求的任何消息的元数据320。在框1115,过程1100确定在第一标题表中是否发现了响应于该请求的任何项。如果在该标题表中发现了响应于该请求的项,则过程1100进行到框1120。在框1120,过程1100引用与该项相关联的时间标记,并且确定该项是否是在一个“保留期”之前做出的。例如,如果该项的保留期是30天,则框1120确定给定项是否比30天要旧。当消息体310以及有关的元数据320被存储在日志文件415和/或元数据存储结构325中时,再调用在图7所示过程700期间被时间标记的上述消息体310以及有关的元数据320。
如果给定项不比保留期旧,则过程1100进行到框1125,在其中过程1100响应于框1105中接收的请求返回该项。过程1100随后进行到框1130,在其中过程 1100确定在框1105接收的请求是否已被完全满足。例如,如果在框1105接收的请求是针对单个消息的,并且那个单个消息被定位并且在框1125返回,则过程1100已经完全满足该请求。在这种情况下,过程1100进行到框1135并且完成。然而,如果该请求是检索多个消息,或者是检索给定的邮箱中的一些或全部,则过程1100可以搜索并检索更多的消息。在这种情况下,过程1100进行到框1110以搜索这些项。
返回到框1115,如果所请求的项没有在第一标题表中发现,过程1100就进行到框1140,在其中它在第二标题表中搜索在框1105请求的标题信息。在框1145,过程1100确定是否在第二标题表中发现所请求的标题信息。如果发现了所请求的标题信息,则过程1100进行到框1120以检验定位的标题信息是否比可用保留期要旧。如果定位的标题信息比可用保留期旧,过程1100随后进行到框1150,在其中报告失败。回到框1145,如果没有发现所请求的标题信息,过程1100随后进行到框1150以报告失败,因为在第一或第二标题表中都没有发现所请求的标题信息。
假设过程1100采用图5中所示的表实现500来实施,则过程1100可以做一个队列来联结所有的世代表505,使得所有的行510都与给定的邮箱中的消息相对应,排除超过可用保留期的任何消息。假设过程1100采用图6中所示的日志blob实现600来实施,过程1100可以读取用于给定的邮箱的日志blob图像620,忽略比可用保留期旧的任何消息,并且将剩余消息返回。
图12示出了依请求检索给定消息以便能够将其呈现给用户的过程1200。在框1205,过程1200接收将给定的消息呈现给用户的请求。在框1210,过程1200以与图11中所述用于读取消息标题的过程1100相类似的方式来找出包含用于给定消息的元数据的标题。在框1215,过程1200处理从该标题中拉出的元数据320以找出包含该给定消息的日志文件415的名称、包含该日志文件415的存储机器315、该消息在日志文件415中的偏移、以及该消息的长度。
在框1220,假设给定的消息被存储在日志文件组415中,过程1200从日志文件组415中选择一个日志文件415,并且尝试从选出的日志文件415中读取请求的消息。如果该读取没有足够快地完成和/或没有成功完成,则过程1200可以尝试从日志文件组415内的第二日志文件415中读取请求的消息。在框1225,当请求的消息被成功读取时,过程1200返回该请求的消息。
图13示出了用于将给定消息标记为已读过程1300。在框1305,过程1300接收将给定消息标记为已读的请求。在框1310,过程1300对应于该给定消息修改数 据结构中的项以指示该消息应被标记为已读。这种修改可以包括将标识符写入特定日志记录以指示给定的消息已经被读取。
在框1315,过程1300很可能连同多个其它消息一起,将给定的消息写入一个或多个日志文件415。过程1300可以等待,直到数据结构项的写入以与消息投递相同的方式被提交给一个或多个日志文件415为止。日志文件415中的这种记录只有在数据库丢失并且从日志文件415中重建的情况下才需要。在框1320,一旦完成了向一个或多个日志文件415的写入,过程1300就以类似于传递新消息的方式更新元数据存储结构325中的元数据320。
过程1200和1300例如可以在服务器机器305上运行。为了将给定的消息标记为删除,服务器机器305可以执行与将给定的消息标记为已读的过程1300相类似的过程,这一过程包括将特定的日志记录写入日志文件415。在日志blob实施例600中,在删除给定的消息使得该消息以前所驻留的邮箱为空时,可以删除整个日志blob 620。
为了把给定邮箱中的所有消息标记为删除,服务器机器305能够以与以上执行的过程1300相类似的方式做出数据结构405中的项。在日志blob实施例600中,服务器机器305可以进行一单项数据库事务,以整个删除日志blob 620,并且由此可以跳过更新的读取部分。
在元数据存储结构325崩溃或变得不能访问或者不可用的情况下,可以使用日志文件415中的用于重构元数据存储结构325的数据。然而,用于任何特定元数据存储结构325的日志文件415可以分布在给定群集210中的多个日志文件415中。重建元数据存储结构325的一种方法是读取该群集210中的所有日志文件415。如果这个任务被专门分配给单个机器,则完成这个任务的时间就会受到移动所有日志文件415经过执行该重构的机器的网络接口的时间的限制。在具体的实现中,这种方法可能是有吸引力或者可行的,也可能不是。
另一种方法是基于仅有大约1%被读取的消息实际影响了被重构的元数据存储结构325的这一观察结果,因为每个群集通常有大约100个存储设备具有相同尺寸的元数据存储结构325。此外,仅关心元数据320而不是消息体310的重构,这就进一步降低了在重构中必须处理的数据量。
最后,如果元数据存储结构325或者一个或多个存储机器315失败,就可以根据预定程序以周期为基础对这些部件的内容进行存档或者备份。在这些情况下,元数据存储结构325或者存储机器315中的一部分或者可能是大部分内容都可以从 最近存档或备份的文件中恢复,而只有错过最新备份的那些内容才不得不按照上述方法中的一种来恢复。
图14示出了一种用于有效处理有时间限制的消息的并且用于完全或部分地实现在此所述的计算、网络和系统体系结构的计算环境1400。更具体地,计算环境1400适于实现在此所述的各个部件,包括但并不限于消息分类器110、管理系统125和130、前端205、服务器机器305、存储机器315以及元数据存储结构325。
示例性计算环境1400仅仅是计算系统的一个示例,并不旨在对该体系结构的使用或功能范围做出任何限定的暗示。计算环境1400既不应被解释为对在示例性计算环境1400中示出的部件中的任何一个或组合有任何依赖,也不应被解释为其有任何要求。
计算环境1400中的计算机和网络体系结构可以用许多其它通用或专用计算系统环境或结构来实现。适于使用的公知的计算系统、环境和/或结构的示例包括但并不限于:个人计算机、服务器计算机、客户机设备、便携式或膝上型设备、基于微处理器的系统、多处理器系统、机顶盒、可编程消费电子设备、网络PC、小型计算机、大型计算机、游戏控制台、包括任何以上的系统或设备的分布式计算环境等。
计算环境1400包括采用计算设备1402的形式的通用计算系统。计算设备1402的部件可以包括但并不限于,一个或多个处理器1404(例如,任何微处理器、控制器等)、系统存储器1406以及耦合各个系统部件的系统总线1408。一个或多个处理器1404处理各种计算机可执行指令以控制计算设备1402的操作并与其它电子和计算设备通信。系统总线1408表示任意数量的多种类型的总线结构,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用多种总线结构中的任意一种的处理器或局部总线。
计算环境1400包括可以是能被计算设备1402访问的任何介质的多个计算机可读介质,并且包括易失性和非易失性介质、可移动和不可移动介质。系统存储器1406包括采用易失性存储器的形式的诸如随机存取存储器(RAM)1410的计算机可读介质和/或采用非易失性存储器的形式的诸如只读存储器(ROM)1412的计算机可读介质。基本输入/输出系统(BIOS)1414维护便于在计算设备1402内的部件之间诸如在启动时进行信息传递的基本例程,并且被存储在ROM 1412中。RAM1410通常包含由一个或多个处理器1404立即可以访问和/或由其当前操作的数据和/或程序模块。
计算设备1402可以包括其它可移动/不可移动、易失性的/非易失性的计算机存储介质。以示例的方式,硬盘驱动器1416可以从不可移动的、非易失性的磁性介质(未示出)中读取以及向其写入,磁盘驱动器1418从可移动的、非易失性的磁盘1420(例如,“软盘”)中读取以及向其写入,而光盘驱动器1422从诸如CD-ROM、数字视频光盘(DVD)或其它任何类型的光介质的可移动的、非易失性的光盘1424中读取和/或向其写入。在此示例中,硬盘驱动器1416、磁盘驱动器1418以及光盘驱动器1422的每一个都通过一个或多个数据介质接口1426连接至系统总线1408。磁盘驱动器以及关联计算机可读介质提供了对计算机可读指令、数据结构、程序模块以及用于计算设备1402的其它数据的非易失性存储。
任意数量的程序模块都可以被存储在RAM 1410、ROM 1412、硬盘1416、磁盘1420和/或光盘1424上,这些程序模块作为示例包括操作系统1428、一个或多个应用程序1430、其它程序模块1432以及程序数据1434。此操作系统1428、一个或多个应用程序1430、其它程序模块1432、程序数据1434中的每一个或其任意组合都可以包括在此描述的系统和方法中的一个或多个实施例。
计算设备1402可以包括标识为通信介质的多个计算机可读介质。通信介质通常具体化为计算机可读指令、数据结构、程序模块、或者已调制数据信号中(诸如载波、或者其它传送机制中)的其它数据,并且包括任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。以示例而非限定的方式,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声音、RF、红外线、其它无线介质的无线介质和/或其任何组合。
用户可以通过任意数量的诸如键盘1436的不同输入设备和定点设备1438(例如,“鼠标”)来与计算设备1402进行交互。其它输入设备1440(没有专门示出)可以包括麦克风、操纵杆、游戏垫、控制器、圆盘式卫星天线、串行端口、扫描仪和/或类似设备。这些以及其它输入设备通过与系统总线1408相耦合的输入/输出接口1442,都可以连接至处理器1404,但也可以通过诸如并行端口、游戏端口和/或通用串行总线(USB)的其它接口和总线结构连接。
显示设备1444(或其它类型的监视器)可以通过诸如视频适配器1446的接口连接到系统总线1408。除了显示设备1444之外,其它输出外围设备可以包括经由输入/输出接口1442连接到计算设备1402的诸如扬声器(未示出)和打印机1448之类的部件。
计算设备1402利用到诸如远程计算机1450的一个或多个远程计算机逻辑连接,就可以在网络化环境中进行操作。例如,远程计算设备1450可以是个人计算机、便携式计算机、服务器、路由器、网络计算机、对等设备或其它公共网络结点等。远程计算设备1450被示为便携式计算机,该便携式计算机可以包括此处相对于计算设备1402所描述的任意数量不同部件、元件和特征及其组合。
计算设备1402和远程计算设备1450之间的逻辑连接被描述为局域网(LAN)1452和一般的广域网(WAN)1454。这种网络化环境在办公室、公司范围的计算机网络、以太网以及因特网中十分常见。当在LAN网络环境中实现时,计算设备1402通常经由网络接口或适配器1456连接至该局域网1452。当在WAN网络环境中实现时,计算设备1402通常包括调制解调器1458或其它装置而在广域网1454上建立通信。调制解调器1458可以在计算设备1402的内部或外部,并且可以经由输入/输出接口1442或其它适当机制连接至系统总线1408。所示的网络连接仅仅是示例性的,并且可以利用其它装置在计算设备1402和550之间建立一个或多个通信链路。
在网络化环境中,诸如示出的计算环境1400中,相对于计算设备1402或其部分描述的程序模块可以被存储在远程存储器存储设备中。以示例的方式,远程应用程序1460可由远程计算设备1450的存储器设备来保存。出于示意性的目的,诸如操作系统1428的应用程序和其它可执行程序组件此处被示为分离的块,然而应当认识到,这些程序和组件可以在不同的时间驻留在计算设备1402的不同存储部件中,并且可以由计算设备1402的一个或多个处理器1404来执行。
尽管已经用特定的结构特征和/或方法的语言描述了用于有时间限制的消息的有效处理的实施例,但是应当理解,所附权利要求的主题并未受到所述的特定特征或方法的限制。相反,这些特定的特征和方法被公开作为有时间限制的消息的有效处理的示例性实现。
Claims (10)
1.一种由计算机实现的对有时间限制的消息进行有效处理的方法,包括:
将多个消息分类为有时间限制的消息和无时间限制的消息之一;
将所述有时间限制的消息与所述无时间限制的消息分开处理,其中所述方法还包括:
在数据结构中累积与所述有时间限制的消息相关联的多个消息体;
把所累积的多个消息体成批写入以第一存储结构存储的至少一个日志文件;
编译与所述消息体有关的元数据;
将所述元数据以与所述第一存储结构不同的第二存储结构来存储;以及
分开地优化对所述元数据的处理和对所述消息体的处理。
2.如权利要求1所述的方法,其特征在于,编译元数据包括确定包含一日志文件的存储设备,其中在所述日志文件中存储了与所述元数据的至少一部分相对应的有时间限制的消息。
3.如权利要求1所述的方法,其特征在于,分类所述消息包括把至少一些消息分类为垃圾邮件。
4.如权利要求1所述的方法,其特征在于,分类所述消息包括把至少一些消息分类为遵循预定保留策略的电子邮件。
5.如权利要求1所述的方法,其特征在于,还包括响应于能用于所述有时间限制的消息的保留期参数期满,删除所述有时间限制的消息。
6.如权利要求1所述的方法,其特征在于,还包括在分开地优化对所述元数据的处理和对所述消息体的处理之后,从数据存储中读取所述有时间限制的消息。
7.一种由计算机实现的对有时间限制的消息进行有效处理的设备,包括:
用于将多个消息分类为有时间限制的消息和无时间限制的消息之一的装置;
用于将所述有时间限制的消息与所述无时间限制的消息分开处理的装置,其中所述设备还包括:
用于在数据结构中累积与所述有时间限制的消息相关联的多个消息体的装置;
用于把所累积的多个消息体成批写入以第一存储结构存储的至少一个日志文件的装置;
用于编译与所述消息体有关的元数据的装置;
用于将所述元数据以与所述第一存储结构不同的第二存储结构来存储的装置;以及
用于分开地优化对所述元数据的处理和对所述消息体的处理的装置。
8.如权利要求7所述的设备,其特征在于,用于编译元数据的装置包括用于确定包含一日志文件的存储设备的装置,其中所述日志文件中存储了与所述元数据的至少一部分相对应的有时间限制的消息。
9.如权利要求7所述的设备,其特征在于,用于分类所述消息的装置包括用于把至少一些消息分类为垃圾邮件的装置。
10.如权利要求7所述的设备,其特征在于,用于分类所述消息的装置包括用于把至少一些消息分类为遵循预定保留策略的电子邮件的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/139,705 US7600126B2 (en) | 2005-05-27 | 2005-05-27 | Efficient processing of time-bounded messages |
US11/139,705 | 2005-05-27 | ||
PCT/US2006/015111 WO2006130259A2 (en) | 2005-05-27 | 2006-04-21 | Efficient processing of time-bounded messages |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101636742A CN101636742A (zh) | 2010-01-27 |
CN101636742B true CN101636742B (zh) | 2013-01-02 |
Family
ID=37464832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800147315A Active CN101636742B (zh) | 2005-05-27 | 2006-04-21 | 对有时间限制的消息进行有效处理的方法和设备 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7600126B2 (zh) |
EP (1) | EP1911189B1 (zh) |
JP (1) | JP4824753B2 (zh) |
KR (1) | KR101224752B1 (zh) |
CN (1) | CN101636742B (zh) |
AT (1) | ATE554455T1 (zh) |
WO (1) | WO2006130259A2 (zh) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9282081B2 (en) | 2005-07-28 | 2016-03-08 | Vaporstream Incorporated | Reduced traceability electronic message system and method |
US8321381B2 (en) * | 2005-12-19 | 2012-11-27 | Oracle International Corporation | Facilitating a sender of email communications to specify policies with which the email communication are to be managed as a record |
US8069141B2 (en) * | 2007-03-12 | 2011-11-29 | Microsoft Corporation | Interfaces for high availability systems and log shipping |
US20080320263A1 (en) * | 2007-06-20 | 2008-12-25 | Daniel Nemiroff | Method, system, and apparatus for encrypting, integrity, and anti-replay protecting data in non-volatile memory in a fault tolerant manner |
US20090177704A1 (en) * | 2008-01-09 | 2009-07-09 | Microsoft Corporation | Retention policy tags for data item expiration |
US8219582B2 (en) * | 2008-04-25 | 2012-07-10 | International Business Machines Corporation | System, method, and computer readable media for identifying a user-initiated log file record in a log file |
US8732265B2 (en) | 2008-06-27 | 2014-05-20 | Microsoft Corporation | Reconciliation and remediation with communication archives |
US8620869B2 (en) | 2008-09-25 | 2013-12-31 | Microsoft Corporation | Techniques to manage retention policy tags |
WO2010071843A1 (en) * | 2008-12-19 | 2010-06-24 | Privatetree, Llc. | Systems and methods for facilitating relationship management |
US20100161537A1 (en) * | 2008-12-23 | 2010-06-24 | At&T Intellectual Property I, L.P. | System and Method for Detecting Email Spammers |
US8995923B2 (en) * | 2009-03-03 | 2015-03-31 | Mobilitie, Llc | System and method for management of a dynamic network using wireless communication devices |
US9609513B2 (en) | 2009-03-03 | 2017-03-28 | Mobilitie, Llc | System and method for device authentication in a dynamic network using wireless communication devices |
US8464342B2 (en) | 2010-08-31 | 2013-06-11 | Microsoft Corporation | Adaptively selecting electronic message scanning rules |
US8635289B2 (en) | 2010-08-31 | 2014-01-21 | Microsoft Corporation | Adaptive electronic message scanning |
US8589732B2 (en) | 2010-10-25 | 2013-11-19 | Microsoft Corporation | Consistent messaging with replication |
CN102469095A (zh) * | 2010-11-19 | 2012-05-23 | 腾讯科技(深圳)有限公司 | 一种基于账户服务器的会话缓存结点的标识方法及系统 |
US8868984B2 (en) | 2010-12-07 | 2014-10-21 | International Business Machines Corporation | Relevant alert delivery in a distributed processing system with event listeners and alert listeners |
US9213621B2 (en) | 2011-05-27 | 2015-12-15 | International Business Machines Corporation | Administering event pools for relevant event analysis in a distributed processing system |
US8676883B2 (en) | 2011-05-27 | 2014-03-18 | International Business Machines Corporation | Event management in a distributed processing system |
US8880943B2 (en) | 2011-06-22 | 2014-11-04 | International Business Machines Corporation | Restarting event and alert analysis after a shutdown in a distributed processing system |
US9419650B2 (en) | 2011-06-22 | 2016-08-16 | International Business Machines Corporation | Flexible event data content management for relevant event and alert analysis within a distributed processing system |
US8887175B2 (en) * | 2011-10-18 | 2014-11-11 | International Business Machines Corporation | Administering incident pools for event and alert analysis |
US20130097272A1 (en) | 2011-10-18 | 2013-04-18 | International Business Machines Corporation | Prioritized Alert Delivery In A Distributed Processing System |
US9178936B2 (en) | 2011-10-18 | 2015-11-03 | International Business Machines Corporation | Selected alert delivery in a distributed processing system |
US8930474B2 (en) * | 2012-02-20 | 2015-01-06 | Microsoft Corporation | Time-managed electronic mail messages |
US8903913B2 (en) * | 2012-08-01 | 2014-12-02 | Facebook, Inc. | Facilitating and tracking processing of a message through a workflow |
US8954811B2 (en) | 2012-08-06 | 2015-02-10 | International Business Machines Corporation | Administering incident pools for incident analysis |
US8943366B2 (en) | 2012-08-09 | 2015-01-27 | International Business Machines Corporation | Administering checkpoints for incident analysis |
CN102882768B (zh) * | 2012-09-14 | 2015-07-08 | 盈世信息科技(北京)有限公司 | 一种基于多层次用户分类的资源分配方法、装置及系统 |
US9361184B2 (en) | 2013-05-09 | 2016-06-07 | International Business Machines Corporation | Selecting during a system shutdown procedure, a restart incident checkpoint of an incident analyzer in a distributed processing system |
US9170860B2 (en) | 2013-07-26 | 2015-10-27 | International Business Machines Corporation | Parallel incident processing |
US9658902B2 (en) | 2013-08-22 | 2017-05-23 | Globalfoundries Inc. | Adaptive clock throttling for event processing |
US9256482B2 (en) | 2013-08-23 | 2016-02-09 | International Business Machines Corporation | Determining whether to send an alert in a distributed processing system |
US9086968B2 (en) | 2013-09-11 | 2015-07-21 | International Business Machines Corporation | Checkpointing for delayed alert creation |
US9602337B2 (en) | 2013-09-11 | 2017-03-21 | International Business Machines Corporation | Event and alert analysis in a distributed processing system |
US10031948B1 (en) * | 2013-12-02 | 2018-07-24 | Amazon Technologies, Inc. | Idempotence service |
US9389943B2 (en) | 2014-01-07 | 2016-07-12 | International Business Machines Corporation | Determining a number of unique incidents in a plurality of incidents for incident processing in a distributed processing system |
US20160269335A1 (en) * | 2015-03-13 | 2016-09-15 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for identifying changed mailboxes in an internet message access protocol (imap) list |
US10200330B2 (en) * | 2015-12-10 | 2019-02-05 | Facebook, Inc. | Techniques for ephemeral messaging with a message queue |
US11005933B2 (en) * | 2016-03-17 | 2021-05-11 | International Business Machines Corporation | Providing queueing in a log streaming messaging system |
CN107231283B (zh) * | 2016-03-23 | 2020-12-18 | 阿里巴巴集团控股有限公司 | 消息管理方法及装置、消息预读方法及装置 |
US10671721B1 (en) * | 2016-03-25 | 2020-06-02 | Fireeye, Inc. | Timeout management services |
US10601863B1 (en) | 2016-03-25 | 2020-03-24 | Fireeye, Inc. | System and method for managing sensor enrollment |
US10476906B1 (en) | 2016-03-25 | 2019-11-12 | Fireeye, Inc. | System and method for managing formation and modification of a cluster within a malware detection system |
US10785255B1 (en) | 2016-03-25 | 2020-09-22 | Fireeye, Inc. | Cluster configuration within a scalable malware detection system |
US10409779B2 (en) | 2016-08-31 | 2019-09-10 | Microsoft Technology Licensing, Llc. | Document sharing via logical tagging |
US10956369B1 (en) * | 2017-04-06 | 2021-03-23 | Amazon Technologies, Inc. | Data aggregations in a distributed environment |
US10645040B2 (en) * | 2017-12-29 | 2020-05-05 | Facebook, Inc. | Techniques for consistent writes in a split message store |
US11405343B2 (en) | 2017-12-29 | 2022-08-02 | Meta Platforms, Inc. | Techniques for extensible message indexing |
US10642877B2 (en) * | 2017-12-29 | 2020-05-05 | Facebook, Inc. | Techniques for consistent reads in a split message store |
US10673791B2 (en) | 2017-12-29 | 2020-06-02 | Facebook, Inc. | Techniques for data reads from secondary stores |
WO2020033976A1 (en) * | 2018-08-10 | 2020-02-13 | Medroster.com Corporation | Encrypted messaging system |
US11456985B2 (en) | 2020-01-31 | 2022-09-27 | Slack Technologies, Llc | Apparatuses, methods, and computer program products for data retention in a common group-based communication channel |
US11782771B2 (en) * | 2021-05-20 | 2023-10-10 | Vmware, Inc. | Method and subsystem within a distributed log-analytics system that automatically determines and enforces log-retention periods for received log-event messages |
US11928099B1 (en) * | 2022-12-16 | 2024-03-12 | Amazon Technologies, Inc. | Time and value ordered data objects for a backup of a data set |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1402159A (zh) * | 2001-08-22 | 2003-03-12 | 英业达股份有限公司 | 邮件档案管理系统及方法 |
CN1581065A (zh) * | 2003-08-14 | 2005-02-16 | 跨越科技股份有限公司 | 高扩展性的模块化邮件系统的控制方法 |
CN1604592A (zh) * | 2003-09-29 | 2005-04-06 | 株式会社日立制作所 | 信息终端装置、信息共享方法、使用它们的p2p系统及指针系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2670067B2 (ja) * | 1988-02-17 | 1997-10-29 | 富士通株式会社 | マルチメディアメールシステム |
JPH03157042A (ja) * | 1989-11-15 | 1991-07-05 | Nec Corp | メッセージの蓄積方法および蓄積制御回路 |
US7117358B2 (en) * | 1997-07-24 | 2006-10-03 | Tumbleweed Communications Corp. | Method and system for filtering communication |
JP3932319B2 (ja) * | 1997-07-24 | 2007-06-20 | タンブルウィード コミュニケーションズ コーポレイション | 格納された鍵による暗号化/暗号解読を用いた電子メール用ファイアウォール |
JP2000076156A (ja) * | 1998-09-03 | 2000-03-14 | Fujitsu Ltd | 電子メール編集方法及び情報処理装置及び記録媒体 |
US7565403B2 (en) * | 2000-03-16 | 2009-07-21 | Microsoft Corporation | Use of a bulk-email filter within a system for classifying messages for urgency or importance |
JP2001282644A (ja) * | 2000-03-29 | 2001-10-12 | Seiko Epson Corp | ネットワークセキュリティシステム |
JP2002183055A (ja) * | 2000-12-18 | 2002-06-28 | Hitachi Ltd | 電子メール情報の管理方法及びそのプログラムを格納する記録媒体 |
US20030009698A1 (en) * | 2001-05-30 | 2003-01-09 | Cascadezone, Inc. | Spam avenger |
EP1326189A3 (en) * | 2001-12-12 | 2005-08-17 | Microsoft Corporation | Controls and displays for acquiring preferences, inspecting behaviour, and guiding the learning and decision policies of an adaptive communications prioritization and routing systems |
GB2387684A (en) * | 2002-04-19 | 2003-10-22 | Hewlett Packard Co | Management of a long term digital document storage system |
WO2004059506A1 (en) * | 2002-12-26 | 2004-07-15 | Commtouch Software Ltd. | Detection and prevention of spam |
US7219148B2 (en) * | 2003-03-03 | 2007-05-15 | Microsoft Corporation | Feedback loop for spam prevention |
US7543053B2 (en) * | 2003-03-03 | 2009-06-02 | Microsoft Corporation | Intelligent quarantining for spam prevention |
US20050060643A1 (en) * | 2003-08-25 | 2005-03-17 | Miavia, Inc. | Document similarity detection and classification system |
-
2005
- 2005-05-27 US US11/139,705 patent/US7600126B2/en active Active
-
2006
- 2006-04-21 KR KR1020077027635A patent/KR101224752B1/ko active IP Right Grant
- 2006-04-21 JP JP2008513489A patent/JP4824753B2/ja not_active Expired - Fee Related
- 2006-04-21 WO PCT/US2006/015111 patent/WO2006130259A2/en active Application Filing
- 2006-04-21 CN CN2006800147315A patent/CN101636742B/zh active Active
- 2006-04-21 EP EP06750980A patent/EP1911189B1/en active Active
- 2006-04-21 AT AT06750980T patent/ATE554455T1/de active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1402159A (zh) * | 2001-08-22 | 2003-03-12 | 英业达股份有限公司 | 邮件档案管理系统及方法 |
CN1581065A (zh) * | 2003-08-14 | 2005-02-16 | 跨越科技股份有限公司 | 高扩展性的模块化邮件系统的控制方法 |
CN1604592A (zh) * | 2003-09-29 | 2005-04-06 | 株式会社日立制作所 | 信息终端装置、信息共享方法、使用它们的p2p系统及指针系统 |
Also Published As
Publication number | Publication date |
---|---|
EP1911189A2 (en) | 2008-04-16 |
JP2008546076A (ja) | 2008-12-18 |
JP4824753B2 (ja) | 2011-11-30 |
WO2006130259A3 (en) | 2009-08-27 |
CN101636742A (zh) | 2010-01-27 |
EP1911189B1 (en) | 2012-04-18 |
US7600126B2 (en) | 2009-10-06 |
KR101224752B1 (ko) | 2013-01-21 |
US20060271784A1 (en) | 2006-11-30 |
WO2006130259A2 (en) | 2006-12-07 |
KR20080014800A (ko) | 2008-02-14 |
ATE554455T1 (de) | 2012-05-15 |
EP1911189A4 (en) | 2010-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101636742B (zh) | 对有时间限制的消息进行有效处理的方法和设备 | |
US7103794B2 (en) | Network object cache engine | |
US7457822B1 (en) | Apparatus and method for hardware-based file system | |
US6256634B1 (en) | Method and system for purging tombstones for deleted data items in a replicated database | |
US20130339567A1 (en) | Two level addressing in storage clusters | |
US20060230170A1 (en) | Streaming media content delivery system and method for delivering streaming content | |
CN101002190A (zh) | 利用电子邮件中的元数据来管理虚拟存储器的电子邮件传输系统 | |
CN102460411A (zh) | 在垃圾收集期间的分布式缓存可用性 | |
CN109101580A (zh) | 一种基于Redis的热点数据缓存方法和装置 | |
CN108415962A (zh) | 一种云存储系统 | |
US11868334B2 (en) | Integrating change tracking of storage objects of a distributed object storage database into a distributed storage system | |
CN115061630A (zh) | 一种数据迁移方法、装置、设备及介质 | |
JPH11127149A (ja) | 蓄積交換型電子会議システムにおけるオブジェクトの移動処理装置及び方法並びに移動処理プログラムを記録した媒体 | |
US8386503B2 (en) | Method and apparatus for entity removal from a content management solution implementing time-based flagging for certainty in a relational database environment | |
CN104702700A (zh) | 一种邮件提取方法 | |
CN104821907A (zh) | 一种电子邮件处理方法 | |
CN104735152A (zh) | 一种基于网络的邮件读取方法 | |
JP2002511170A (ja) | ネットワークオブジェクトキャッシュエンジン | |
JPH11127187A (ja) | 蓄積交換型電子会議システムにおける宛先矛盾判定、修正装置及び方法並びに宛先矛盾判定、修正プログラムを記録した媒体 | |
US20240104081A1 (en) | Integrating change tracking of storage objects of a distributed object storage database into a distributed storage system | |
KR20050114028A (ko) | San 파일시스템을 위한 협력 캐시 장치 및 방법 | |
JPH11127148A (ja) | 蓄積交換型電子会議システムにおける登録情報のリカバリ処理装置及び方法並びにリカバリ処理プログラムを記録した媒体 | |
JP3861875B2 (ja) | 電子メールサーバシステム,電子メールサービス方法およびプログラム並びにサーバ装置 | |
WO2023081217A1 (en) | Distributed storage systems and methods to provide change tracking integrated with scalable databases | |
CN117354141A (zh) | 应用服务管理方法、设备和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150428 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150428 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |