专利名称:独立消息存储和消息传输代理的制作方法
独立消息存储和消息传输代理
些里 冃尔
企业和个人十分依赖于电子邮件系统来通信。由于这些通信的关键本质, 电子邮件系统的可靠且高效至关重要。本领域中已知的当前方法一般使消息传
输代理(MTA)和消息存储共同位于单个集成系统内,以便于管理对用户的递 送以及消息传输。该方法可能导致两个故障点。
首先,消息存储可能是单个故障点。消息存储包含系统中的所有消息。如 果消息存储发生故障,则MTA不能访问消息存储。因为MTA不能将新的传 入消息递送到消息存储,且消息存储上的任何传出消息都不能由MTA发送, 所以导致系统故障。
其次,MTA可能是单个故障点。MTA负责将消息递送和传输给消息存储。 如果MTA发生故障,则因为不能向消息存储递送任何新的传入消息,且不能 从消息存储发送任何新的传输消息,所以导致系统故障。
概述
在一个实施例中,提供了用于向MTA通知消息存储上有可用于发送的新 消息的方法。当在消息存储上接收到新消息时,选择并通知一MTA。该MTA 通过将该新消息发送到指定目的地来响应该通知。
在另一实施例中,群集的邮箱和通知代理包括多个通知代理和多个MTA。 通知代理可访问所有的MTA。每一通知代理与一消息存储相关联。通知代理 针对新消息而监控消息存储。每一 MTA可访问所有的消息存储。
提供该概述以简化形式介绍将在以下在详细描述中进一步描述的概念精 选。该概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用 于帮助确定所要求保护的主题的范围。
其它特征部分是显而易见的,部分将在后文中指出。附图简述
图1是示出本发明的合适计算系统的示例性实施例的框图。
图2是MTA通知方法的一个实施例的示例性流程图。 所有附图中,相应的参考标号指示相应的部分。
详细描述
图1是示出本发明的合适计算系统的示例性实施例的框图。群集100包含 多个独立服务器102,它们一起操作来提供统一的消息系统。该群集内的多个 服务器102将执行消息传输代理(MTA) 104或通知代理106。 MTA (104) 负责递送传入消息和发送传出消息114。在接收消息114之后,MTA 104可将 其转发给其它群集108和其它组织110。此外,MTA 104可将消息递送给群集 内的消息存储112。
通知代理106负责向MTA 104之一通知在消息存储112上有新的传出消 息114可用。消息存储112包含群集100内的所有消息(传入和传出114)。 至少一个消息存储112与执行通知代理106的每一服务器102C、102D相关联。 传出消息114被存储在消息存储112上,等待由MTA 104发送。
每一通知代理106可访问所有的MTA 104,且每一 MTA 104可经由服务 器102C、 102D访问所有的消息存储112。如果一消息存储不可访问,且其余 的消息存储可访问,则可以发送其余可访问的消息存储上所接收的消息,从而 最小化不可访问消息存储作为单个故障点的影响。而且,如果所选MTA不可 访问,且其余MTA可访问,则所接收的消息可由其余可访问MTA发送,从 而消除所选MTA作为单个故障点的影响。
通过在分开的服务器102A、 102B、 102C、 102D上执行MTA 104和通知 代理106并允许MTA 104、通知代理106和消息存储112之间的全网格连通, 排除单个故障点之一单个MTA。消息存储112仍是单个故障点,但现在该 机器上的移动部分较少,因此故障的概率进一步降低。此外,如果多个服务器 102C、 102D容纳消息存储112,且单个消息存储发生故障,则MTA104可继 续发送来自其它消息存储的消息114。这将最小化故障对系统的影响。
而且,允许多个MTA 104参与消息发送实现在运行MTA 104的多个服务器102A、 102B上共享工作负载。该负载平衡提供了对硬件资源的更高效使用。 而且,多个MTA104允许网络操作员使一个MTA服务器离线而不停止消息流。 因此,可对服务器进行硬件或软件升级而没有对系统功能的任何影响。
在一个实施例中,通知代理106在服务器102C、 102D上的服务内运行。 因为通知代理106和MTA 104位于分开的服务器上,通知代理106利用远程 过程调用来与MTA 104通信。可采用其它通信手段,包括UDP ping禾卩TCP 连接。在另一实施例中,通知代理106跟踪执行计数器,包括每秒的远程调 用、远程调用以及不可访问服务器的数目。为了向系统管理员警告可能的系统 故障,在另一实施例中,通知代理106在没有MTA 104可用于处理消息传输 时在系统日志中创建条目。
在操作中,通知代理106针对新传出消息114而监控消息存储112。当由 通知代理106检测到新的传出消息114时,通知代理106选择MTA 104之一 并向其通知该消息可供发送。MTA 104通过将该消息发送给其它群集108、其 它组织110和群集100中的消息存储112之一来响应该通知。
服务器102 —般具有至少某种形式的计算机可读介质。计算机可读介质包 括易失性和非易失性介质、可移动和不可移动介质,可以是可由服务器102访 问的任何可用介质。作为示例而非限制,计算机可读介质包括计算机存储介质 和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算 机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可 移动和不可移动介质。例如,计算机存储介质包括RAM、 ROM、 EEPROM、 闪存或其它存储器技术;CD-ROM、数字多功能盘(DVD)或其它光盘存储; 磁带盒、磁带、磁盘存储或其它磁性存储设备;或能用于存储所需信息且可以 由服务器102访问的任何其它介质。通信介质通常具体化为诸如载波或其它传 输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数 据,且包含任何信息传递介质。本领域的技术人员熟悉已调制数据信号,其一 个或多个特征以在信号中编码信息的方式被设定或更改。诸如有线网络或直接 线连接的有线介质,以及诸如声学、RF、红外线和其它无线介质的无线介质是 通信介质的示例。上述中任一个的组合也应包括在计算机可读介质的范围之 内。服务器102—般具有某种形式的系统存储器,包括可移动和/或不可移动、 易失性和/或非易失性存储器形式的计算机存储介质。在所示实施例中,系统存 储器包括只读存储器(ROM)和随机存取存储器(RAM)。
服务器102可在使用至一个或多个远程计算机,诸如一远程计算机的逻辑 连接的网络化环境下操作。远程计算机可以是个人计算机、服务器、路由器、 网络PC、对等设备或其它公共网络节点,且通常包括上文相对于服务器102 描述的许多或所有元件。图1中所示逻辑连接包括局域网(LAN)和广域网 (WAN),但也可以包括其它网络。LAN和/或WAN可以是有线网络、无线 网络、其组合等。这样的联网环境在办公室、企业范围计算机网络、内联网和 全局计算机网络(例如,因特网)中是常见的。
当在局域联网环境中使用时,服务器102通过网络接口或适配器连接至 LAN。当在广域联网环境中使用时,服务器102通常包括调制解调器或用于在 诸如因特网的WAN上建立通信的其它装置。调制解调器可以是内置或外置的, 它可以通过用户输入接口或其它合适的机制连接至系统总线。在网络化环境 中,相对于服务器102描述的程序模块或其部分可以存储在远程存储器存储设 备(未示出)中。作为示例,而非限制,图1将远程应用程序示为驻留在存储 器设备上。所示的网络连接是示例性的,且可以使用在计算机之间建立通信链 路的其它手段。
本发明的实施例可在诸如由一个或多个计算机或其他设备执行的程序模 块等计算机可执行指令的一般上下文中描述。 一般而言,程序模块包括但不限 于例程、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽 象数据类型。本发明的各方面也可以在分布式计算环境中实现,其中任务由通 过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以 位于包括存储器存储设备的本地和远程计算机存储介质中。
软件体系结构上下文中的接口包括软件模块、组件、代码部分、或计算机 可执行指令的其他序列。接口例如包括访问第二模块来代表第一模块执行计 算任务的第一模块。在一个示例中,第一和第二模块包括诸如由操作系统提 供的应用程序编程接口 (API)、组件对象模型(COM)接口 (例如,对于对 等应用程序通信)和可扩展标记语言元数据互换格式(XML)接口 (例如,用于web服务之间的通信)。
接口可以是诸如Java 2平台企业版(J2EE)、COM或分布式COM(DCOM) 示例中的紧耦合的同步实现。除此之外或作为替代,接口可以是诸如web服务 (例如,使用简单对象访问协议)中的松耦合的异步实现。 一般而言,接口包 括以下特征的任何组合紧耦合、松耦合、同步和异步。此外,接口可遵循标 准协议、专有协议或标准和专有协议的任何组合。
此处所述的接口可以均是单个接口的一部分或可被实现为单独接口或其 中的任意组合。接口可在本地或远程执行,以提供功能。此外,接口可包括比 此处示出或描述的更多或更少的功能。
在操作中,服务器102执行诸如在附图中示出的那些计算机可执行指令来 实现本发明的各方面。
图2是实现MTA通知的一个实施例的示例性流程图。在200,启动负责 在有需要被发送的新消息时通知MTA的通知代理。在202,通知代理判定是 否存在MTA的覆盖列表。如果是,则在204从服务器获取覆盖列表。覆盖列 表的一个目的是允许管理员能够将消息存储连系到单个MTA或一小组MTA。 例如,如果管理员正尝试捕捉可能与群集中的MTA之一有关的瞬时问题,则 可将消息存储连系到该站点中的每一 MTA,直到发现具有问题的服务器。在 另一示例中,如果管理员希望确保更多提交请求前往更稳健的MTA,则一个 或多个消息存储可被限于排他地使用稳健的MTA。
覆盖列表是执行在执行通知代理的服务器上维护的MTA的服务器列表。
作为默认,不存在任何覆盖列表。如果存在覆盖列表,则通知代理仅通知列表
中的MTA。例如,覆盖列表可位于华盛顿州雷德蒙市微软公司"ACTIVE
DIRECTORY (活动目录)"目录服务中的服务器对象上。覆盖列表可被存储
在会在服务器对象上存在的SubmissionServerOverrideList (提交服务器覆盖列
表)属性中。set-mailboxserver (设置邮箱服务器)和get-mailbox server (获取
邮箱服务器)任务可用于更新覆盖列表。以下是从服务器对象检索当前覆盖列
表、清空列表以及向列表添加新条目的算法 $overrideList =
(get-mailboxserver).SubmissionServerOverrideList $overrideList.Add("<MTA服务器的ADObjectld〉")set-mailboxserver -Identity,邮箱服务器的ID> -SubmissionServerOverrideList $overrideList
以下是一旦覆盖列表被创建就移除该列表的算法
$overrideList = (get-mailboxserver).SubmissionServerOverrideList
$overrideList.Clear()
set-mailboxserer -IdentityS邮箱服务器的ID> -
SubmissionServerOverrideList
$overrideList
在202,如果判定MTA的覆盖列表不存在,则在206获取可用MTA的 列表。在一个实施例中,通过在目录服务中查询群集中所有MTA的列表来获 取该列表。在208,通知代理针对新消息而监控消息存储。当检测到新消息时, 在210通知代理从该列表中选择一 MTA。在一个实施例中,该MTA被选择来 平衡跨MTA的负载,使得每一 MTA获得基本上相等的通知分布。例如可使 用以下的循环算法来实现负载平衡,其中CurrentMTA表示所选MTA, MTAArray表示MTA的列表,NumMTA表示MTA列表中MTA的数目
CurrentMTA++ - MTAArray[CurrentMTA % NumMTAs]
在另一实施例中,根据每一MTA的负载容量和每一MTA的当前负载来 选择MTA。在另一替换实施例中,获取所监控的消息存储的列表,并根据消 息存储的列表和MTA的列表选择MTA。在另一实施例中,该选择偏好同一 MTA,以增加系统的确定性。例如,对消息存储和MTA的列表进行分类;确 定包含新消息的消息存储的索引;以及通过使用在前一步骤中确定的索引而索 引到MTA列表中以选择MTA,允许索引隐藏。
在212,向所选MTA发送通知。在一个实施例中,通知代理使用RPC来 发送该通知。在另一实施例中,该通知提供以下数据作为与新消息相关联的参 数正在提交的项目的条目ID、消息的父条目ID、消息的消息类、包含消息的邮箱。在该实施例中,从服务器上的Map正vent结构上检索所有参数。
在2M,通知代理判定该通知是否由MTA接收到。在一个实施例中,实 现返回值来作出该判定。返回值将包含以下可能值之一 (尽管构想了其他值) 通知成功、通知因瞬时消息错误而失败、或通知因非消息错误而失败。例如, 如果通知因瞬时消息错误而失败,则将在稍后重试该通知,因为这表明MTA 可由通知代理访问但暂时无法发送消息。如果通知因非消息错误而失败,则将 利用另一 MTA来重试该通知,因为这表明MTA不再可由通知代理访问。
如果在214作出通知成功的判定,则在216更新执行计数器。然后,在 208通知代理继续针对新消息监控消息存储。
如果在214作出通知不成功的判定,则在218从MTA列表中移除所选 MTA。在一个实施例中,在600秒后将所移除的MTA添加回MTA列表。如 果在220判定MTA列表不为空,则在222选择新MTA。在一个实施例中,选 择列表中的下一 MTA作为新MTA。 一旦在222选择新MTA,则将在212向 新MTA通知该消息可供发送。
如果在220判定MTA列表为空,则在224编写事件日志条目以向系统管 理员警告,不存在可用于发送新消息的MTA。在226,通知代理将临时挂起通 知。
除非另行指出,否则此处示出和描述的发明实施例中的操作的执行或实行
次序并非关键。即,除非另行指出,否则可按任何次序执行这些操作,且本发 明的实施例可包括比此处公开的更多或更少的操作。例如,可以构想的是,在 另一操作之前、与之同时或之后执行或实行特定的操作落在本发明的各方面范 围内。
本发明的实施例可用计算机可执行指令来实现。计算机可执行指令可被组 织成一个或多个计算机可执行组件或模块。本发明的各方面可用任何数目和组 织的这些组件或模块来实现。例如,本发明的各方面不限于附图中所示和此处 所述的特定计算机可执行指令或特定组件或模块。本发明的其他实施例可包括 具有比此处示出和描述的更多或更少功能的不同的计算机可执行指令或组件。
当介绍本发明或其实施例的各方面的元素时,冠词"一"、"一个"、"该" 和"所述"旨在表示存在一个或多个元素。术语"包括"、"包含"和"具有"旨在为包含性的,且表示可能存在除所列元素之外的其他元素。
因为可在以上构造、产品和方法中作出各种改变,而不背离本发明的 各方面的范围,以上描述中包含且在附图中示出的全部应旨在被解释为说 明性而非限定性含义。
权利要求
1. 一种计算机化的方法,包括针对新消息而监控消息存储(208);获取多个消息传输代理(MTA)的列表(206),其中每一MTA能够访问所监控的消息存储;在由所监控的消息存储接收到新消息时,选择所述多个MTA之一(210);以及向所选MTA通知所接收的新消息可供发送(212),使得所选MTA通过将所接收的新消息发送到指定目的地来响应于所述通知。
2. 如权利要求1所述的方法,其特征在于,还包括针对新消息而监控附 加消息存储(208)、获取所监控的消息存储的列表,且其中所述选择(210) 包括在由所监控的消息存储之一接收到新消息时根据所述MTA列表和所监控 消息存储的列表来选择所述多个MTA之一。
3. 如权利要求l所述的方法,其特征在于,所述MTA被选择(210), 以相对于所述MTA列表中的其他MTA的负载平衡所选MTA的负载。
4. 如权利要求l所述的方法,其特征在于,所述MTA是使用循环算法 从所述MTA列表中选择(210)的。
5. 如权利要求l所述的方法,其特征在于,所述MTA是根据以下的至 少一个而选择(210)的所述多个MTA中每一个的负载容量;以及所述多个 MTA中每一个的当前负载。
6. 如权利要求l所述的方法,其特征在于,所述对MTA的选择(210) 还包括,检査包含所述多个MTA的子集的覆盖列表(202)以及从所述覆盖列 表中选择所述MTA。
7. 如权利要求l所述的方法,其特征在于,所述通知(212)包括,将与 所接收的新消息相关联的以下参数中的至少一个提供给所选MTA:条目标识 符、父条目标识符、消息类和邮箱标识符。
8. 如权利要求l所述的方法,其特征在于,还包括 从所选MTA接收返回值(214),其中所述返回值指示所选MTA对所接收消息的发送成功。
9. 如权利要求l所述的方法,其特征在于,还包括 从所选MTA接收返回值(214),其中所述返回值指示所选MTA对所接收消息的发送是否不成功;通过从所述MTA列表中移除所选MTA (218)来修改所述MTA列表; 从经修改的MTA列表中选择新的MTA (222);以及 向所述新MTA通知所接收的消息可供发送(212),使得所述新MTA通过将所接收的消息发送到指定目的地来响应于所述通知。
10. 如权利要求l所述的方法,其特征在于,如果所述多个MTA之一不 可访问,则将所述不可访问的MTA从所述MTA列表中移除(206)。
11. 如权利要求10所述的方法,其特征在于,所移除的不可访问MTA 在一段时间之后被添加回所述MTA列表(206)。
12. 如权利要求1所述的方法,其特征在于,如果所述MTA列表为空 (220),则还包括编写事件日志条目(224),其中所述条目指示不能找到任何MTA来发 送所述新接收的消息。
13. 如权利要求l所述的方法,其特征在于,还包括 跟踪执行计数器(216),其中所述计数器与对所选择MTA的通知(212)有关,且包括以下的至少一个每秒远程调用、远程调用和不可访问MTA的数目。
14. 如权利要求l所述的方法,其特征在于, 一个或多个计算机可读介质 (102)具有用于执行如权利要求1所述的方法的计算机可执行指令。
15. —种系统,包括 多个消息存储(114);多个通知代理(106),各自与所述多个消息存储(114)之一相关联,其 中每一通知代理(106)针对新消息(114)监控其相关联的消息存储;多个MTA(104),各自可由每一通知代理(106)访问,且其中每一MTA 可访问所述消息存储中的每一个(112);其中在接收到新消息(114)时,所述通知代理(106)选择所述多个MTA(104)之一,且所述通知代理(106)向所选MTA通知所接收的消息(114) 可供发送;其中所选MTA通过将所接收的消息发送到指定目的地来响应于所述通知。
16. 如权利要求15所述的系统,其特征在于,所述多个MTA (104)和 所述多个通知代理(106)位于一群集(100)内,所述群集还包括第一服务器(102A、 102B),执行所选MTA;以及第二服务器(102C、 102D),独立于所述第一服务器,执行所述通知代理。
17. 如权利要求15所述的系统,其特征在于,所述MTA (104)被选择, 以相对于所述MTA列表中的其他MTA平衡所选MTA的负载。
18. 如权利要求15所述的系统,其特征在于,所述MTA (104)是使用 循环算法从所述MTA的列表中选择的。
19. 如权利要求15所述的系统,其特征在于,所述MTA (104)是根据 以下的至少一个来选择的所述多个MTA中每一个的负载容量;以及所述多 个MTA中每一个的当前负载。
20. 在一种其中新消息被存储在单个消息存储中以供单个MTA发送的系 统中,改进包括附加消息存储(112);附加MTA (104),其中每一MTA (104)可访问每一消息存储(112);多个通知代理(106),各自与消息存储(112)相关联,其中每一通知代 理(106)针对新消息(114)监控所述相关联的消息存储(112);其中在接收到新消息(114)时,所述通知代理(106)选择所述多个MTA (104)之一,且所述通知代理(106)向所选MTA (104)通知所接收的消息 (114)可供发送;其中所述MTA (104)通过将所接收的消息发送到指定目的地来响应于所 述通知;以及由此,如果一消息存储(112)不可访问且其余消息存储(112)可访问, 则所述其余可访问消息存储(112)上所接收的消息(114)可被发送,从而最小化所述不可访问消息存储作为单个故障点的影响;以及如果所选MTA (104)不可访问且其余MTA (104)可访问,则所接收消 息(114)可由所述其余可访问MTA (104)发送,从而将所选MTA作为单个 故障点而排除。
全文摘要
多个独立MTA发送消息,使得如果MTA之一发生故障,则其他MTA可继续发送消息。提供多个独立消息存储,使得如果消息存储之一发生故障则可继续被发送其他消息存储上的消息。多个通知代理针对新消息监控消息存储,并在有新消息可供发送时通知MTA之一。
文档编号G06Q10/00GK101305389SQ200680041336
公开日2008年11月12日 申请日期2006年10月13日 优先权日2005年11月7日
发明者B·A·麦克米兰, L·R·沃曼, L·T·科蒂斯, M·E·皮尔森 申请人:微软公司