CN1534947A - 以对应用程序透明的方式改进消息传递系统的可用性和可伸缩性 - Google Patents

以对应用程序透明的方式改进消息传递系统的可用性和可伸缩性 Download PDF

Info

Publication number
CN1534947A
CN1534947A CNA2004100322482A CN200410032248A CN1534947A CN 1534947 A CN1534947 A CN 1534947A CN A2004100322482 A CNA2004100322482 A CN A2004100322482A CN 200410032248 A CN200410032248 A CN 200410032248A CN 1534947 A CN1534947 A CN 1534947A
Authority
CN
China
Prior art keywords
message
transmission
storage
delivery applications
buffer memory
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.)
Granted
Application number
CNA2004100322482A
Other languages
English (en)
Other versions
CN100553235C (zh
Inventor
R��T����ķ��������
R·T·利姆普莱切特
ϣ
R·D·希尔
D·E·郎沃西
H·E·拉曼丹
S·科恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1534947A publication Critical patent/CN1534947A/zh
Application granted granted Critical
Publication of CN100553235C publication Critical patent/CN100553235C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2425Traffic characterised by specific attributes, e.g. priority or QoS for supporting services specification, e.g. SLA
    • H04L47/2433Allocation of priorities to traffic types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

提供运行时刻消息传递架构的方法、系统和计算机程序产品,其对发送和接收操作进行抽象,用于与对方端点进行消息交换。该消息传递架构通过改进主要消息传输的可用性和可伸缩性,来改进消息应用程序的可用性和可伸缩性。特别地,通过在运行时刻将消息应用程序与任意数量的消息传输连接,而使消息应用程序无需在开发时期指定传输,从而改进了可用性和可伸缩性。消息架构从指定端对端传送保证的消息应用程序接收指令,并在消息应用程序和传输之间创建连接,用来交换消息。会话状态存储可以被维持在可插式存储中,可插式存储可以是,如持久数据库存储或应用程序内存存储。

Description

以对应用程序透明的方式改进消息传递系统的可用性和可伸缩性
                           技术领域
本发明通常涉及可靠的消息传递系统,尤其为改进可靠的双方消息传递系统的可用性和可伸缩性提供了系统、方法和计算机程序产品,使得这种改进对应用程序是透明的。
                           背景技术
消息传递系统已经成为一种越来越普及的通信方式。这种通信系统的范围可以从包括电子邮件系统到安全交易,从聊天室到各类web服务,如网上购物。这些系统和应用程序关于消息传递可靠性、安全性、性能、可用性和可伸缩性有很大范围的不同要求。现有的系统提供了部分解决方案,着重于更普通需求的特定有限的组合。
传统的现有技术消息传递系统通常在保证(如恰好一次传送)、消息交换模式(如单向相对请求/响应或全双工)和消息传递接口语义(如事务性消息缓存)方面提供了有限的灵活性。每一消息传递系统通常着重一组有限的可伸缩性和可用性要求,而且几乎不提供选项来扩展系统以增强整体的可伸缩性和可用性,也不要求包含大量的应用程序。
例如,考虑以下双方通信模型。数据报系统通常提供单向、少会话的消息交换,具有防火墙且忽略可靠性,并且几乎不提供对可伸缩性和可靠性的直接支持。这些系统向开发者提供了最终的自由度和灵活性来自己建立所有的东西。
TCP提供了全双工、面向会话的通信。它具有更多但固定的一组传送保证(恰好一次、顺序、字节传送)。连接状态被保持在易失性的内存内数据结构中,连接无法幸免于系统和进程失败以及许多网络失败,这限制了可用性。
RCP提供了半双工交换模式;有些系统将这一模式限制在单个请求/响应交互中,有些则提供了对话式会话。不论在何种情况下,端点状态通常被保持在内存中,因此具有同TCP类似的可用性限制。虽然少对话的请求/响应系统有时候可以达到较高的可伸缩性(考虑基于HTTP的web场(farm)),但通常不提供至多一次的请求处理,因此将其使用限制在幂等请求中。基于会话的RPC系统可以提供具有至多一次处理的请求重试使其具有一些提高了的可用性。在某些情况下,在运行时刻管理基础的传输连接,允许多路复用,其可伸缩性有一定提高。
最后,消息排队系统通常提供恰好一次传送语义。与数据报系统、TCP和RPC模型不同,队列利用通信双方之间的缓存,允许附加的连接和调度灵活性。许多消息排队系统提供持久的状态存储,通过容许进程和系统失败来提供附加的可用性。一些排队系统还具有事务支持;该模型可以通过自动撤销部分工作及启用自动重试处理来提高可靠性和可用性。这些系统通常利用有限的存储选项,如要求使用所有权、持久性存储,并具有限制网络配置的传输相关性。
相应地,需要有一种消息传递系统,使其只要满足应用程序委托的保证时,就允许增加的灵活性,使应用程序适合于特殊的运行时刻状态和要求。而且,需要一种具有上述灵活性的消息传递系统,可以用于以对应用程序透明的方式设计应用程序的可用性和可伸缩性使其达到特殊部署的需要。
                              发明内容
根据本发明的示例实施例,上述当前消息传递系统的不足和缺点都得以克服。例如,示例实施例提供了一种运行时刻消息传递架构,该架构对发送和接收操作进行抽象,以通过若干消息传输与对方端点进行消息交换。本发明通过改进基础消息传输的可用性和可伸缩性来改进消息应用程序的可用性和可伸缩性。例如,通过屏蔽许多错误、提供对持久状态保持的支持、群集支持、服务冗余、可配置的超时以及可配置缓存大小,从而改进了可用性,所有这些对应用程序来说都是不可见的。通过可配置的缓存大小和服务复制,如服务集群(farm),可以实现可伸缩性。
特别地,可以通过在运行时刻选择消息传输之一与消息应用程序相连接,从而改进了可用性和可伸缩性。按照本发明的消息架构从指定端对端消息传送保证的消息应用程序接收指令,消息传送保证例如:至少一次消息传送、至多一次消息传送、顺序发送消息传送以及会话存续时间。在运行时刻选择适当消息传输中使用了所选的保证,而消息应用程序无须在开发时期指定适当的传输。该架构至少选择一个满足端对端消息传送保证的传输,并在消息应用程序和所选的传输之间建立连接,用于在消息应用程序和对方端点之间进行消息交换。
根据本发明的其它示例实施例,架构可以从指定本地可靠消息特性的消息应用程序接收指令,本地可靠消息特性包括会话状态存储、消息生存时间以及以处理消息缓存。会话状态存储的本地可靠消息传递特性可以被保存在可插式存储中,可插式存储可以是端口监控进程存储、持久数据库存储或应用程序内存存储。存储的选择定义了会话状态的持久性,提供了从更多失败(如应用程序崩溃、节点崩溃等等)中恢复的能力,依次提供了增强的可用性。类似地,基于盘的存储可以比基于内存的存储容纳更多消息,由此既改进了可伸缩性又改进了可用性。
除了其它以外,本地可靠消息传递特性也可包括以下内容:缓存限额,其定义了可由消息传递架构缓存的最大消息数;发送超时,其当发送超时到期后可以解除对发送操作的阻塞;优先级选项,其中较高优先级的消息在较低优先级的消息之前发送;以及可配置有害消息特性,其中可配置中止消息传送的次数来确定消息是否有害。
本发明另外的特性和优点将在下文描述,通过下文的描述或者从本发明的实践中学习,可以清楚部分特性和优点。本发明的特性和优点可以通过后附权利要求中特别指出的仪器和组合来实现及获取。通过阅读下文的描述和后附权利要求,可以更清楚本发明的这些和其它特性,也可以从后述的本发明的实践中学习。
                               附图说明
为了以上文陈述的方式来描述并让读者可以获得本发明的其它特性和优点,将参考附图描述的特殊实施例来对上文简要描述的本发明进行更详细描述。必须理解,这些附图仅描述了本发明的典型实施例,并不限制其范围,通过使用附图来描述和解释本发明的其它特征和细节。附图包括:
图1根据本发明的示例实施例描述了一种可靠的消息传递栈;
图2根据本发明的示例实施例描述了一种消息框架;
图3根据本发明的示例实施例描述了应用程序和传输之间连接的生命周期;以及
图4描述了一种为本发明提供合适的操作环境的示例系统。
                             具体实施方式
本发明涉及到方法、系统以及计算机程序产品,它们通过在开发一个或多个应用程序时提供单个编程模型用于访问并使用多个不同的消息传输,从而简化了可靠的消息传递应用程序开发。本发明的实施例可由包括各种计算机硬件的专用或通用计算机组成,,这将在下文详细讨论。
图1描述了可靠的消息传递栈100a和100b的高级表示。在消息传递栈中,如果没有可靠消息传递协议125,当应用程序105期望把消息发送至如另一应用程序层185时,它将把一条消息或一系列消息115直接传送至数据报消息传递层140。(注意应用程序105可以是任何形式的应用程序,如服务,且通常应被理解成适当地包含应用程序框架。)由于数据报不可靠,因此消息115可能被重复、延迟和/或丢失。例如,在具有防火墙且忽略可靠性(fire and forget reliability)的可靠性较低的数据报协议中,消息即消息115会因各种原因丢失,包括因为处在传输160和165间的中间135。相应地,对方端点应用程序185将永远都无法接收消息即消息115,发送应用程序105无法知晓消息115是否已接收。
然而,根据本发明的示例实施例,向可靠消息传递栈100a和100b提供了可靠的消息传递协议125。相应地,例如,可靠消息传递框架120(也可以是180)可以确保从应用程序105发送的消息即消息115正确地到达其目标端点。例如,如果应用程序105期望把消息115传输至其会话对方应用程序185,可以发送()消息115至可靠消息传递框架120,在可靠消息传递框架120中将消息分配给会话并给出消息序列号。会话标识符对应于应用程序105和应用程序185之间的会话通信。换言之,会话是指两个应用程序105和185之间的双工会话。序列编号对应于会话通信中的特定消息。例如,在两个应用程序105和185之间传递的单个会话中可能有多个消息,每一消息都以应用程序的发送顺序循序编号。另外,在应用程序105、185以及其它可能的应用程序间可以建立多重会话(每一建立的会话可以具有相同或不同的传送保证)。相应地,为每一消息分配唯一的会话和序列号,来标识特定的会话和会话中消息的顺序。
在写入关于消息191的会话和序列头部并执行了其它所需信道处理后,消息191被储存在发送缓存的会话状态190中。然后,消息191的副本通过数据报消息传递140传输,数据报消息传递140通过提供如路由头部而便于消息191的端对端传输。消息191接着可能通过一个或多个中间物被传输,如通过中间物135,每一中间层将消息191的端对端传输简化为一系列的点对点传输。可以使用可延伸的侦听机制来实现如路由、滤波、政策管理以及安全等行为。必须注意,消息传递端点和中间物140、175、150上可用的传输145、170、155以及行为或者可以通过编程建立,或者可以通过配置建立。
如果为应用程序105指定了至少一次传送保证(下文将详细描述),可靠消息传递框架120就期望接收来自可靠消息传递框架180的确认,表明哪些消息被正确接收。消息192携带表明消息191(如序列中的消息5)已被接收的确认。周期性地,如果可靠消息传递框架120没有接收到确认消息192,或者由于可靠消息传递框架180没有正确接收到副本,或者由于120没有接收到任何来自180的确认,则重新发送消息191。相应地,如果消息191被如中间层135丢失、延迟或者误传,可靠消息传递框架120就继续(在超时时间段内,后文将描述)周期性地发送消息191,试图确保消息191的至少一个副本被可靠消息传递框架180正确接收。然而,必须注意,由于同消息191相类似的原因,确认192可能被丢失、延迟或者误传。在这一情况下,本发明提供了确认消息192的可靠消息传送,将在后文描述。
一旦可靠消息传递框架180成功接收到消息191的副本,它就把确认消息192发送至可靠消息传递框架120。在接收到确认消息192后,可靠消息传递框架120就从其会话状态(发送)缓存190中删除消息191的副本,并停止对其继续发送。类似地,可靠消息传递框架180在其会话状态195中记录它已接收到消息191的副本,使得可以丢弃可靠消息传递框架180接收到的任何重复消息,不管该消息是否已被传送至应用程序185。接着,应用程序185可以通过其接收()命令从会话状态(接收)缓存195中检取已接收的消息。如果可靠消息传递框架120由于丢失、延迟或者误传而没有接收到确认192,则继续重新发送消息191,由此引发可靠消息传递框架180发送确认192的另一副本。这一过程将继续直至可靠消息传递框架120接收到至少一个确认192或可靠消息传递框架120放弃重试并向应用程序105发送错误指示为止。
可靠消息传递框架120和/或180可以根据本发明各自被配置为对话200(图2),如结合图2的更详细描述。对话200是一种消息框架抽象,其中,服务(或应用程序实例)使用对话200与其它服务进行可靠的面向会话的通信。程序员可以使用对话通道220来访问对话。此外,对话200提供了可靠的消息传递架构和单个编程模型,其中对应用程序的消息传送保证可配置。必须满足这些可靠性保证,否则将出现会话失败。对话200的设计使得相应的运行时刻实现具有灵活性来提供附加特征,所述附加特征以维持为应用程序实现断言的保证(正确性约束)为条件。特别地,可以向应用程序提供各种程度的可用性和可伸缩性,它们对应用程序的实现来说是透明的。而且,应用程序105和185之间的这些会话通信可以通过各种传输类型(如TCP/IP 160和HTTP 165)、传输连接实例和网络拓扑来实现。
对话200提供的可靠性保证包括至少一次(ALO)、至多一次(AMO)以及顺序(IO)传送。也提供了附加的会话生存时间(TTL)保证。AMO保证确保了对于发送应用程序发送的任何消息而言,消息将至多一次被传送至接收应用程序。由于对话200是一种抽象,因此如果重复消息会破坏应用程序语义,则应用程序无需检测并丢弃会重复消息。类似地,ALO保证使得发送应用程序发送的所有消息都能被接收端点接收到,这令应用程序无需检测丢失或误传的消息并协调其重发。IO保证使得消息以发送应用程序发送的顺序被传送至接收应用程序。这令应用程序无需处理消息的无序接收。
对话200也提供了会话TTL保证,这要求伙伴端点双方间的对话会话在会话TTL到期之前完成。如果会话TTL在对话会话完成之前已经到期,则将对话通道置于错误状态并向应用程序提供错误通知。应用程序可以通过重新协商TTL来延长会话TTL。
对话使得这些消息传送保证或者可以单独使用或者可以以任何形式组合使用,来满足给定应用程序和部署的特定要求。例如,三种AMO、ALO和IO保证的组合提供了对于大多数可靠通信机制典型的恰好一次的顺序传送,如TCP/IP。然而,与典型的通信机制及其相应的编程模型不同,这些保证可以定制,而无需改变应用程序使用的编程模型。
对话200不仅允许可配置的保证,还允许本地可靠消息传递特性可以独立于彼此、并且独立于以上所选的保证而被选择并配置。这些本地可靠消息传递特性划分为两个不同类别:对编程模型完整的类别和涉及独立于应用程序的定制的类别。例如,完整型本地特性包括:已办理缓存,其具有应用程序的一致性、单独以及可分性语义;或者模板(profile)参考,其将模板同会话相关联,以允许独立的定制。可定制的本地特性包括:会话状态存储配置、缓存限额、发送超时、可配置的消息TTL、会话优先级消息或有害消息检测阈值,后文将进行描述。
根据本发明的示例实施例,对话200提供会话状态和消息存储作为可替代的组件,称为对话存储260。由于对话存储260是可替代的,因此第三方可以独立地创建并部署对话存储260的实现。管理员可以选取在给定安装中实际使用的对话存储。相应地,这一机制具有很大的灵活性以满足持久性、性能、独立性和管理目标。对话存储260可以是可插式存储,至少包括内存中存储、盘上持久存储、端口监控进程存储、非易失内存存储、光学存储、磁带、网络附加存储或可移动存储的其中之一。而且,对话存储可以是远程或非节点的。
根据本发明的示例实施例,提供了一种内存中对话存储实现(如对话存储260),它可以将所有状态保存在应用程序内存中。该存储提供了对状态的快速访问;然而,其代价是如果应用程序进程状态丢失(如应用程序被用户终止,由于如应用程序错误被操作系统终止,或被其中应用程序执行失败的系统所终止),则所有的状态都将丢失。
根据本发明的另一示例实施例,快速对话存储实现(如对话存储260)将状态保存在独立专用的端口监控进程内存中。该对话存储确保状态能幸免于应用程序进程失败,然而,其代价是必须进行进程切换来保存状态。如果端口监控进程失败或者操作系统或计算机节点失败,则其负责的会话的所有状态都将丢失。
根据对话存储实现(如对话存储260)的还有一实施例,会话状态信息以持久方式被维持在数据库中,比如在结构化查询语言(SQL)服务器中。这个持久状态可以幸免于计算机节点或操作系统失败,然而,其代价是必须进行磁盘写操作来维持状态。使用如SQL服务器这样的数据库系统来维持状态的好处是安装可能已在适当位置具有工具、技术以及进程,用于对重要应用程序状态进行常规的备份和恢复。
本发明也提供了为了在本地计算机节点或另一节点上运行而配置的一些对话存储。例如,持久对话存储,如SQL服务器,可以被配置为使用本地服务器数据库或另一节点上的服务器数据库。另一节点可以是群集系统的一部分,因此具有很高的可用性。
本发明还使得多重存储(或存储配置)可以同时存在,来满足应用程序(多个)所使用的特殊部署特性。而且,可以修改应用程序配置来使用不同的存储(或存储配置)以便适应如负载或容量增加这样的变化,利用新存储选项的优点或着重突出其它部署环境的考虑因素。此外,同一应用程序中的不同通信会话会具有不同的配置要求。对话使得每一会话可以单独配置。例如,应用程序中一些会话可能在持久状态存储中运行最好,然而其它会话可能在易失性状态存储中运行最好。对话存储可以通过模板(下文描述)来配置,或者以应用程序代码来指定。
对话200所提供的另一可配置特性是缓存限额。对话200在发送端和接收端应用程序中缓存消息。这种缓存提高了两个应用程序的独立性,使得任一方即使在另一方未运行或不可获取时,如由于网络分区问题,都能够向其本地缓存发送或接收消息。例如,即使当另一方暂时不可用,如未运行或不可获取时,应用程序205也可以继续发送消息。该特性通过将消息累积在本地发送缓存250中直到可以成功传输而实现。类似地,即使当发送消息的应用程序目前未运行时,应用程序205也可以接收先前在接收缓存245中缓存的消息。对话200提供了可配置缓存限额,该限额定义了可由系统缓存的最大消息数(视消息尺寸而定)。相应地,这限制了对话状态235消耗的空间,并限制了其它端点可消耗的本地资源。这一特性也允许消息传递系统保存空间,使应用程序足以本地缓存指定的消息数。对话200还提供了最小缓存限额,该限额定义了由消息传递架构缓存的最小保留的消息数,同最大消息尺寸一起定义了由消息传递架构缓存的最小字节数。缓存限额可以通过模板(后文描述)来配置或以应用程序代码来指定。
对话200也提供了可配置的发送超时特性。当发送消息时,该消息被置于对话存储260/发送缓存250中。如果缓存已满,即,已达到缓存限额,则对发送()的调用被阻塞,直到或者发送超时,或者缓存中的空间变为可用以保存消息为止。当消息成功传输至接收端点并得到其确认,且本地端点不再需要该消息来重试时,此时缓存中的空间变为可用。如果在发送超时之前空间已变为可用,则发送()210调用正常地完成。如果在空间变为可用之前发送超时已到期,则引发一个异常,通知应用程序该消息无法被成功缓存(捕捉)。相应地,应用程序可以稍后重试。可配置的超时使得应用程序可以根据阻塞的简单性选择不同程度的响应。发送超时可以通过模板(后文描述)来配置,也可以应用程序代码来指定。
如上所述,对话200支持端对端的会话TTL保证。对话200也提供了可被配置为本地特性的任选的消息生存时间。消息TTL要求发送的消息必须在TTL指定的时间内被接收端点成功接收,否则将向应用程序205引发错误。对话200还为消息TTL提供了可配置的延长。相应地,当TTL到期时,向发送应用程序205提供通知。然后,应用程序205可以选择终止对话或延长消息的TTL。同发送超时类似,TTL可以由应用程序代码设定,也可以用模板间接地配置。
对话200提供的另一特性是分配的任选优先级。对话200中的所有消息都具有相同的优先级。然而,当来自多重对话的消息可用于发送时,在发送消息时,较高优先级的对话将优先于较低优先级的对话。类似地,当消息可用于“传送”至接收应用程序时,较高优先级的消息优先于的较优先级的消息而被接收。优先级可以由应用程序代码所设定,也可使用后文描述的模板来间接地设定。
对话200还提供了消息的任选办理的缓存。当对话用于事务处理时,本地发送和接收缓存作为事务性的资源管理器。在这一情况下,事务处理中接收到的消息被视为是事务处理结果的暂时传送(从接收缓存中被删除)。类似地,事务处理中发送的消息被视为事务处理结果的暂时捕捉(被添加到发送缓存)。如果事务处理确认,这些暂时的消息捕捉和传送就变为永久性。如果事物处理中止,则放弃这些暂时的操作,就如从未发生过。同其它事务性资源管理器类似,对话存储负责为暂时缓存操作(如捕捉的消息在事务处理外是不可见的)提供事务性的独立,并在事务管理器的控制下提供相对事务完成的事务可分性。
事务性缓存简化了正确消息传递应用程序的开发(如即使在失败或并发活动时都可作出正确的状态变化)。应用程序可以使用这一特性来协调消息交换和本地消息处理。例如,应用程序可以在事务处理的范围内接收并处理消息。这一消息处理可以包括读取并更新一个或多个事务性数据库,以及在事务处理包含的对话中发送一个或多个消息。如果事务处理中止,则所有的工作都未完成。特别地,暂时发送的消息被丢弃——即,会话对方不会看到这些部分结果——且接收到的消息仍然可用于传送。后者允许在新事务处理的范围内处理消息。当事务处理确认时,所有行动变为永久性的,包括删除接收到的消息和缓存发送的消息。净影响是恰好一次消息处理。事务性缓存是一种本地对话特性,因为应用程序是否使用该消息对其会话对方应用程序来说是完全透明的。
根据示例实施例,并如下文结合图2的描述,在发送端点处当调用发送()210时,消息被暂时置于对话存储260中。如果事务处理确认,则消息被提交至存储260,并变为可用,用于发送至对方端点。如果事务处理中止,则丢弃该消息。在接收端,当调用接收()215(或删除)时,消息暂时从对话存储260中被删除。如果事务处理确认,则消息永久从存储260中被删除。如果事务中止,则消息留在存储260中并可用于重新传送。办理接收允许消息的恰好一次处理。
应该注意,尽管已办理缓存是排队系统的常见特性,但是这些系统通常需要持久存储。对话200提供了这些相同的事务语义而不考虑对话存储260的持久性,并且在所有情况下提供了相同的程序模型。例如,内存中存储通过作为事务性资源管理器参与而提供了事务语义。然而,对话200允许应用程序实现独立于部署细节,包括与传输和连接特征、消息路由以及端点状态管理相关的细节。
对话200提供的另一特性是任选有害消息功能。如上所述,当在事务处理中接收并且处理消息后,该事务中止,消息仍保留在对话存储260中,并且可用于重新传送至应用程序。有时造成事务中止的原因是瞬变的,如,由于死锁产生的超时,则传送和消息处理在下一次尝试中将能成功。如果对于给定消息的传送尝试反复引起中止,则该消息被视为“有害”。对话200提供了一种方法来配置消息传送中止多少次以后消息可视为有害。当检测到有害消息时,向应用程序引发错误,停止对该消息处理的进一步尝试,直到应用程序采取纠正措施为止。这能确保进程资源不被浪费在永远不会成功或仅在一些干预下才会成功的尝试上。有害消息检测可以通过模板(后文描述)来配置,也可以应用程序代码来指定。
任选的模板特性提供了对话配置选项的命名集合。如上所述,对话有很多可配置特性,如缓存限额、超时、存储等等。而且,对话200提供了可配置的消息传送保证,如ALO、AMO和IO,应用程序代码可以独立指定所需的最低级别的传送保证,这可以在需要时通过配置而增加。模板提供了一种组合共用对话设置的方法,并通过名称来引用这些设置。而且,对话200的实现允许通过应用程序配置文件来选择模板,因此管理员可以对设置进行部署时间控制。当创建或接受对话时,应用程序根据名称来引用模板,该模板中指定的所有设置都用来创建对话200。设置可以作为应用程序的一部分,如代码,而被直接建立,或者作为其它编程结构被建立。模板可以通过代码或其它编程结构间接地同程序相关联,使得模板值可以独立于应用程序而被设置。直接建立的模板值优先于通过模板引用间接设定的模板值。
由于对话200提供这些特性和保证的任意组合,它们相互独立,因此对话200可以被配置为满足任何耦合配置,从类似于传输控制协议(TCP)和远程过程调用(RPC)的紧耦合编程模型,到类似于数据报和队列的松耦合编程模型。另外,对话200有效地支持各种双方消息交换模式(MEP),如单向、半双工(从单个请求/响应到更复杂的模式)以及最复杂的全双工交互。因而,对话200考虑到双方通信编程模型的统一。
图2根据本发明的示例实施例描述了对话200的操作特性。对话通道应用程序编程接口(API)220作为应用程序205的抽象。如上所述,对话200采用消息传递协议,如Web服务可靠消息传递(WS-RM),它定义了消息序列。序列定义了会话中的一组单向消息。两个这样的序列组合在一起以形成一个对话,通信双方之间每个方向上有一个序列。当调用通道200方法发送()210时,作为参数传输至发送方法210的消息被储存在发送状态250中,并根据消息发送的顺序唯一地标上单调递增的消息序号。
消息255在发送状态250中被缓存以维持序列中关于单独消息255的状态。在这一点上,可以说消息在状态250中“被捕捉”,发送()210返回至应用程序。更特别地,发送方法210接受一个消息作为参数。该消息被传输至发送缓存250被标上序列号,相继或同时被储存在存储260中。此刻消息被认为“被捕捉”,发送方法210返回。对其它消息重复这一调用可以产生消息255的全部或部分序列。
对话状态235包括发送和接收缓存,分别为250和240。对话状态235控制并存储像对话标识符、应用程序指定的保证以及对方端点地址这样的常量信息。对话状态250还控制像下一输出传输序列号和确认状态这样的会话信息。而且,像对话TTL、超时、存储位置等配置数据被保持在对话会话状态235中。
一旦消息被捕捉,协议270就对其进行处理并相应地通过端口285发送已捕捉的消息,如消息275。对话200的编程模型和运行时刻架构提供了一种灵活和有效的端点分辨模型。
该模型至少确保两个端点充分被分辨出来,以提供可靠消息交换。特别地,协议270可以在传送对话中的初始消息用于处理之前,确保双方端点都具有足够的参考,从而通过对话200及其相应的会话保证端点唯一性以及消息的正确相关的参考。这需要用于,如确保消息被可靠地传送至单个会话对方,以便确保至多一次传送。该端点分辨可以基于多重因素,包括标识由对话200的创建者所使用的对方应用程序的标识符(如通用资源标识符(URI))、本地配置、消息头部中的路由数据、中间配置以及目标应用程序配置。
必须要注意的是,应用程序的实现205不需要涉及对话端点分辨的细节。对话200的架构执行分辨进程来协调初始端点,以确保该端点是会话唯一选择的对等端点。这一步骤根据需要完成,并且对于应用程序实现205来说是透明的。
也可提供对话200的运行时刻端点分辨来确保达到消息传送目标,而同时提供了在大范围网络配置中实现正确执行的灵活性。该特性支持应用程序在各种配置中的灵活部署,着重突出可伸缩性、可用性、安全性(如防火墙)以及性能需求。服务部署配置包括,如,应用程序场(farm)(如超过尺寸范围的复制品)以及应用程序分区(如根据用户号码或者地理区域进行分区处理)。应用程序场和分区可以单独使用,也可以一起使用。例如,应用程序可以部署为使用至应用程序分区的数据相关路由,应用程序分区又包括应用程序服务器的场(farm)。
协议270也确定应用程序205指定了哪种端对端保证和本地特性,独立于上文描述的执行端点分辨的方法。如果应用程序205指定了ALO保证,则协议270在对话的发送缓存250中保存消息275的副本,直到协议270从接收端(未示出)接收到表明消息275被正确接收的肯定确认为止。当协议270从接收端接收到肯定确认时,它就在会话状态235中记录这一事实,并从发送缓存250中删除该消息。如果协议270在指定的重试时间超时内没有接收到肯定确认,则用相同的消息序号重新发送同一消息275的副本。对话200可能重复这一进程多次,并可采用重试定时补偿策略来避免网络上进一步的阻塞。如果在消息TTL指定的时间内没有接收到确认,则引发一个错误,通知发送应用程序205无法满足保证。
当接收到对话消息280时,协议270复制接收缓存状态240中的消息。协议270还记录下一预期的消息序号。当接收到消息280时,如果对话200保证包括AMO,则将到达消息280的消息序号与之前到达的消息序号集合进行比较,消息序号集合如上所述被储存在接收缓存状态240中。如果该集合中已经包含了匹配的序号,则认为消息280是重复的并将其丢弃;否则,则将消息280置于本地接收缓存240中用于进一步的引用。
如果保证包括ALO,则协议270在接收到消息280后向对话的对方端点发送未排列的完整选择性肯定确认。该确认必须包含会话中目前已接收的所有消息的序号。可以使用简写符号来保存消息空间,该简写符号包括序号范围的集合。
如果指定的保证不包括IO,则消息280立即可用于通过接收通道220被“传送至”接收应用程序205。特别是,向应用程序205发送消息可用于接收的通知。然后,应用程序205可以调用接收()215,于是把可用于传送的下一消息传递到应用程序205,并且称为发生“传送”。
如果指定了IO保证,则将到达消息280的序号同下一预期的序号进行比较。如果序号小于下一预期的序号,则丢弃到达的消息280。如果两者匹配,则到达消息280立即可用于传送至接收应用程序205,并且把下一预期的序号设为下一丢失消息的序号。如果序号大于下一预期的序号,则还指定了行为是否取决于ALO保证。如果未指定ALO保证,则消息280立即可用于传送至接收应用程序205,并将下一预期的序号设为到达消息280的序号加1。如果指定了ALO保证,则消息280不可用于传送至接收应用程序205,而是保留在接收缓存240中。因而,如果两者不匹配,则假定至少有一个具有较低序号的消息还未接收到。当所有这类丢失的较低序号的消息都到达时,则消息的连续范围可用于以正确顺序传送至接收应用程序,并将下一预期的序号设为下一丢失消息的序号。
如上所述,当消息可用于传送至接收应用程序205时,向应用程序205发出通知。然后,应用程序205可以在对话通道220上调用接收()方法215来接受下一可用的消息传送。接收()可以被多次调用,从而依次接收每一可用的消息。为了保证顺序而连续地传送事件通知。因而,当消息可用于传送至应用程序205时,通过调用先前向对话200事件注册的应用程序代码来向应用程序205传送单个事件通知。在对应用程序代码的调用返回之前,即使其它消息可用于传送,也不会作出对该应用程序代码的其它调用。在该应用程序代码中,应用程序205通常调用对话接收()215来接收下一可用消息。
如上所述,当调用发送()210时,将当前发送缓存250中的消息数同指定的缓存限额进行比较。如果消息数超过了限额,则调用者者发送()210根据一事件而被阻塞,直到或者空间变为可用,或者超出发送超时为止。当发送缓存250的空间变为可用时,缓存检测是否还有调用者等待发送消息,如果有,则调用者发送()210解除阻塞,并且能够再次发送消息。
对话200的所有状态——包括那些在缓存250和240的状态、在通道220中的状态以及在协议270中的状态——都可以同时被保持在对话存储260中。对话存储260应该包含最新的信息。这确保对话状态235具有对话存储260的持久性属性,并使得所有的特性都无需考虑正在使用的存储260而起作用。例如,将消息280置于接收缓存240中可能涉及对存储260的磁盘写入。为了提供保证,仅在消息已被记录到存储260之后才发送确认。这可以确保,如任一发送端或接收端始终都持有消息的副本。类似地,在发送端,发送()210仅在消息已被记录到存储260中以后才完成。
如上所述,对话260可以是可插式存储,允许极大的灵活性以满足持久性、性能、独立性和管理目标。例如,存储260可以从单个框架中的多个存储中选取,包括以下:内存对话存储实现,其将所有状态保存在应用程序内存中;快速对话存储实现,其将状态保存在独立专用的端口监控进程的内存中;或者持久数据库存储实现,如结构化查询语言(SQL)服务器。同一应用程序205中的不同对话可使用不同的存储。此外,本发明还提供了一些对话存储260,它们可配置为运行于本地计算机节点或另一节点上。
由于对话200充当代表应用程序205的代理,因此使应用程序与连接变化隔离。这允许如批处理形式,其中应用程序开始、发送和接收一些消息,然后退出而无需等待其它端点响应或甚至可用。而且,消息传送可以仅以很大的灵活性来调度,仅需服从于满足各种传送保证和本地特性,如消息或会话TTL。例如,根据传送保证,对话200可以独立于应用程序205,在某一时间段(负载平衡)传播峰值消息负载、或将消息传送转移至一个更具成本价值的时间上、等待资源变为可用、补偿消息或对话优先级等等。另外,存储260还为应用程序205提供了关闭及重启能力。批处理、调度以及应用程序关闭和重启能力提高了系统的可用性和可伸缩性。
另外,如上文所述,应用程序205可以指定发送()210或接收()215操作关于对话缓存250和240而分别被处理。这使得应用程序可以,如在一个或多个对话上接收消息、发送消息、并在单个事务中更新应用程序表。在对事务的这一使用上,这只是本地概念,并不涉及其它端点。
对话也提供了运行时刻的错误恢复,可以自动恢复(屏蔽)许多错误265,而不涉及应用程序的实现。应用程序可以依赖接收为对话200的寿命断言的特征(即断言的保证和特性)。如果对话200的架构或者协议270确定不再能满足断言的特征,则将对话置于错误状态,并引发错误事件,允许独立于干线应用程序代码甚至应用程序205的带外纠正行动。如果错误265可以纠正(修复),对话就可以被置回服务中。不可恢复的错误,即无法修复的错误,会引发对话200的终止和应用程序通知。这一设计符合“失败快速(fail-fast)”模型,这是可靠应用程序开发的基础。
可存活的失败可以包括以下失败:破坏、丢失、重复或延迟的消息;传输和网络失败;进程失败;中间层和系统失败。如上所述,由于对话200为应用程序提供了抽象并维持其自身的缓存和存储,因此对话200也支持具有间歇连接性的应用程序和环境。对话也可以适应于变化的环境,如网络拓扑、重新协商的安全环境或端点重定位的变化。
对话200可以通过如重发消息来自动尝试自我修复这些错误。或者可以向第三方,如系统操作员或诊断代码发送请求,请求协助修复错误。这些协助可以是,如为了修复网络中中断连接的简单人为介入,或可能是一个自动的修复进程。在任何情况下,一旦错误已修复,对话200就可以继续发送消息。这一特性同其它可用性特性一起允许长时间存续的对话。然而,如果错误无法由对话200或者通过一些其它第三方介入来修复,则必须向起动该对话的应用程序205引发错误消息。
应用程序可以被配置为使用对话存储260,使得对话可以跨过应用程序进程失败和重启而被维持。一些存储260可以额外地容许系统失败和重启。
其它传输错误可以由指定域错误处理器和上述基本消息重发支持的组合来自动处理。示例包括由安全证书或者政策过期引发的错误。如果在安全会话上发送的消息由于证书过期而产生错误,那么对话200可以重新同安全证书协商并清除对话错误。当对话进程得以继续,根据标准重试进程将使用更新后的证书重新发送所缓存的消息。
同样如上所述,对话200的设计及相应的架构使得运行时刻能令对话200动态地适应变化的执行环境。这一特性对应用程序透明,并支持长时间存续对话的存在以及高度可用的应用程序。
上述错误处理器(可以是可插式的)、发送和传送重试以及错误和修复模型的组合使得对话可以适应于很多环境变化。这些变化包括但不限于,政策变化(如消息政策)、协议变化(如对新的安全协议的支持)、网络拓扑变化(如路由器或防火墙的增加或删除)、改变已部署的应用程序来处理增加的负载(如引入应用程序场和/或分区)、以及对话端点和相关状态的重定位(如灾难恢复)。也可考虑到可伸缩的部署选项,包括从非常小到非常大的支持。例如,对话200支持按比例放大、按比例缩放(scale-out)、应用程序复制或分区,同样对应用程序的实现是透明的。
图3描述了对话200的生命周期和状态。对话200可以处于两个主要状态中的一个,活动状态320或不活动状态360。如果对话200处于活动状态320,则对话通道对象位于内存中,否则对话200是不活动状态360,对话200仅存在于对话存储260中。通过去激活350和重新激活340进程来管理系统资源,可以手动或自动进行。例如,如果应用程序调用Dispose,则手动地进行去激活350,或者不活动时间而自动地进行,在不活动时间中,一段时间逝去,其中在对话通道上没有交换任何消息。这类通道可以被去激活(将相应的对象从内存中释放),从而释放内存资源使其可用于其它事物。
如果应用程序从对话管理器(未示出)请求通道,则手动地进行重新激活340,或者如果新消息到达会话,则自动地进行重新激活340。每一对话在对话创建310期间由对话管理器分配一个唯一的ID。该ID由应用程序205根据重新激活340请求传送至对话管理器,对话管理器使用该ID来定位对话状态并重新起动通道。去激活350和重新激活340接口使得系统可以限制系统资源,所述系统资源与发送输出消息或处理输入消息未积极使用的对话相关联。这使得架构可以回收相关资源,与对话存储260相关的资源除外。而且,这一设计考虑到的资源调度包括:根据优先级或资源可用性调度消息发送;批处理消息来进行更高效的发送;根据优先级或资源可用性调度消息传送;以及批处理消息传送来获得更高效的处理。
对话的创建310由对话管理器控制,并可由调用创建310函数的应用程序来起动。或者,消息传递系统可以在从另一端点接收到表明需求新对话的消息后起动对话创建310。在这一情况下,系统通知应用程序205对话被请求。然后,应用程序205可以调用对话管理器上的接受(Accecpt)方法来接受该对话请求,并引发对话创建310,也可以调用对话管理器上的拒绝(Reject)方法来拒绝该对话请求。对话管理器也控制拆卸330,拆卸330可以由于多个原因而被起动。原因之一是会话已成功完成,即,双方都完成了发送并没有留下任何消息。拆卸330的另一原因可能是对话200被终止,如,应用程序调用Terminate()函数或从对方端点接收到终止指示。当一方终止对话时,将向另一方发送消息以表明该终止。该消息没有任何可靠性,它仅仅是一种尝试,告诉对方对话已被终止。终止表示对话会话中不会再有进一步的消息交换。
尽管本发明的描述将对话定义为双工通信机制,其中应用程序消息可以由双方会话端点发送和接收,然而另一示例实施例包括了一种单工模型。根据实施例,一个会话端点仅发送应用程序消息,并且不从其对方端点接收应用程序消息,而会话对方端点仅接收应用程序消息,而不发送应用程序消息。同样的可配置保证和可配置本地端点特性可以与在对话中一样应用在单工模型上。实现的不同之处在于,在发送端点不需要接收缓存240,在接收端点不需要发送缓存250。
本发明范围内的实施例还包括计算机可读媒质,来携带或持有储存的计算机可执行指令或数据结构。这类计算机可读媒质可以是任何可由通用或专用计算机访问的可用媒质。作为示例,并非局限,这类计算机可读媒质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备,或任何可用来以计算机可执行指令或数据结构的形式携带或储存所需的程序代码装置并可由通用或专用计算机访问的媒质。当消息通过网络或另一对计算机的通信连接(可以是硬布线、无线或者两者的组合)来传输时,计算机适当地将该连接视为一种计算机可读媒质。这样,任何这样的连接都适当地被视为计算机可读媒质。计算机可读媒质的范围也应该包括以上所述的组合。计算机可执行指令包括,如,引发一般用途计算机、特殊用途计算机或特殊用途处理设备执行指定函数或函数组的指令和数据。
图4以及下述讨论将要提供对可实现本发明的合适的计算环境的简要综合描述。尽管不需要,本发明仍将在计算机可执行指令的一般环境下进行描述,计算机可执行指令如程序模块,在网络环境中被计算机执行。一般来说,程序模块包括例程、程序、对象、组件、数据结构等等,完成指定的任务和实现特定的抽象数据类型。计算机可执行指令、相关数据结构以及程序模块代表了执行本发明方法步骤的示例程序代码装置。这类可执行指令的特性序列或相关数据结构代表了实现步骤中描述的功能的相应行动的示例。
本领域技术人员可以理解,本发明可以在具有多种类型计算机系统配置的网络计算环境中实践,包括个人计算机,手持式设备、多处理器系统、基于微处理器或可编程用户电子产品、网络PC、小型机、大型计算机等等。本发明也可以在分布式计算环境中实践,在该环境中,任务由本地及通过通信网络连接(可以是硬布线链路、无线链路、或者两者的组合)的远程处理设备来完成。在分布式计算环境中,程序模块可以同时位于本地和远程内存存储设备中。
根据图4,实现本发明的示例系统包括以常规计算机420形式表示的通用计算机设备,包括处理单元421、系统内存422、以及将包括系统内存422的各种系统组件耦合至处理单元421的系统总线423。系统总线423可以是几种总线结构类型的任何一种,包括内存总线或内存控制器、外围总线和使用任意各类总线结构的本地总线。系统内存包括只读内存(ROM)424和随机存取内存(RAM)425。基本输入/输出系统(BIOS)426,包括如在启动时协助在计算机420内的元件之间传输信息的基本例程,可以储存在ROM 424中。
计算机420也可以包括用于对磁硬盘439进行读写操作的磁硬盘驱动器427、用于对可移动磁盘429进行读写操作的磁盘驱动器428、以及用于对可移动光盘431如CD-ROM和其它光学媒质进行读写操作的光盘驱动器430。磁硬盘驱动器427、磁盘驱动器428和光盘驱动器430分别通过磁硬盘驱动接口432、磁盘驱动接口433和光盘驱动接口434连接至系统总线423。驱动器及其相应的计算机可读媒质为计算机可执行指令、数据结构、程序模块和其它用于计算机420的数据提供了非易失存储。尽管这里描述的示例实施例采用了磁硬盘439、可移动磁盘429和可移动光盘431,也可以使用其它类型的用于存储的计算机可读媒质,包括盒式磁带、闪存卡、数字化视频光盘、Bernoulli盒式磁带、RAM、ROM等等。
程序代码装置包括一个或多个程序模块,可以储存在硬盘439、磁盘429、光盘431、ROM 424或RAM 425中,包括操作系统35、一个或多个应用程序36、其它程序模块437以及程序数据438。用户可以通过键盘440、指示设备442或其它输入设备(未示出)向计算机输入命令,其它输入设备如麦克风、操纵杆、游戏操纵杆、圆盘式卫星电视天线、扫描仪等等。这些以及其它输入设备通常通过同系统总线423耦合的串行端口接口446连接至处理单元421。输入设备也可以通过其它接口连接,如并行接口、游戏接口或通用串行总线(USB)。监视器447或另一显示设备也通过接口,如显示适配器448,连接至系统总线423。除了监视器,个人计算机通常包括其它并行输出设备(未示出),如扬声器和打印机。
计算机420可以在网络化的环境中操作,该环境使用逻辑连接至一个或多个远程计算机,如远程计算机449a和449b。远程计算机449a和449b的每一台都可以是另一台个人计算机、服务器、路由器、网络PC、对等设备和其它公共网络节点,通常包括许多或所有上文描述的同计算机420相关的元件,尽管图4中只描述了内存存储设备450a和450b及其相关应用程序436a和436b。图4描述的逻辑连接包括局域网(LAN)451和广域网(WAN)452,此处作为示例,并非局限。这类常见的网络环境有办公室或企业范围计算机网络、企业内部互联网及因特网。
当在LAN网络环境中使用时,计算机420通过网络结构或适配器连接至本地网络451。当在WAN网络环境中使用时,计算机420可包括调制解调器454、无线链路或用于在广域网452如因特网中建立通信的其它装置。调制解调器454可以是内置的,也可以是外置的,通过串行端口接口446连接至系统总线423。在建立网络的环境中,所描述的同计算机420或其部分相关的程序模块,可以储存在远程内存存储设备中。此处描述的网络连接是示例性的,也可以使用用于在广域网452中建立通信的其它装置。
本发明可以在不背离其精神和主要特征的情况下以其它特定形式来实施。所描述的实施例仅作说明,并非限制。因此,本发明的范围由后附权利要求书来指明,而非前文的描述。所有在等效权利要求意义和范围之内的改变都包含在其范围内。

Claims (69)

1.在对发送和接收操作进行抽象以通过一个或多个可用消息传输与对方端点进行消息交换的运行时刻架构中,通过至少选择所述一个或多个消息传输之一在运行时刻与消息传递应用程序相连接,来改进消息传递应用程序可用性和可伸缩性的一种方法,该方法包括的动作有:
从消息传递应用程序接收一个或多个指令,所述指令指定了在运行时刻选择至少一个合适的消息传输时要使用的一个或多个端对端消息传送保证,而不需要消息传递应用程序在开发时期指定所述至少一个合适的消息传输,其中,所述一个或多个端对端消息传送保证至少包括下列之一:至少一次消息传送、至多一次消息传送、顺序发送消息传送以及会话存续时间;
从所述一个或多个可用消息传输中选择所述至少一个合适的消息传送,来实现在从消息传递应用程序接收到的所述一个或多个指令中指定的一个或多个端对端消息传送保证;以及
在消息传递架构内,在消息传递应用程序和所选的至少一个合适的消息传输之间创建连接,以在消息传递应用程序和对方端点之间进行消息交换。
2.如权利要求1所述的方法,其特征在于,还包括以下动作:
从消息传递应用程序接收一个或多个指令,所述指令指定了一个或多个本地可靠消息特性,其中,所述一个或多个本地可靠消息特性至少包括下列之一:会话状态存储、消息存续时间和已办理消息缓存。
3.如权利要求2所述的方法,其特征在于,所述的会话状态存储包括可插式存储。
4.如权利要求3所述的方法,其特征在于,所述的可插式存储至少包括内存中存储、盘上持久存储、端口监控进程存储、非易失性内存存储、光学存储、磁带、网络附加存储或可移动存储的其中之一。
5.如权利要求4所述的方法,其特征在于,所述的可插式存储包括对消息传递架构远程的存储。
6.如权利要求2所述的方法,其特征在于,所述的本地可靠消息特性还包括最大缓存限额,其定义了将由消息传递架构缓存的最大消息数,以及当与最大消息容量组合时定义了将由消息传递架构缓存的最大字节数;最小缓存限额,其定义了将由消息传递架构缓存的最小保留消息数,以及当与最大消息容量组合时定义了将由消息传递架构缓存的最小字节数;发送超时,可以在发送超时后解除对发送操作的阻塞,其中,较高优先级消息优先于较低优先级消息发送和传送;以及可配置的有害消息特性,其中消息传送中止次数是可配置的,用于可确定消息有害。
7.如权利要求2所述的方法,其特征在于,不论会话状态存储的持久性如何,所述的已办理消息缓存的本地可靠消息特性是可用的。
8.如权利要求1所述的方法,其特征在于,所述创建的连接包括通道、会话状态缓存、协议和可插式存储。
9.如权利要求8所述的方法,其特征在于,所述一个或多个指定的端对端传送保证包括至少一次消息传送,其中,所述协议在重试间隔之后把先前发送消息的副本周期性地发送到对方端点,直到接收到确认为止。
10.如权利要求9所述的方法,其特征在于,所述一个或多个指定的端对端传送保证还包括会话存续时间,其中,如果在指定的会话存续时间内没有接收到确认,则不再重试并向消息传递应用程序发出错误指示。
11.如权利要求9所述的方法,还包括以下动作:
接收消息存续时间的本地可靠消息特性,其中,如果在指定的消息存续时间内没有接收到确认,则不再重试,并向消息传递应用程序发出错误指示。
12.如权利要求9所述的方法,其特征在于,所述的重试间隔由连续重试间隔之后的后退间隔来调整。
13.如权利要求8所述的方法,其特征在于,所述通道、会话状态缓存和协议的状态被维持在可插式存储中。
14.如权利要求1所述的方法,其特征在于,所述至少一个合适的消息传输至少包括下列传输之一:TCP/IP、UDP、HTTP、RPC和SMTP。
15.如权利要求1所述的方法,其特征在于,所述的消息交换由多个消息交换模式定义,多个消息交换模式至少包括单向消息传递、请求/响应消息传递和全双工消息传递的其中之一。
16.在对发送和接收操作进行抽象以通过一个或多个可用消息传送来与对方端点进行消息交换的运行时刻消息传递架构中的一种计算机程序产品,该计算机程序产品包括携带计算机可执行指令的一个或多个计算机可读媒质,所述指令通过选择所述一个或多个消息传输之一在运行时刻与消息传递应用程序连接,实现了一种改进消息传递应用程序可用性和和伸缩性的方法,该方法包括以下动作:
从消息传递应用程序接收一个或多个指令,所述指令指定了在运行时刻选择至少一个合适的消息传输时所要使用的一个或多个端对端消息传送保证,而不需要消息传递应用程序在开发时期指定所述至少一个合适的消息传输,其中,所述一个或多个端对端消息传送保证至少包括下列之一:至少一次消息传送、至多一次消息传送、顺序发送消息传送以及会话存续时间;
从所述一个或多个可用消息传输中选择所述至少一个合适的消息传输,以实现在从消息传递应用程序接收到的所述一个或多个指令中指定的一个或多个端对端消息传送保证;以及
在消息传递架构内,在消息传递应用程序和所选择的至少一个合适的消息传输之间创建连接,用于在消息传递应用程序和对方端点之间进行消息交换。
17.如权利要求16所述的计算机程序产品,所述方法还包括以下动作:
从消息传递应用程序接收一个或多个指令,所述指令指定了一个或多个本地可靠消息特性,其中所述一个或多个本地可靠消息特性至少包括下列之一:会话状态存储、消息存续时间以及已办理消息缓存。
18.如权利要求17所述的计算机产品,其特征在于,所述会话状态存储包括可插式存储。
19.如权利要求17所述的计算机程序产品,其特征在于,所述本地可靠消息特性还包括最大缓存限额,其定义了将由消息传递架构缓存的最大消息数,以及当与最大消息容量组合时定义了将由消息传递架构缓存的最大字节数;最小缓存限额,其定义了将由消息传递架构缓存的最小保留消息数,以及当与最大消息容量组合时定义了将由消息传递架构缓存的最小字节数;发送超时,可以在发送超时之后解除对发送操作的阻塞,其中,较高优先级的消息优先于较低优先级的消息发送和传送;以及可配置的有害消息特性,消息传送中止次数是可配置的,用于确定何时该消息有害。
20.如权利要求19所述的计算机程序产品,其特征在于,仅在缓存限额表明空间在预定的超时时段期满之前是可用的时候,所述发送超时才允许发送操作。
21.如权利要求17所述的计算机程序产品,其特征在于,不论会话状态存储的持久性如何,所述已办理消息缓存的本地可靠消息特性都是可用的。
22.如权利要求16所述的计算机程序产品,其特征在于,所述创建的连接包括通道、会话状态缓存、协议以及可插式存储。
23.如权利要求22所述的计算机程序产品,其特征在于,所述协议将接收到的消息复制到接收缓存中。
24.如权利要求23所述的计算机程序产品,其特征在于,所述协议记录下一预期的消息序号。
25.如权利要求23所述的计算机程序产品,其特征在于,如果根据会话端点维持的状态,接收到的消息与之前接收到的消息重复,则丢弃该重复消息。
26.如权利要求22所述的计算机程序产品,其特征在于,所述一个或多个指定的端对端传送保证包括至少一次消息传送,其中,所述协议在重试间隔之后把先前发送的消息的副本周期性地发送至对方端点,直到接收到确认为止。
27.如权利要求26所述的方法,其特征在于,所述一个或多个指定的端对端传送保证还包括会话存续时间,其中,如果在指定的会话存续时间内没有接收到确认,则不再重试,并向消息传递应用程序发出错误指示。
28.如权利要求26所述的方法,还包括以下动作:
接收消息存续时间的本地可靠消息特性,其中,如果在指定的消息存续时间内没有接收到确认,则不再重试,并向消息传递应用程序发出错误指示。
29.如权利要求16所述的计算机程序产品,所述方法还包括以下动作:
调度消息序列中的至少一个消息至对方端点的发送或传送。
30.如权利要求29所述的计算机程序产品,其特征在于,所述调度至少基于连接、负载平衡、消息优先级以及较低成本传输的使用的其中之一。
31.如权利要求22所述的计算机产品,其特征在于,所述通道、会话状态缓存和协议的状态被维持在可插式存储中。
32.在对发送和操作进行抽象以通过一个或多个消息传输与对方端点进行消息交换的运行时刻消息传递架构中,通过选择所述一个或多个消息传输的至少一个在运行时刻连接至消息传递应用程序,以改进消息传递应用程序的可用性和可伸缩性的方法,该方法包括以下步骤:
在运行时刻从所述一个或多个传输中确定至少一个合适的传输,而消息传递应用程序不需要在开发时期指定所述至少一个合适的传输,来满足所述消息传递应用程序所指定的一个或多个端对端传送保证,其中,所述一个或多个端对端传输保证至少包括下列之一:至少一次传送、至多一次传送、顺序传送以及会话存续时间;以及
连接消息传递应用程序和所确定的至少一个合适的传输,以便在消息传递应用程序和对方端点之间进行消息交换。
33.如权利要求32所述的方法,还包括以下步骤:
实现一个或多个本地可靠消息特性,其中,所述一个或多个本地可靠消息特性至少包括下列之一:会话状态存储、消息存续时间以及已办理消息缓存。
34.如权利要求33所述的方法,其特征在于,所述会话状态存储被维持在可插式存储中,所述可插式存储至少包括端口监控存储、持久数据库存储和应用程序存储的其中之一。
35.如权利要求33所述的方法,其特征在于,所述本地可靠消息特性还包括:缓存限额,其定义了将由消息传递架构缓存的最大消息数;发送超时,它在发送超时之后解除对发送操作的阻塞;优先级选项,其中,较高优先级消息先于较低优先级消息被发送;以及可配置的有害消息特性,消息传送中止次数是可配置的,用于确定何时该消息有害。
36.如权利要求33所述的方法,其特征在于,不论会话状态存储的持久性如何,所述事务支持的本地可靠消息特性都是可用的。
37.如权利要求32所述的方法,其特征在于,所述消息传递应用程序和所确定的至少一个合适的传输由消息传递架构内的通道、会话状态缓存、协议以及可插式存储连接。
38.如权利要求37所述的方法,其特征在于,所述通道是为发送和接收消息提供抽象的应用程序编程接口。
39.如权利要求38所述的方法,其特征在于,所述会话状态缓存包括发送缓存,并为消息标上唯一的单调递增消息序号。
40.如权利要求38所述的方法,其特征在于,所述会话状态缓存包括接收缓存,它保留消息直到消息被传送至应用程序为止。
41.如权利要求37所述的方法,其特征在于,所述一个或多个指定的端对端传送保证包括至少一次消息传送和会话存续时间,其中,在会话存续时间期间,协议在重试间隔之后把先前发送的消息的副本周期性地发送至对方端点,直到接收到确认为止。
42.如权利要求37所述的方法,其特征在于,所述消息传递架构至少提供会话或消息错误确定和处理的其中之一。
43.如权利要求42所述的方法,其特征在于,所述消息错误处理至少包括对操作代码的错误通知、对消息传递应用程序的错误通知、对一个或多个可插式错误处理器的错误通知以及对操作者的错误通知的其中之一。
44.如权利要求43所述的方法,其特征在于,可存活的错误包括破坏消息、丢失消息、重复消息、延迟消息、已记录的消息、传输失败、网络失败、进程失败、系统失败。
45.如权利要求42所述的方法,其特征在于,通知所述消息传递架构错误已修复并且重试错误的操作。
46.如权利要求37所述的方法,其特征在于,所述通道、会话状态缓存和协议的状态被维持在可插式存储中。
47.在对发送和接收操作进行抽象以通过一个或多个传输与对方端点进行消息交换的运行时刻消息传递架构中的一种计算机程序产品,包括携带计算机可读指令的一个或多个计算机可读媒质,所述指令通过选择所述一个或多个消息传输中的至少一个在运行时刻连接至消息传递应用程序,来实现改进消息传递应用程序的可用性和可伸缩性的方法,该方法包括以下步骤:
在运行时刻从所述一个或多个传输中确定至少一个合适的传输,消息传递应用程序不需要在开发时期指定所述至少一个合适的传输,以实现由消息传递应用程序所指定的一个或多个端对端传送保证,其中,所述一个或多个端对端传送保证至少包括下列之一:至少一次传送、至多一次传送、顺序传送和会话存续时间;以及
连接消息传递应用程序和所确定的至少一个合适的传输,以便在消息传递应用程序和对方端点之间进行消息交换。
48.如权利要求47所述的方法,还包括以下步骤:
实现一个或多个本地可靠消息特性,其中,所述一个或多个本地可靠消息特性至少包括下列之一:会话状态存储、消息存续时间和已办理消息缓存。
49.如权利要求35所述的计算机程序产品,其特征在于,所述会话状态存储被维持在可插式存储中,可插式存储至少包括端口监控进程存储、持久数据库存储和应用程序存储的其中之一。
50.如权利要求35所述的计算机程序产品,其特征在于,所述本地可靠消息特性还包括:缓存限额,其定义了将由消息传递架构缓存的最大消息数;发送超时,它在发送超时后解除对发送操作的阻塞;优先级选项,其中较高优先级消息在较低优先级消息之前被发送;以及可配置的有害消息特性,消息传送中止次数是可配置的,用于确认何时该消息有害。
51.如权利要求35所述的计算机程序产品,其特征在于,不论会话状态存储的持久性如何,所述已办理消息缓存的本地可靠消息特性都是可用的。
52.如权利要求47所述的计算机程序产品,其特征在于,所述消息传递应用程序和所确定的至少一个合适的传输由消息传递架构内的通道、会话状态缓存、协议和可插式存储连接。
53.如权利要求52所述的计算机程序产品,其特征在于,所述会话状态缓存从消息传递应用程序捕捉消息、将消息传送至消息传递应用程序并维持与发送和接收的消息有关的状态信息。
54.如权利要求53所述的计算机程序产品,其特征在于,所述状态信息至少包括会话标识符、一个或多个指定的传输保证以及对方端点地址的其中之一。
55.如权利要求53所述的计算机程序产品,其特征在于,所述状态信息至少包括发送序列号和确认状态信息的其中之一。
56.如权利要求53所述的计算机程序产品,其特征在于,所述状态信息至少包括可配置的存续时间发送、超时和信息储存位置的其中之一。
57.如权利要求52所述的计算机程序产品,其特征在于,所述协议执行端点分辨来识别对方端点。
58.如权利要求57所述的计算机程序产品,其特征在于,所述协议用中间层来起动端点分辨,用于将消息引导至应用程序场或应用程序场中的分区中的至少一个中的节点。
59.如权利要求52所述的计算机程序产品,其特征在于,所述一个或多个指定的端对端传送保证至少包括至少一次消息传送和会话存续时间的其中之一,其中,在消息存续时间内,协议在重试间隔之后把先前以发送的消息的副本周期性地发送至对方端点,直到接收到确认消息为止。
60.如权利要求52所述的计算机程序产品,其特征在于,所述通道、会话状态缓存和协议的状态被维持在可插式存储中。
61.对于对会话状态存储和发送及接收操作进行抽象以通过一个或多个消息传输与对方端点进行消息交换的消息传递架构而言,一种计算机程序产品包括携带计算机可读指令的一个或多个计算机可读媒质,所述指令通过选择所述一个或多个传输中的至少一个在运行时刻与消息传递应用程序连接,实现了改进消息传递应用程序的可用性和可伸缩性的方法,该方法包括以下动作:
从消息传递应用程序接收一个或多个指令,其指定会话状态存储,其中,所述会话状态存储被维持在可插式存储中,可插式存储至少包括端口监控进程存储、持久数据库存储和应用程序存储的其中之一;
从消息传递应用程序接收一个或多个指令,所述指令指定了一个或多个端对端传输保证,用于在运行时刻选择至少一个合适的消息传输,而消息传递应用程序不需要在开发时期指定所述至少一个合适的消息传输,其中,所述一个或多个端对端传送保证至少包括下列之一:至少一次消息传送、至多一次消息传送、顺序发送消息传送以及会话存续时间;
从所述一个或多个可用的消息传输中选择至少一个合适的消息传输,以实现在从消息传递应用程序接收到的指令中指定的一个或多个端对端消息传送保证;以及
在消息传递架构内,在消息传递应用程序和所选择的至少一个传输之间创建连接,用于在消息传递应用程序和对方端点之间进行消息交换。
62.如权利要求61所述的计算机程序产品,所述方法还包括接收一个或多个本地可靠消息特性的动作,所述一个或多个本地可靠消息特性至少包括下列之一:存续时间消息;已办理消息缓存;缓存限额,其定义了将由消息传递架构缓存的最大消息数;发送超时,它在发送超时后解除对发送操作的阻塞;优先级选项,使得较高优先级消息在较低优先级消息之前被发送;以及可配置的有害消息特性,消息传送中止次数是可配置的,用于确定何时该消息有害。
63.如权利要求61所述的计算机程序产品,其特征在于,所述创建的连接包括通道、会话状态缓存、协议和可插式存储。
64.如权利要求63所述的计算机程序产品,其特征在于,所述一个或多个指定的端对端传送保证包括至少一次消息传送和会话存续时间,其中,在会话存续时间内,协议在重试间隔之后把先前发送的消息的副本周期性地发送至对方端点,直到接收到确认消息为止。
65.如权利要求64所述的计算机程序产品,其特征在于,所述重试间隔由连续重试间隔之后的后退间隔来调整。
66.如权利要求61所述的计算机程序产品,所述方法还包括以下动作:调度消息序列中的至少一个消息至对方端点的传输。
67.如权利要求66所述的计算机程序产品,其特征在于,所述调度至少基于间歇连接、负载平衡、消息优先级和较低成本传输使用的其中之一。
68.如权利要求63所述的计算机程序产品,其特征在于,所述通道、会话状态缓存和协议的状态被维持在可插式存储中。
69.如权利要求61所述的计算机程序产品,其特征在于,所述的消息交换由多个消息交换模式所定义,所述多个消息交换模式至少包括单向消息传递、请求/响应消息传递和全双工消息传递的其中之一。
CNB2004100322482A 2003-03-27 2004-03-26 以对应用程序透明的方式改进消息传递系统的可用性和可伸缩性 Expired - Fee Related CN100553235C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/402,052 US7693952B2 (en) 2003-03-27 2003-03-27 Availability and scalability in a messaging system in a manner transparent to the application
US10/402,052 2003-03-27

Publications (2)

Publication Number Publication Date
CN1534947A true CN1534947A (zh) 2004-10-06
CN100553235C CN100553235C (zh) 2009-10-21

Family

ID=32825038

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100322482A Expired - Fee Related CN100553235C (zh) 2003-03-27 2004-03-26 以对应用程序透明的方式改进消息传递系统的可用性和可伸缩性

Country Status (18)

Country Link
US (2) US7693952B2 (zh)
EP (1) EP1462941B1 (zh)
JP (1) JP4515800B2 (zh)
KR (1) KR20040085045A (zh)
CN (1) CN100553235C (zh)
AU (1) AU2004200736A1 (zh)
BR (1) BRPI0400762A (zh)
CA (1) CA2462019A1 (zh)
CO (1) CO5560095A1 (zh)
IL (1) IL160573A (zh)
MX (1) MXPA04002727A (zh)
MY (1) MY144843A (zh)
NZ (1) NZ531383A (zh)
PL (1) PL366535A1 (zh)
RU (1) RU2345408C2 (zh)
SG (1) SG115637A1 (zh)
TW (1) TWI337482B (zh)
ZA (1) ZA200401580B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102314376A (zh) * 2010-07-09 2012-01-11 汤姆森特许公司 操作远程例程调用处理程序的方法和计算机系统
CN103019866A (zh) * 2012-10-24 2013-04-03 北京京东世纪贸易有限公司 基于消息队列的分布式方法和系统
CN104081391A (zh) * 2012-01-25 2014-10-01 株式会社日立制作所 使用文件克隆的单实例化方法和利用该方法的文件存储系统
CN106462460A (zh) * 2014-05-01 2017-02-22 微软技术许可有限责任公司 基于维度的负载平衡

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8312117B1 (en) * 2001-11-15 2012-11-13 Unisys Corporation Dialog recovery in a distributed computer system
US7159217B2 (en) * 2001-12-20 2007-01-02 Cadence Design Systems, Inc. Mechanism for managing parallel execution of processes in a distributed computing environment
US7299466B2 (en) * 2001-12-20 2007-11-20 Cadence Design Systems, Inc. Mechanism for managing execution environments for aggregated processes
US7093259B2 (en) 2001-12-20 2006-08-15 Cadence Design Systems, Inc. Hierarchically structured logging for computer work processing
US7117500B2 (en) 2001-12-20 2006-10-03 Cadence Design Systems, Inc. Mechanism for managing execution of interdependent aggregated processes
US7693952B2 (en) * 2003-03-27 2010-04-06 Microsoft Corporation Availability and scalability in a messaging system in a manner transparent to the application
US7676580B2 (en) 2003-03-27 2010-03-09 Microsoft Corporation Message delivery with configurable assurances and features between two endpoints
US7657599B2 (en) * 2003-05-29 2010-02-02 Mindshare Design, Inc. Systems and methods for automatically updating electronic mail access lists
US7562119B2 (en) * 2003-07-15 2009-07-14 Mindshare Design, Inc. Systems and methods for automatically updating electronic mail access lists
US7395314B2 (en) * 2003-10-28 2008-07-01 Mindshare Design, Inc. Systems and methods for governing the performance of high volume electronic mail delivery
US7660857B2 (en) * 2003-11-21 2010-02-09 Mindshare Design, Inc. Systems and methods for automatically updating electronic mail access lists
JP2005293370A (ja) * 2004-04-01 2005-10-20 Hitachi Ltd 記憶制御システム
US7483943B2 (en) * 2004-09-21 2009-01-27 Microsoft Corporation Reliable messaging using clocks with synchronized rates
US20070133520A1 (en) * 2005-12-12 2007-06-14 Microsoft Corporation Dynamically adapting peer groups
US7640299B2 (en) * 2004-09-30 2009-12-29 Microsoft Corporation Optimizing communication using scaleable peer groups
US7613703B2 (en) * 2004-09-30 2009-11-03 Microsoft Corporation Organizing resources into collections to facilitate more efficient and reliable resource access
US8549180B2 (en) 2004-10-22 2013-10-01 Microsoft Corporation Optimizing access to federation infrastructure-based resources
JP2008524878A (ja) * 2004-11-16 2008-07-10 セキュア64・ソフトウェア・コーポレイション キュー非同期通信アーキテクチャーインタフェース
US7730196B2 (en) * 2004-12-03 2010-06-01 Microsoft Corporation Efficient transfer of messages using reliable messaging protocols for web services
US8250131B1 (en) 2004-12-08 2012-08-21 Cadence Design Systems, Inc. Method and apparatus for managing a distributed computing environment
US7349384B2 (en) 2004-12-10 2008-03-25 Microsoft Corporation Reliable one-way messaging over request-response transport protocols
CA2621656A1 (en) * 2005-10-04 2007-04-12 Telefonaktiebolaget Lm Ericsson (Publ) Method for providing messaging using appropriate communication protocol
US20070150441A1 (en) * 2005-12-23 2007-06-28 Morris Robert P Methods, systems, and computer program products for associating policies with tuples using a pub/sub protocol
US7587450B2 (en) * 2006-02-01 2009-09-08 Swift Creek Systems, Llc HTTP publish/subscribe communication protocol
US20070294584A1 (en) * 2006-04-28 2007-12-20 Microsoft Corporation Detection and isolation of data items causing computer process crashes
US20080126475A1 (en) * 2006-11-29 2008-05-29 Morris Robert P Method And System For Providing Supplemental Information In A Presence Client-Based Service Message
US9330190B2 (en) 2006-12-11 2016-05-03 Swift Creek Systems, Llc Method and system for providing data handling information for use by a publish/subscribe client
US7971209B2 (en) * 2007-05-18 2011-06-28 Sap Ag Shortcut in reliable communication
US20090037588A1 (en) * 2007-07-31 2009-02-05 Morris Robert P Method And System For Providing Status Information Of At Least Two Related Principals
US8214847B2 (en) * 2007-11-16 2012-07-03 Microsoft Corporation Distributed messaging system with configurable assurances
US8200836B2 (en) 2007-11-16 2012-06-12 Microsoft Corporation Durable exactly once message delivery at scale
US8112450B2 (en) * 2008-01-31 2012-02-07 Microsoft Corporation Priority messaging and priority scheduling
KR101175689B1 (ko) * 2008-02-27 2012-08-23 노키아 코포레이션 다중-전송 구조에 대한 버퍼 제어
US7912975B2 (en) * 2008-03-03 2011-03-22 Alcatel Lucent System and method for application layer resource traffic control
FR2930392B1 (fr) * 2008-04-22 2022-01-28 Trustseed Procede et dispositif de securisation de transferts de donnees
US20090307374A1 (en) * 2008-06-05 2009-12-10 Morris Robert P Method And System For Providing A Subscription To A Tuple Based On A Schema Associated With The Tuple
US8370443B2 (en) * 2009-09-08 2013-02-05 Microsoft Corporation Reliable messaging using publish subscribe mechanism
US7958244B2 (en) * 2009-09-25 2011-06-07 International Business Machines Corporation Imposed policies for handling instant messages
US8407520B2 (en) * 2010-04-23 2013-03-26 Ebay Inc. System and method for definition, creation, management, transmission, and monitoring of errors in SOA environment
US8719625B2 (en) * 2010-07-22 2014-05-06 International Business Machines Corporation Method, apparatus and computer program for processing invalid data
US8520723B2 (en) 2010-12-09 2013-08-27 Qualcomm Incorporated Universal real-time interface for wireless modems
BR112014013267B1 (pt) * 2011-12-02 2021-12-14 Zte Corporation Método para formar um serviço fim a fim de rede privada virtual de camada, e dispositivo para formar um serviço fim a fim de rede privada virtual de camada
US9047182B2 (en) 2012-12-27 2015-06-02 Microsoft Technology Licensing, Llc Message service downtime
AU2014231331B2 (en) 2013-03-15 2017-07-13 Synaptive Medical Inc. System and method for reliable messaging between application sessions across volatile networking conditions
US9614794B2 (en) * 2013-07-11 2017-04-04 Apollo Education Group, Inc. Message consumer orchestration framework
JP6404911B2 (ja) 2013-09-20 2018-10-17 オラクル・インターナショナル・コーポレイション ネットワーク通信環境における仲介主体のための信頼できるメッセージングのための手法
RU2600538C2 (ru) * 2014-04-08 2016-10-20 Интел Корпорейшн Запуск приложения на основе интерфейса передачи сообщения (mpi) в гетерогенной среде
CN105472574A (zh) * 2014-06-13 2016-04-06 北京奇虎科技有限公司 后台程序发送消息的方法和装置
US10142273B2 (en) 2015-06-23 2018-11-27 International Business Machines Corporation Handling various scenarios where an email recipient is not available
CN105100216B (zh) * 2015-06-30 2018-09-18 北京奇虎科技有限公司 一种多业务的监控方法和装置
US9407585B1 (en) 2015-08-07 2016-08-02 Machine Zone, Inc. Scalable, real-time messaging system
US9590956B1 (en) 2015-12-18 2017-03-07 Wickr Inc. Decentralized authoritative messaging
US10728088B1 (en) * 2017-12-15 2020-07-28 Worldpay, Llc Systems and methods for real-time processing and transmitting of high-priority notifications
US10812355B2 (en) 2018-09-19 2020-10-20 International Business Machines Corporation Record compression for a message system
US10715469B2 (en) 2018-09-19 2020-07-14 International Business Machines Corporation Poisoned message detection system
US20210185638A1 (en) * 2019-12-17 2021-06-17 Microsoft Technology Licensing, Llc Preventing notification loss during temporary network disconnection

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2268374A (en) 1992-06-23 1994-01-05 Ibm Network addressing
US5786771A (en) 1993-02-12 1998-07-28 International Business Machines Corporation Selectable checking of message destinations in a switched parallel network
US5377350A (en) 1993-04-30 1994-12-27 International Business Machines Corporation System for cooperative communication between local object managers to provide verification for the performance of remote calls by object messages
US6522635B1 (en) * 1995-06-15 2003-02-18 Mobile Satellite Ventures, Lp Communication protocol for satellite data processing
US5826269A (en) 1995-06-21 1998-10-20 Microsoft Corporation Electronic mail interface for a network server
US6339794B2 (en) 1995-12-08 2002-01-15 Microsoft Corporation Wire protocol for a media server system
US5872930A (en) 1996-07-11 1999-02-16 Microsoft Corporation Load balancing between E-mail servers within a local area network
US5870556A (en) 1996-07-12 1999-02-09 Microsoft Corporation Monitoring a messaging link
US5819272A (en) 1996-07-12 1998-10-06 Microsoft Corporation Record tracking in database replication
US5789771A (en) * 1996-12-11 1998-08-04 National Science Council Of Republic Of China Camel-gate field-effect transistor with multiple modulation-doped channels
US7020880B2 (en) * 1997-01-08 2006-03-28 International Business Machines Corporation Modular application collaborator for providing inter-operability between applications and monitoring errors to trigger execution of required compensating actions to undo interrupted transaction
US7080385B1 (en) * 1997-08-18 2006-07-18 Tibco Software Inc. Certified message delivery and queuing in multipoint publish/subscribe communications
DE69836966T2 (de) * 1997-08-18 2007-11-08 Tibco Software Inc., , Palo Alto Zustellung und setzen in eine warteschlange von zertifizierten nachrichten in einem mehrpunkt-publikations/abonnement-kommunikationssystem
US6446206B1 (en) 1998-04-01 2002-09-03 Microsoft Corporation Method and system for access control of a message queue
US6205498B1 (en) 1998-04-01 2001-03-20 Microsoft Corporation Method and system for message transfer session management
US6256634B1 (en) 1998-06-30 2001-07-03 Microsoft Corporation Method and system for purging tombstones for deleted data items in a replicated database
US6594701B1 (en) 1998-08-04 2003-07-15 Microsoft Corporation Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data
US6442546B1 (en) * 1998-12-30 2002-08-27 At&T Corp. Messaging system with application-defined states
US7050432B1 (en) * 1999-03-30 2006-05-23 International Busines Machines Corporation Message logging for reliable multicasting across a routing network
US6230456B1 (en) * 1999-06-07 2001-05-15 Colonial Craft, Inc. Window insert fastener
US6356633B1 (en) * 1999-08-19 2002-03-12 Mci Worldcom, Inc. Electronic mail message processing and routing for call center response to same
US7039050B1 (en) * 2000-02-16 2006-05-02 Tibco Software Inc. Intra-process message switch
US6714793B1 (en) 2000-03-06 2004-03-30 America Online, Inc. Method and system for instant messaging across cellular networks and a public data network
JP4467220B2 (ja) 2000-03-17 2010-05-26 エイオーエル・エルエルシー 音声インスタント・メッセージング
WO2001093503A2 (en) 2000-05-31 2001-12-06 Snip, Llc Method and system for instant messaging
US6889244B1 (en) * 2000-10-31 2005-05-03 Hewlett-Packard Development Company, L.P. Method and apparatus for passing messages using a fault tolerant storage system
US20020177453A1 (en) 2000-11-15 2002-11-28 Ming-Feng Chen Mobile device server
US7634726B2 (en) * 2001-01-05 2009-12-15 International Business Machines Corporation Technique for automated e-business services
US20020178227A1 (en) * 2001-05-25 2002-11-28 International Business Machines Corporation Routing instant messages using configurable, pluggable delivery managers
US7254616B1 (en) * 2001-07-27 2007-08-07 Ciena Corporation Reliable communication mechanism with “at most once” delivery guarantee
US7631092B2 (en) * 2001-10-05 2009-12-08 Bea Systems, Inc. System and method for providing a pluggable message store
JP2003249919A (ja) * 2001-12-17 2003-09-05 Fujitsu Ltd 双方向通信方法
US7089317B2 (en) * 2002-03-21 2006-08-08 Sun Microsystems, Inc. Architecture for plugging messaging systems into an application server
US20040001476A1 (en) * 2002-06-24 2004-01-01 Nayeem Islam Mobile application environment
US20040010553A1 (en) * 2002-07-15 2004-01-15 International Business Machines Corporation Peer to peer location based services
US6745339B2 (en) * 2002-09-13 2004-06-01 Docomo Communications Laboratories Usa, Inc. Method for dynamically switching fault tolerance schemes
GB0225733D0 (en) * 2002-11-05 2002-12-11 Ibm Persistent messaging in a transaction processing environment
US7152180B2 (en) * 2002-12-06 2006-12-19 Ntt Docomo, Inc. Configurable reliable messaging system
US7284039B2 (en) * 2002-12-17 2007-10-16 International Business Machines Corporation Apparatus and method for flexible web service deployment
US7188155B2 (en) * 2002-12-17 2007-03-06 International Business Machines Corporation Apparatus and method for selecting a web service in response to a request from a client device
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7676580B2 (en) * 2003-03-27 2010-03-09 Microsoft Corporation Message delivery with configurable assurances and features between two endpoints
US7693952B2 (en) * 2003-03-27 2010-04-06 Microsoft Corporation Availability and scalability in a messaging system in a manner transparent to the application
US7185209B2 (en) * 2003-05-28 2007-02-27 Microsoft Corporation End-to-end reliable messaging with complete acknowledgement
US7680945B2 (en) * 2004-03-31 2010-03-16 Sap Ag Messaging protocol in enterprise applications
US20050289524A1 (en) * 2004-06-22 2005-12-29 Mcginnes Simon Systems and methods for software based on business concepts
US7584422B2 (en) * 2004-07-12 2009-09-01 Informatica Corporation System and method for data format transformation
US20060168132A1 (en) * 2004-10-29 2006-07-27 International Business Machines Corporation Business messaging standards to web services
US20060235733A1 (en) * 2005-04-13 2006-10-19 Marks Eric A System and method for providing integration of service-oriented architecture and Web services
US7676279B2 (en) * 2006-09-29 2010-03-09 Rockwell Automation Technologies, Inc. Services for industrial control systems
US8214847B2 (en) * 2007-11-16 2012-07-03 Microsoft Corporation Distributed messaging system with configurable assurances

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102314376A (zh) * 2010-07-09 2012-01-11 汤姆森特许公司 操作远程例程调用处理程序的方法和计算机系统
CN102314376B (zh) * 2010-07-09 2016-08-24 汤姆森特许公司 操作远程例程调用处理程序的方法和计算机系统
CN104081391A (zh) * 2012-01-25 2014-10-01 株式会社日立制作所 使用文件克隆的单实例化方法和利用该方法的文件存储系统
CN104081391B (zh) * 2012-01-25 2018-06-08 株式会社日立制作所 使用文件克隆的单实例化方法和利用该方法的文件存储系统
CN103019866A (zh) * 2012-10-24 2013-04-03 北京京东世纪贸易有限公司 基于消息队列的分布式方法和系统
CN106462460A (zh) * 2014-05-01 2017-02-22 微软技术许可有限责任公司 基于维度的负载平衡

Also Published As

Publication number Publication date
RU2004109133A (ru) 2005-10-10
BRPI0400762A (pt) 2005-01-11
US7693952B2 (en) 2010-04-06
EP1462941A3 (en) 2006-06-07
CN100553235C (zh) 2009-10-21
IL160573A0 (en) 2004-07-25
JP2004295896A (ja) 2004-10-21
JP4515800B2 (ja) 2010-08-04
CO5560095A1 (es) 2005-09-30
NZ531383A (en) 2005-12-23
EP1462941B1 (en) 2015-04-22
KR20040085045A (ko) 2004-10-07
CA2462019A1 (en) 2004-09-27
TW200423641A (en) 2004-11-01
MXPA04002727A (es) 2005-06-17
US20040205124A1 (en) 2004-10-14
SG115637A1 (en) 2005-10-28
ZA200401580B (en) 2004-11-24
EP1462941A2 (en) 2004-09-29
PL366535A1 (en) 2004-10-04
TWI337482B (en) 2011-02-11
US8135794B2 (en) 2012-03-13
IL160573A (en) 2009-06-15
MY144843A (en) 2011-11-30
RU2345408C2 (ru) 2009-01-27
AU2004200736A1 (en) 2004-10-14
US20100192025A1 (en) 2010-07-29

Similar Documents

Publication Publication Date Title
CN100553235C (zh) 以对应用程序透明的方式改进消息传递系统的可用性和可伸缩性
CN1534923B (zh) 通过提供单个编程模型简化应用开发的方法
US7529855B2 (en) Dynamic modification of fragmentation size cluster communication parameter in clustered computer system
US7530078B2 (en) Certified message delivery and queuing in multipoint publish/subscribe communications
CN110297801A (zh) 基于容错fpga的事务系统的正好一次事务语义
CN1783852A (zh) 使用web服务可靠消息通信协议的高效消息传输
JP3860966B2 (ja) マルチポイントパブリッシュ/サブスクライブ通信における証明付メッセージの配送およびキュー操作
US6912586B1 (en) Apparatus for journaling during software deployment and method therefor
US7143313B2 (en) Support interface module bug submitter
WO2024052981A1 (ja) 処理装置、処理方法およびプログラム
KR100310285B1 (ko) 실시간 객체지향 분산 플랫폼에서 고장감내 서비스를지원하는 그룹통신 방법
JP7022508B2 (ja) 通信装置、通信方法、及びプログラム
NO331943B1 (no) Tilgjengelighet og skalerbarhet i et meldingssystem pa en mate som er transparent for applikasjonen.
JP2002366457A (ja) 処理要求転送装置、その方法、そのプログラム及びそのプログラムが記録された記録媒体
JP2011198196A (ja) Snmpメッセージ送受信システム、リクエスト再送制御方法及びリクエスト再送制御プログラム

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: 20150421

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150421

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20091021

Termination date: 20200326