CN103827829B - 在中间件机器环境中提供和管理用于多节点应用的消息队列的系统及方法 - Google Patents
在中间件机器环境中提供和管理用于多节点应用的消息队列的系统及方法 Download PDFInfo
- Publication number
- CN103827829B CN103827829B CN201280047474.0A CN201280047474A CN103827829B CN 103827829 B CN103827829 B CN 103827829B CN 201280047474 A CN201280047474 A CN 201280047474A CN 103827829 B CN103827829 B CN 103827829B
- Authority
- CN
- China
- Prior art keywords
- message
- data structure
- shared memory
- queue
- control data
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
一种中间件机器环境,可以为多节点应用提供消息队列。事务中间件机器环境包括消息接收器上的消息控制数据结构以及与该消息接收器关联的共享存储器中的堆数据结构。消息发送器操作成把消息直接写到堆数据结构中,并且在消息控制数据结构中维护与消息关联的元数据。此外,中间件机器环境包括消息接收器上的共享存储器,其中该共享存储器维护用于中间件机器环境的一个或多个消息队列。此外,中间件机器环境包括,当客户请求设置至少一个消息队列以便支持发送和接收消息时,能够在共享存储器中创建至少一个消息队列的守护进程。
Description
版权声明
本专利文档公开内容的一部分包含受版权保护的素材。版权拥有者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现那样进行的传真复制,但是除此之外在任何情况下都保留所有版权。
技术领域
本发明一般而言涉及诸如中间件的计算机系统和软件,而且更具体地说涉及支持事务中间件机器环境。
背景技术
事务中间件系统,或者说面向事务的中间件,包括可以处理一个机构中各种事务的企业应用服务器。利用诸如高性能网络和多处理器计算机的新技术的发展,需要进一步改善事务中间件的性能。这些是本发明实施例要解决的一般性领域。
发明内容
本文所描述的是用于在中间件机器环境中提供消息队列的系统及方法。事务中间件机器环境包括消息接收器上的消息控制数据结构以及与该消息接收器关联的共享存储器中的堆数据结构。消息发送器操作成把消息直接写到堆数据结构中,并且在消息控制数据结构中维护与消息关联的元数据。此外,中间件机器环境包括消息接收器上的共享存储器,其中该共享存储器维护用于中间件机器环境的一个或多个消息队列。此外,中间件机器环境包括,当客户请求设置至少一个消息队列以便支持发送和接收消息时,能够在共享存储器中创建至少一个消息队列的守护进程。
附图说明
图1根据本发明一种实施例示出了在中间件机器环境中提供用于多节点应用的消息队列的说明。
图2根据本发明一种实施例说明了用于在中间件机器环境中支持准确的负载平衡的示例性流程图。
图3根据本发明一种实施例示出了在中间件机器环境中提供用于多节点应用的远程存储环的说明。
图4根据本发明一种实施例示出了在中间件机器环境中可以被多个消息发送器同时访问的消息队列的说明。
图5根据本发明一种实施例示出了在中间件机器环境中对多节点应用利用系统V消息队列的说明。
图6根据本发明一种实施例示出了在中间件机器环境中用于多节点应用的远程直接存储器访问(RDMA)消息队列的说明。
图7根据本发明一种实施例示出了可以在中间件机器环境中创建并管理消息队列的守护进程的说明。
图8根据本发明一种实施例说明了用于在事务中间件机器环境中支持准确的负载平衡的示例性流程图。
图9根据本发明一种实施例示出了可以用于在中间件机器环境中保护消息队列的安全模型的说明。
图10根据本发明一种实施例说明了用于在中间件机器环境中保护消息队列的示例性流程图。
具体实施例
本文所描述的是用于支持事务中间件系统的系统及方法,其中该系统及方法可以利用具有多个处理器的快速机器以及事务中间件机器环境中的高性能网络连接。该系统可以利用基于环缓冲区(环形队列)的数据结构提供用于多节点应用的消息队列。该系统包括具有读取器(reader)上的第一环结构和写入器(writer)上的第二环结构的远程环结构,其中第一环结构和第二环结构中每一个都具有头指针和尾指针。当写入器操作成把消息写到远程环时,写入器可以对第一环结构和第二环结构都更新头指针,以及远程环结构中的数据。当读取器操作成从远程环读消息时,读取器可以对第一环结构和第二环结构都更新尾指针。此外,消息可以存储在堆数据结构中,而与消息关联的元数据可以存储在远程环结构中。
根据本发明的一种实施例,系统包括高性能硬件,例如64位处理器技术,高性能大型存储器以及冗余InfiniBand和以太网联网连同应用服务器或中间件环境,诸如WebLogic套件,的组合,来提供完整的Java EE应用服务器联合体,该联合体包括可以快速供应并且可以按需缩放的大规模并行存储器内网格。根据一种实施例,该系统可以部署成作为提供应用服务器网格、存储区域网络和InfiniBand(IB)网络的完全、半或四分之一机架,或者其它配置。中间件机器软件可以提供应用服务器、中间件和其它功能性,诸如像WebLogic服务器、JRockit或者Hotspot JVM、Oracle Linux或Solaris和Oracle VM。根据一种实施例,该系统可以包括经IB网络彼此通信的多个计算节点、IB交换机网关,及存储节点或单元。当实现为机架配置时,机架未使用的部分可以空着或者被填充物占用。
根据本发明的一种实施例,在此被称为“Sun Oracle Exalogic”或者“Exalogic”,该系统是用于托管中间件或应用服务器软件,诸如Oracle中间件SW套件或Weblogic,的一种易于部署的解决方案。如本文所描述的,根据一种实施例,该系统是“盒子内的网格”,包括一个或多个服务器、存储单元、用于存储联网的一个IB构架,以及托管中间件应用所需的所有其它组件。通过利用例如真正应用集群和Exalogic开放存储充分利用大规模并行网格体系架构,可以为所有类型的中间件应用交付显著的性能。该系统利用线性I/O可缩放性交付提高的性能、使用和管理都很简单,并且交付任务关键的可用性和可靠性。
根据本发明的一种实施例,Tuxedo是启用高性能、分布式商业应用的构造、执行和管理的一组软件模块,并且已经被多种多层应用开发工具用作事务中间件。Tuxedo是可以用于在分布式计算环境中管理分布式事务处理的中间件平台。它是在交付不受限制的可缩放性与基于标准的互操作性的同时用于解锁企业传统应用并把它们扩展到面向服务的体系架构的成熟平台。
根据本发明的一种实施例,中间件机器环境可以提供用于多节点应用的消息队列。事务中间件机器环境包括消息接收器上的消息控制数据结构以及与消息接收器关联的共享存储器中的堆数据结构。消息发送器操作成把消息直接写到堆数据结构,并且在消息控制数据结构中维持与该消息关联的元数据。此外,消息控制数据结构可以是具有头指针和尾指针的环结构。此外,消息接收器驻留在与多个客户端连接的服务器上,所述客户端中每一个都保持消息控制数据结构的私有拷贝。而且,消息接收器可以支持对与该消息接收器关联的消息控制数据结构的并发访问。
根据本发明的另一种实施例,中间件机器环境可以管理用于多节点应用的消息队列。中间件机器环境包括消息接收器上的共享存储器,其中该共享存储器维护用于中间件机器环境的一个或多个消息队列。中间件机器环境还包括,当客户端请求设置至少一个消息队列以便支持发送和接收消息时,能够在共享存储器中创建至少一个消息队列的守护进程。此外,客户端上的不同进程操作成使用至少一个代理(proxy)来与消息服务器通信。此外,中间件机器环境可以利用由守护进程创建的安全令牌保护用于多节点应用的消息队列。
用于多节点应用的消息队列
根据本发明的一种实施例,消息传送软件,诸如消息传送队列,可以利用高性能网络,诸如利用远程直接存储器访问(RDMA)协议的IB网络。RDMA协议允许消息发送器绕过OS内核并直接访问存储器,而不需要唤醒远程机器上的进程。
图1根据本发明一种实施例示出了在中间件机器环境中提供用于多节点应用的消息队列的说明。如图1中所示,中间件机器环境100可以包括多个服务器机器,诸如机器A101和机器B102。本地机器,例如机器A101,上的消息发送器103可以把消息107发送到远端机器,例如机器B102,上的消息接收器104。远端机器B102上的消息接收器104可以使用包括消息队列或消息控制数据结构108以及堆数据结构110的共享存储器106。
根据本发明的一种实施例,消息队列可以只包含与消息关联的元数据信息,而堆数据结构包含物理消息。因而,具有可变尺寸的消息可以容易地容纳并存储在共享存储器中。如图1中所示,消息发送器103操作成把消息直接写到堆数据结构110中,并且在消息控制数据结构108中维护与该消息关联的元数据。
而且,如图1中所示,消息发送器103包括本地机器,机器A101,上的消息控制数据结构105。消息控制数据结构105可以是消息队列108用于消息发送器103的拷贝。本地机器A101上的消息发送器还可以在本地机器A101上的消息控制数据结构105中维护与消息关联的元数据。
根据本发明的一种实施例,本地机器A101上的消息发送器可以直接把消息写到远端机器B102上共享存储器106中的堆数据结构110中。如图1中所示,利用消息接收器104提供的寻址信息,消息发送器103可以绕过远端机器B102上的OS内核。此外,本地机器A101上的消息发送器103可以经本地机器A101上的控制结构更新消息的状态信息,诸如远端机器B102中队列中的输入序列号。
此外,本地机器A101上的消息发送者103可以向消息接收器104发送消息,而不考虑消息的大小。因此,这种消息传送机制会是成本有效的、高效的,并且对于大量的数据需要更少的开销。
此外,根据预先配置的过程,消息发送器103可以唤醒与消息接收器104关联的远端机器B102上的进程112。例如,当交付了可以被进程处理的服务请求消息时,消息发送器可以唤醒该进程。在另一个例子中,当队列满时,消息发送器可以唤醒远端机器B102上的守护进程。
根据本发明的一种实施例,在消息接收器上的进程,例如进程112,睡眠之前,该进程通知客户端一侧的消息控制结构105,和/或向消息控制结构105提供关于如何唤醒它自己的过程。然后,接收器一侧的进程可以等待消息的交付。例如,期望该消息的进程在被消息发送器唤醒之前可以一直处于睡眠状态。
而且,如图1中所示,在消息接收器104消费消息之后,消息接收器可以从队列中取出该消息,在这种情况下,消息接收器可以通过执行RDMA写操作更新消息队列108和发送器一侧的控制结构105。这种RDMA写操作可以不干扰远端机器B102上的客户端的方式执行。
根据本发明的一种实施例,为了在中间件机器环境中的两个服务器之间支持双向通信,中间件机器上的每个服务器都可以具有接收器和发送器。因而,这两个服务器之间的通信可以由不同机器上的不同消息发送器利用诸如RDMA写操作的RDMA协议来执行。
图2根据本发明一种实施例说明了用于在中间件机器环境中提供用于多节点应用的消息队列的示例性流程图。如图2中所示,在步骤201,系统可以在消息接收器上提供第一消息控制数据结构。在步骤202,系统可以关联共享存储器中的堆数据结构与消息接收器。然后,在203,系统允许消息发生器把消息直接写到堆数据结构,并且在第一消息控制数据结构中维护与消息关联的元数据。
远端存储环
根据本发明的一种实施例,基于环缓冲区(环形队列)的数据结构可以是这种系统的骨干。在简化的情况下,这种环结构可以作为先进先出(FIFO)队列工作。
图3根据本发明一种实施例示出了在中间件机器环境中提供用于多节点应用的远程存储环的说明。如图3中所示,消息发送器301和消息接收器302都可以使用环结构作为消息控制数据结构,并且每个环结构都可以具有头指针和尾指针。当消息发送器301操作成把消息写到消息读取器302上的消息队列,诸如共享存储器中的堆数据结构,中时,消息发送器301可以对两个环结构都更新头指针303和304。另一方面,当消息接收器302,或者说读取器,操作成从共享存储器中的堆数据结构读消息时,读取器对两个环结构都更新尾指针305和306。
根据本发明的一种实施例,环结构中的头指针指向最近添加到消息队列的消息,而环结构中的尾指针指向消息队列中最旧的消息。活动的消息存储在头指针和尾指针之间。消息发送器,或者说写入器,可以查看队列的头指针和尾指针之间的空闲空间(图3中环结构的白色区段)并且在其写新消息的时候向前移动头指针。另一方面,消息读取器可以看队列的头指针和尾指针之间(图3中环结构的阴影区段),以得到新消息并且在读取器读取消息时向前移动尾指针。这确保头指针和尾指针都只在单个方向移动。
根据本发明的一种实施例,可以对每个环操作维持以下约束:只有读取器更新尾指针;只有写入器更新头指针;环结构中从尾指针到头指针的区段包含有效的未读消息,而且环结构中从头指针到尾指针的区段总是空闲的。因而,即使在写入器向环写的时候,读取器也可以读消息,并且在读取器和写入器之间不需要同步。
并发的读取器和写入器
根据本发明的一种实施例,中间件机器环境中不同客户端上的多个消息发送器可以并发地访问中间件机器环境中服务器机器上的消息队列。
图4根据本发明一种实施例示出了可以在中间件机器环境中被多个消息发送器同时访问的消息队列的说明。如图4中所示,服务器401可以使用消息队列403并发地处理来自多个客户端,例如客户端A-D411-414,的服务请求。消息队列403可以在服务器机器上的共享存储器402中维护。每个客户端可以维护单独的消息队列421-424,这些队列可以是消息队列403的私有拷贝。此外,消息队列403的不同私有拷贝(即,消息队列421-424)可以,例如周期性地,与消息队列403同步,以确保每个消息队列421-424都被及时更新。
根据本发明的一种实施例,当队列,或者队列中特定的条目,当前正被客户端更新时,锁可以在消息队列上激活。由于队列是在服务器机器上的共享存储器中,因此每个其它客户端都可以注意到队列被锁定并且可以阻止写到与队列中该特定条目关联的对应存储器部分。此外,消息的发送可以通过在发送侧执行RDMA写操作来实现。由此,不需要为了保证在共享存储器中在写和访问队列及其关联的堆数据结构之间没有冲突而在接收侧实现用于锁的锁存器或串行化机制。
根据本发明的一种实施例,客户端可以迅速获得(race to get)对队列的访问。一旦客户端获得了关于队列或者队列中特定条目的锁,其它客户端就可以等待该锁的释放,例如,利用在单节点环境中由OS提供的旗语机制或者利用多节点环境中的RDMA原子与无锁存器机制。
系统V消息队列
根据本发明的一种实施例,分布式事务系统可以使用允许客户端向可用的服务器提交任务的服务器-客户端模型。当任务完成时,可以为客户端提供结果。任务的提交及其完成可以利用消息队列来传送。系统V消息队列提供了在分布式事务环境,诸如OracleTuxedo环境,中单个机器上处理任务提交和完成的有效途径。此外,系统V消息队列可以扩展成用于在多个机器之间共享任务。
图5根据本发明一种实施例示出了在中间件机器环境中为多节点应用利用系统V消息队列的说明。如图5中所示,阴影队列创建模型可以在中间件机器环境500中应用到系统V消息队列之上。当消息队列Q511在节点A501上创建时,那个节点上的代理器(broker),代理器A504,可以得到消息队列Q511存在的通知。然后,代理器A504可以告诉其它节点502-503上的类似代理器,并且可以使它们在集群中的每个节点上创建具有相同名字–‘Q’–的队列。
根据本发明的一种实施例,节点B502上的进程507可以写到本地消息队列Q512。由于节点B不是最初创建消息队列Q511的节点,因此节点B上的代理器进程可以从消息队列512读消息并且利用TCP连接经网络把该消息发送到节点A上的代理器A504。然后,代理器A504可以把该消息写到节点A上的消息队列Q511。以这种途径,任何节点上的进程都可以写到从任何节点创建的队列,而不需要真正知道该队列是本地的还是远端的。此外,节点A上的代理器A504可以持续地监视所有阴影队列并且把写到任意阴影队列的消息传播到原始队列在其中创建的节点A中。
存在与以上编程模型关联的限制,例如:1)从远端节点写到队列的消息可能需要若干个(例如,5个)存储器拷贝以到达目的地队列。因而,这种模型给CPU总线造成很大压力;2)当存在大量队列时,整个环境依赖于代理器的吞吐量,这会变成瓶颈;及3)这种模型没有利用可以缩放消息传输的可用RDMA网络。
RDMA消息队列
根据本发明的一种实施例,事务中间件系统,诸如Tuxedo系统,可以利用具有多个处理器的快速机器,诸如Exalogic中间件机器,以及高性能网络连接。
该系统可以为事务中间件系统,例如Oracle Tuxedo,提供利用可用的具有RDMA能力的IB网络的能力,其中IB网络具有Exalogic中间件机器。RDMA可以把大部分与消息传输关联的CPU任务卸载到主机通道适配器(HCA)和/或网络接口卡(NIC)。以类似于Exalogic机器的方式,该系统可以帮助Tuxedo缩放其在具有RDMA能力的系统上的事务处理能力。该系统可以给现有的消息传送体系架构实现添加RDMA能力,使得用户可以利用RDMA经IB网络运行消息队列。
图6根据本发明一种实施例示出了在中间件机器环境中用于多节点应用的RDMA消息队列的说明。如图6中所示,双节点消息队列可以使用远端环结构来表示消息队列。该远端环结构包括两个正常的环结构:一个环结构608在读取器侧保持,而另一个环结构606在写入器侧保持。例如,利用RDMA协议620,本地机器,机器A601,上的消息发送器603可以把消息发送到远端机器,机器B602,上的消息接收器604。
根据本发明的一种实施例,消息接收器可以首先在远端机器中的共享存储器中创建队列并且通知网络接口卡该队列在共享存储器中的地址。消息队列可以利用包括头指针和尾指针的环缓冲区数据结构实现。此外,消息接收器可以在共享存储器中实现用于包含进入的消息的堆数据结构。然后,消息接收器可以通知消息发送器共享存储器中消息队列的创建以及堆数据结构的地址信息。
此外,当写入器把新的消息写到消息队列时,系统对两个环结构都更新环数据和头指针。如果读取器位于远端节点上,则系统可以使用RDMA来更新读取器侧结构。同样,读取器可以在读取器读消息的时候保持两个环都被更新。
根据本发明的一种实施例,消息不直接存储在环结构中。只有关于实际消息在哪里可以被检索到的元数据保存在环结构中。消息存储在读取器节点处所保存的堆数据结构610中。实际的消息可以利用RDMA写操作620从写入器进程传输到读取器节点上分配的存储器。远端堆610实现可以支持可变尺寸的消息。在这种远端堆610中,分配和释放操作在写入器节点上进行,但是实际的堆存储器在读取器节点上保存。在一个例子中,堆存储器610在读取器节点上,而整个堆元数据存储在写入器节点上。由此,有可能从写入器一侧进行堆分配,而不需要任何网络通信。此外,堆管理可以与时隙分配互斥/步进(slot allocationmutex/step)分离,以进一步最小化争用/简化远端队列恢复。
以下列表1包含在队列被创建时说明队列写和读操作的伪码,不允许消息优先级并且借助锁的帮助:
列表1
根据本发明的一种实施例,整个队列操作可以通过不同的客户端进程以用户模式发生。进程会在其更新共享环结构或堆元数据的时候,例如当其执行get_next_slot/分配环时隙时,异常退出。恢复机制可以用于检测进程死亡并且使元数据成为一致状态,使得其它进程仍然可以对同一队列进行操作。
根据本发明的一种实施例,可以提供唤醒机制。以上列表1中的伪码概述了在队列为单个优先级创建的情况下系统可以执行的步骤。系统还允许每个消息具有优先级并且基于优先级进行检索。有时候客户端可能请求具有某个特定优先级的消息–小于‘n’或等于‘n’或不是‘n’等的优先级。如果能满足这个请求的消息在这个时候不在队列中,则客户端进程可以被置成睡眠模式,并且在来自任一节点的进程写可以满足该请求的消息时被唤醒。可以基于RDMA实现一种机制,以唤醒等待具体请求的进程。
不同的客户端进程可以对同一队列读和/或写。在这种场景下,队列可以在共享存储器(或者共享储存器)上创建。在大部分基于共享存储器的应用中,更新共享的数据可能需要采取互斥。可以实现基于环结构及原子比较和交换(CAS)指令的一种方法,以避免频繁的读和写路径中的锁。
根据本发明的一种实施例,RDMA对消息传输的使用会降低存储器总线的利用。这把CPU从整个消息传输中释放出来,使得CPU可以在消息被传输的同时做其它任务。此外,系统变得更加可伸缩,消除了瓶颈,诸如用于系统V消息队列的代理器。因而,RDMA的使用就CPU使用、消息传输吞吐量和消息传输等待时间而言提供了实质性的好处。
根据本发明的一种实施例,利用RDMA进行节点间的消息传输,系统可以利用消息队列。该系统可以使用远端环结构同时从不同的机器进行消息读和写。系统可以利用远端堆分配处理可变尺寸的消息。恢复模型可以用于在本地节点上或远端节点上异常进程退出的情况下恢复队列。利用设计好的机制对共享数据进行本地或RDMA操作,队列在共享存储器上创建。系统可以使用基于RDMA的唤醒机制用于等待消息的远端进程,并且并发的读取器和写入器被允许利用来自用户模式进程的无锁同步对同一队列进行操作。
根据本发明的一种实施例,通过充分利用现代网络接口卡中可用的RDMA设施,系统可以提供给不同节点之间的操作排队的接口。由该接口提供的编程接口可以类似于系统V API的编程接口。
消息队列的创建与管理
根据本发明的一种实施例,中间件机器环境中服务器节点上的守护进程可以用于创建和管理共享存储器中的消息队列。
图7根据本发明一种实施例示出了可以在中间件机器环境中创建并管理消息队列的守护进程的说明。如图7中所示,中间件机器环境可以包括服务器节点701及若干个客户端节点702和703。服务器节点可以包括用于从不同的客户端接收消息的共享存储器704,其中该共享存储器维护一个或多个消息队列711和712。
根据本发明的一种实施例,服务器节点701可以包括守护进程706,当各个客户端请求服务器设置用于发送和接收消息的消息队列时,该守护进程706负责在服务器上的共享存储器中创建一个或多个消息队列。例如,当客户端B703启动与服务器701的连接时,服务器上的守护进程706可以经消息控制结构722动态地创建用于与客户端B703通信的队列B712。
根据本发明的一种实施例,服务器和多个客户端之间的这种通信方案可以利用代理进一步扩展。例如,客户端A702上的队列/控制结构A721可以利用一个或多个代理,例如代理I-III723-725,来扩展。利用这些代理,与客户端A上不同代理关联的进程可以使用队列/控制结构A来与服务器通信。
因而,可以在中间件机器中获得大的伸缩能力,用于利用RDMA协议支持不同服务器与客户端之间的通信,因为从客户端A702上的进程启动的消息可以通过允许该进程把消息直接写到服务器701上的堆数据结构705而发送到服务器701,无需服务器的干涉。
根据本发明的一种实施例,服务器701上的守护进程706还可以创建和储备本地消息队列,例如队列C708,用于本地消息传送目的。在一个例子中,本地服务器进程可以利用本地消息队列彼此通信,并且系统V IPC协议可以代替RDMA协议来使用,因为,当其在本地使用时,IPC协议比RDMA协议更快。
如图7中所示,除远端消息队列,诸如队列A711和队列B712,之外,本地服务器进程707还可以从本地消息队列C708接收消息。本地服务器进程707可以处理来自不同消息队列的消息,而不需要解决(address)本地消息队列和远端消息队列之间的不同。
根据本发明的一种实施例,客户端可以确定客户端上的队列或控制结构是可以在共享存储器中还是私有存储器中创建。如果客户端选择在与特定进程关联的客户端机器的私有存储器中创建队列或控制结构,则系统可以阻止该客户端机器和远端机器上的其它进程访问该客户端上的控制结构。因为有些消息会包含诸如定制财务信息的敏感信息,所以这会是有益的。
根据本发明的一种实施例,中断可以在服务器进程或者甚至服务器中的守护进程上发生。客户端可以继续在服务器机器上的共享存储器中执行RDMA写操作,而不需要等待服务器进程或守护进程的恢复。这使得用于系统的灾难恢复健壮并且直截了当。此外,客户端可以在队列满的时候停止写到服务器机器上的共享存储器中。
图8根据本发明一种实施例说明了用于在事务中间件机器环境中创建和管理消息队列的示例性流程图。如图8中所示,在步骤801,服务器可以在消息接收器上提供共享存储器,其中该共享存储器在中间件机器环境中维护一个或多个消息队列。然后,在步骤802,客户端请求在服务器上设置至少一个消息队列,以支持发送和接收消息。最后,在步骤803,当服务器接收到客户端请求时,服务器上的守护进程可以动态地在共享存储器中创建至少一个消息队列。
用于保护消息队列的安全模型
根据本发明的一种实施例,安全模型可以用于在中间件机器环境中保护消息队列。
图9根据本发明一种实施例示出了可以用于在中间件机器环境中保护消息队列的安全模型的说明。如图9中所示,消息接收器902可以配置为与消息发送器901通信。与消息接收器902关联的服务器节点上的守护进程910可以在该守护进程第一次在服务器机器上的共享存储器904中创建用于与消息发送器901通信的消息队列906时创建密钥或安全令牌914。
根据本发明的一种实施例,守护进程910还可以向IB网络登记密钥或安全令牌914,然后经安全网络920把安全令牌914发送到客户端节点上的消息发送器901。如图9中所示,消息发送器901还可以与守护进程905关联。在消息发送器901上的守护进程905和消息接收器902上的守护进程910之间可以存在独立的通信链路,例如安全网络920中的专用进程。
根据本发明的一种实施例,在消息发送器901接收到安全令牌914之后,消息发送器901可以直接访问接收器机器中的共享存储器904。如图9中所示,客户端节点上的消息发送器901可以使用安全令牌914来执行RDMA写操作921,用于把消息直接写到接收器一侧共享存储器904中的堆数据结构908中。
图10根据本发明一种实施例说明了用于在中间件机器环境中保护消息队列的示例性流程图。如图10中所示,在步骤1001,当守护进程第一次在服务器节点上的共享存储器中创建用于与客户端节点通信的消息队列时,消息接收器上的守护进程可以在服务器节点上创建安全令牌。然后,在步骤1002,消息接收器上的守护进程可以经安全网络把所创建的安全令牌从服务器节点发送到客户端节点。最后,在步骤1003,在客户端侧接收到安全令牌之后,消息发送器可以直接把消息写到共享存储器中的消息队列中。
本发明可以利用一种或多种传统的通用或专用数字计算机、计算设备、机器或微处理器方便地实现,包括一个或多个处理器、根据本公开内容教义编程的存储器和/或计算机可读存储介质。如对软件域的技术人员来说将很显然的,适当的软件编码可以很容易地被熟练的程序员基于本公开内容的教义来准备。
在有些实施例中,本发明包括计算机程序产品,这是其上/其中存储了可以用于编程计算机以便执行本发明任何过程的指令的一种或多种存储介质或计算机可读介质。存储介质可以包括,但不限于,任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型硬盘及磁光盘,ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存存储器设备、磁或光卡、纳米系统(包括分子存储器IC),或者适于存储指令和/或数据的任何类型的介质或设备。
本发明以上描述的提供是为了说明和描述。它不是穷尽性的或者要把本发明限定到所公开的精确形式。许多修改和变化将对本域技术人员显而易见。实施例的选择与描述是为了最好地解释本发明的原理及其实践应用,由此使本域其他技术人员能够理解本发明具有适于预期特定用途的各种修改的各种实施例。本发明的范围要由以下权利要求及其等价物来定义。
Claims (36)
1.一种用于在中间件机器环境中提供消息队列的系统,包括:
一个或多个微处理器;
在中间件机器环境中的第一节点上的消息接收器上的第一消息控制数据结构;及
与消息接收器关联的共享存储器中的堆数据结构,其中,运行在一个或多个微处理器上的在中间件机器环境中的第二节点上的消息发送器在共享存储器上使用直接存储器存取协议操作来分配堆数据结构的一部分以用于把消息直接写到堆数据结构中,及在第一消息控制数据结构中维护到与消息关联的元数据的第一指针;以及
其中,消息发送器被配置为在能够被第一节点上的进程处理的服务请求消息已经被交付时唤醒所述进程。
2.如权利要求1所述的系统,还包括消息发送器上的第二消息控制数据结构,其中消息发送器操作成在第二消息控制数据结构中维护到与消息关联的元数据的第二指针。
3.如权利要求2所述的系统,其中第一消息控制数据结构是第一环结构。
4.如权利要求3所述的系统,其中第二消息控制数据结构是第二环结构。
5.如权利要求4所述的系统,其中第一环结构和第二环结构中每一个都具有头指针和尾指针。
6.如权利要求5所述的系统,其中,
当消息发送器操作成把消息写到共享存储器中的堆数据结构时,消息发送器对第一环结构和第二环结构都更新头指针,及
当消息接收器操作成从共享存储器中的堆数据结构读出消息时,消息接收器对第一环结构和第二环结构都更新尾指针。
7.如权利要求1所述的系统,其中第一节点在与多个客户端连接的服务器上,每个所述客户端保持在共享存储器中维护的第一消息控制数据结构的私有拷贝。
8.如权利要求7所述的系统,其中,当第一消息控制数据结构中的条目当前被客户端更新时,锁在第一消息控制数据结构上被激活。
9.如权利要求8所述的系统,其中每个其它客户端能够注意到第一消息控制数据结构被锁定并且被阻止访问与第一消息控制数据结构中的该条目关联的共享存储器的对应部分。
10.如权利要求9所述的系统,其中另一客户端被允许访问与消息队列中的该条目关联的共享存储器的另一部分。
11.一种用于在中间件机器环境中提供消息队列的方法,包括:
在中间件机器环境中的第一节点上的消息接收器上提供第一消息控制数据结构;
关联共享存储器中的堆数据结构与消息接收器;
允许在一个或多个微处理器上运行的在中间件机器环境中的第二节点上的消息发送器在共享存储器上使用直接存储器存取协议来分配堆数据结构的一部分以用于把消息直接写到堆数据结构中,及在第一消息控制数据结构中维护到与消息关联的元数据的第一指针;以及
在能够被第一节点上的进程处理的服务请求消息已经被交付时经由所述消息发送器唤醒所述进程。
12.如权利要求11所述的方法,还包括关联第二消息控制数据结构与消息发送器,其中消息发送器操作成在第二消息控制数据结构中维护到与消息关联的元数据的第二指针。
13.如权利要求12所述的方法,还包括允许第一消息控制数据结构是第一环结构。
14.如权利要求13所述的方法,还包括允许第二消息控制数据结构是第二环结构。
15.如权利要求14所述的方法,还包括允许第一环结构和第二环结构中的每一个都具有头指针和尾指针。
16.如权利要求15所述的方法,还包括:
当消息发送器操作成把消息写到共享存储器中的堆数据结构时,允许消息发送器对第一环结构和第二环结构都更新头指针,及
当消息接收器操作成从共享存储器中的堆数据结构读出消息时,允许消息接收器对第一环结构和第二环结构都更新尾指针。
17.如权利要求11所述的方法,还包括允许第一节点驻留在与多个客户端连接的服务器上,每个所述客户端保持在共享存储器中维护的第一消息控制数据结构的私有拷贝。
18.如权利要求17所述的方法,还包括,当第一消息控制数据结构中的条目当前被客户端更新时,在第一消息控制数据结构上激活锁。
19.如权利要求18所述的方法,还包括允许每个其它客户端能够注意到第一消息控制数据结构被锁定并且被阻止访问与第一消息控制数据结构中的该条目关联的共享存储器的对应部分。
20.如权利要求19所述的方法,还包括允许另一客户端访问与消息队列中的该条目关联的共享存储器的另一部分。
21.一种用于在中间件机器环境中管理消息队列的系统,包括:
一个或多个微处理器;
中间件机器环境中的服务器节点上的消息接收器以及与之关联的守护进程,其中消息接收器包括共享存储器,其中该共享存储器在其中维护一个或多个消息队列;及
其中,运行在一个或多个微处理器上的守护进程操作为
响应于来自客户端节点上的消息发送器的请求,在共享存储器中创建用于与消息发送器通信的消息队列,
创建与消息发送器相关联的安全令牌并将安全令牌发送给消息发送器,
响应于消息发送器接收到安全令牌,从消息发送器接受在共享存储器上的远程直接存储器存取RDMA操作以用于将消息直接写入共享存储器中,以及
经由消息队列来接收消息的元数据信息。
22.如权利要求21所述的系统,其中消息发送器上的不同进程操作成使用至少一个代理来与消息接收器通信。
23.如权利要求21所述的系统,其中守护进程还能够经第一安全网络把安全令牌从服务器节点发送到客户端节点。
24.如权利要求21所述的系统,其中守护进程被配置为创建并保留用于本地消息传送的本地消息队列。
25.如权利要求24所述的系统,其中本地消息队列在共享存储器的外面被创建和保留。
26.如权利要求24所述的系统,其中本地服务器进程操作成既从本地消息队列也从远端消息队列接收消息。
27.如权利要求21所述的系统,其中消息发送器被配置为确定消息队列是在共享存储器还是私有存储器上创建。
28.如权利要求21所述的系统,其中,消息发送器被配置为在共享存储器中继续执行RDMA操作,而不用等待从已经在托管共享服务器的服务器节点上发生的中断恢复。
29.一种用于在中间件机器环境中管理消息队列的方法,包括:
在服务器上的消息接收器上提供共享存储器,其中该共享存储器在其中维护一个或多个消息队列;及
响应于来自消息发送器的请求,经与消息接收器相关联的在一个或多个微处理器上运行的守护进程在共享存储器中创建消息队列以用于与消息发送器通信;和
创建安全令牌并将安全令牌发送给消息发送器;
响应于消息发送器接收到安全令牌,从消息发送器接受共享存储器上的远程直接存储器存取(RDMA)操作以用于将消息直接写入共享存储器中;以及
经由消息队列接收消息的元数据信息。
30.如权利要求29所述的方法,其中消息发送器上的不同进程操作为使用至少一个代理来与消息服务器通信。
31.如权利要求29所述的方法,还包括经第一安全网络把安全令牌从服务器节点发送到客户端节点。
32.如权利要求29所述的方法,还包括经由守护进程来创建并保留用于本地消息传送的本地消息队列。
33.如权利要求32所述的方法,还包括允许本地消息队列在共享存储器的外面被创建和保留。
34.如权利要求32所述的方法,还包括允许本地服务器进程既从本地消息队列也从远端消息队列接收消息。
35.如权利要求29所述的方法,还包括允许消息发送器确定消息队列是在共享存储器还是私有存储器上创建。
36.如权利要求29所述的方法,还包括允许消息发送器在共享存储器中继续执行RDMA操作,而不用等待从已经在托管共享存储器上的服务器节点上发生的中断恢复。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161542119P | 2011-09-30 | 2011-09-30 | |
US61/542,119 | 2011-09-30 | ||
US13/572,501 | 2012-08-10 | ||
US13/572,491 US9996403B2 (en) | 2011-09-30 | 2012-08-10 | System and method for providing message queues for multinode applications in a middleware machine environment |
US13/572,491 | 2012-08-10 | ||
US13/572,501 US9558048B2 (en) | 2011-09-30 | 2012-08-10 | System and method for managing message queues for multinode applications in a transactional middleware machine environment |
PCT/US2012/057634 WO2013049399A1 (en) | 2011-09-30 | 2012-09-27 | System and method for providing and managing message queues for multinode applications in a middleware machine environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103827829A CN103827829A (zh) | 2014-05-28 |
CN103827829B true CN103827829B (zh) | 2017-03-22 |
Family
ID=47993694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280047474.0A Active CN103827829B (zh) | 2011-09-30 | 2012-09-27 | 在中间件机器环境中提供和管理用于多节点应用的消息队列的系统及方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9996403B2 (zh) |
EP (1) | EP2761454A1 (zh) |
JP (2) | JP6238898B2 (zh) |
KR (1) | KR102011949B1 (zh) |
CN (1) | CN103827829B (zh) |
IN (1) | IN2014CN01390A (zh) |
WO (1) | WO2013049399A1 (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9996403B2 (en) * | 2011-09-30 | 2018-06-12 | Oracle International Corporation | System and method for providing message queues for multinode applications in a middleware machine environment |
CN104133728B (zh) * | 2013-12-16 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 一种进程间通讯的方法、及装置 |
US9495325B2 (en) | 2013-12-30 | 2016-11-15 | International Business Machines Corporation | Remote direct memory access (RDMA) high performance producer-consumer message processing |
US10250519B2 (en) * | 2014-05-21 | 2019-04-02 | Oracle International Corporation | System and method for supporting a distributed data structure in a distributed data grid |
DE112014006838T5 (de) * | 2014-07-29 | 2017-04-20 | Mitsubishi Electric Corporation | Anzeigenbetriebssystem |
GB2532227B (en) * | 2014-11-12 | 2021-10-27 | Arm Ip Ltd | Methods of communication between a remote resource and a data processing device |
US9342384B1 (en) * | 2014-12-18 | 2016-05-17 | Intel Corporation | Function callback mechanism between a central processing unit (CPU) and an auxiliary processor |
US9792248B2 (en) | 2015-06-02 | 2017-10-17 | Microsoft Technology Licensing, Llc | Fast read/write between networked computers via RDMA-based RPC requests |
US10509764B1 (en) | 2015-06-19 | 2019-12-17 | Amazon Technologies, Inc. | Flexible remote direct memory access |
US10725963B2 (en) | 2015-09-12 | 2020-07-28 | Microsoft Technology Licensing, Llc | Distributed lock-free RDMA-based memory allocation and de-allocation |
US10713210B2 (en) | 2015-10-13 | 2020-07-14 | Microsoft Technology Licensing, Llc | Distributed self-directed lock-free RDMA-based B-tree key-value manager |
US10169116B2 (en) | 2015-10-21 | 2019-01-01 | International Business Machines Corporation | Implementing temporary message queues using a shared medium |
CN105446936B (zh) * | 2015-11-16 | 2018-07-03 | 上海交通大学 | 基于htm和单向rdma操作的分布式哈希表方法 |
US10375167B2 (en) * | 2015-11-20 | 2019-08-06 | Microsoft Technology Licensing, Llc | Low latency RDMA-based distributed storage |
CN105933408B (zh) * | 2016-04-20 | 2019-08-13 | 中国银联股份有限公司 | 一种Redis通用中间件的实现方法及装置 |
US10044595B1 (en) * | 2016-06-30 | 2018-08-07 | Dell Products L.P. | Systems and methods of tuning a message queue environment |
CN107612950B (zh) * | 2016-07-11 | 2021-02-05 | 阿里巴巴集团控股有限公司 | 一种提供服务的方法、装置、系统、电子设备 |
WO2018022083A1 (en) * | 2016-07-29 | 2018-02-01 | Hewlett Packard Enterprise Development Lp | Deliver an ingress packet to a queue at a gateway device |
US10313282B1 (en) * | 2016-10-20 | 2019-06-04 | Sprint Communications Company L.P. | Flexible middleware messaging system |
US10198397B2 (en) | 2016-11-18 | 2019-02-05 | Microsoft Technology Licensing, Llc | Flow control in remote direct memory access data communications with mirroring of ring buffers |
CN106789431B (zh) * | 2016-12-26 | 2019-12-06 | 中国银联股份有限公司 | 一种超时监控方法及装置 |
EP3568751B1 (en) * | 2017-01-13 | 2023-06-07 | Oracle International Corporation | System and method for conditional call path monitoring in a distributed transactional middleware environment |
CN109032821B (zh) * | 2018-08-27 | 2021-12-28 | 百度在线网络技术(北京)有限公司 | 自动驾驶主题消息处理方法、装置、设备及存储介质 |
CN111327511B (zh) * | 2018-12-14 | 2022-04-12 | 北京京东尚科信息技术有限公司 | 即时通讯方法、系统、终端设备与存储介质 |
CN109815029B (zh) * | 2019-01-10 | 2023-03-28 | 西北工业大学 | 一种嵌入式分区操作系统分区间通信的实现方法 |
JP2020154805A (ja) | 2019-03-20 | 2020-09-24 | キオクシア株式会社 | マルチプロセッサシステム及び共有メモリの制御方法 |
CN110109873B (zh) * | 2019-05-08 | 2023-04-07 | 重庆大学 | 一种用于消息队列的文件管理方法 |
US11520572B2 (en) * | 2019-09-13 | 2022-12-06 | Oracle International Corporation | Application of scheduled patches |
CN110955535B (zh) * | 2019-11-07 | 2022-03-22 | 浪潮(北京)电子信息产业有限公司 | 一种多业务请求进程调用fpga设备的方法及相关装置 |
CN111629054B (zh) * | 2020-05-27 | 2022-06-03 | 北京金山云网络技术有限公司 | 消息处理方法、装置、系统、电子设备及可读存储介质 |
CN113626221B (zh) * | 2021-08-10 | 2024-03-15 | 迈普通信技术股份有限公司 | 一种消息入队方法及装置 |
CN113742112B (zh) * | 2021-09-15 | 2024-04-16 | 武汉联影智融医疗科技有限公司 | 心电图像的生成方法、系统和电子装置 |
CN114584566A (zh) * | 2022-02-16 | 2022-06-03 | 深圳金融电子结算中心有限公司 | 基于消息队列的数据处理方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6557056B1 (en) * | 1998-12-30 | 2003-04-29 | Nortel Networks Limited | Method and apparatus for exchanging data between transactional and non-transactional input/output systems in a multi-processing, shared memory environment |
US6766358B1 (en) * | 1999-10-25 | 2004-07-20 | Silicon Graphics, Inc. | Exchanging messages between computer systems communicatively coupled in a computer system network |
US6871265B1 (en) * | 2002-02-20 | 2005-03-22 | Cisco Technology, Inc. | Method and apparatus for maintaining netflow statistics using an associative memory to identify and maintain netflows |
CN1909485A (zh) * | 2005-08-02 | 2007-02-07 | 韩美爱提株式会社 | 与多个客户端进行数据处理用系统服务器及数据处理方法 |
CN101719960A (zh) * | 2009-12-01 | 2010-06-02 | 中国电信股份有限公司 | 通信装置和cdma终端 |
Family Cites Families (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1990014629A2 (en) * | 1989-05-26 | 1990-11-29 | Massachusetts Institute Of Technology | Parallel multithreaded data processing system |
JPH0520100A (ja) * | 1991-07-11 | 1993-01-29 | Mitsubishi Electric Corp | オペレーテイングシステム |
JPH0721038A (ja) | 1993-06-30 | 1995-01-24 | Hitachi Ltd | プログラム間通信方法 |
JPH07152709A (ja) | 1993-11-30 | 1995-06-16 | Hitachi Ltd | プロセッサ間通信方法 |
US5784615A (en) * | 1994-12-13 | 1998-07-21 | Microsoft Corporation | Computer system messaging architecture |
JPH08212180A (ja) * | 1995-02-08 | 1996-08-20 | Oki Electric Ind Co Ltd | プロセス間通信処理装置 |
US5961651A (en) | 1996-04-15 | 1999-10-05 | Sun Microsystems, Inc. | Event notification in a computing system having a plurality of storage devices |
US5916307A (en) * | 1996-06-05 | 1999-06-29 | New Era Of Networks, Inc. | Method and structure for balanced queue communication between nodes in a distributed computing application |
US5951657A (en) * | 1996-06-19 | 1999-09-14 | Wisconsin Alumni Research Foundation | Cacheable interface control registers for high speed data transfer |
US6047391A (en) * | 1997-09-29 | 2000-04-04 | Honeywell International Inc. | Method for strong partitioning of a multi-processor VME backplane bus |
US6215792B1 (en) * | 1998-06-30 | 2001-04-10 | Motorola, Inc. | System, device, and method for initial ranging in a communication network |
US6667972B1 (en) * | 1999-01-08 | 2003-12-23 | Cisco Technology, Inc. | Method and apparatus providing multi-service connections within a data communications device |
JP3437933B2 (ja) | 1999-01-21 | 2003-08-18 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ブラウザ共有方法及びシステム |
US7970898B2 (en) * | 2001-01-24 | 2011-06-28 | Telecommunication Systems, Inc. | System and method to publish information from servers to remote monitor devices |
US6847991B1 (en) * | 2000-09-06 | 2005-01-25 | Cisco Technology, Inc. | Data communication among processes of a network component |
GB0028237D0 (en) * | 2000-11-18 | 2001-01-03 | Ibm | Method and apparatus for communication of message data |
US20020129172A1 (en) * | 2001-03-08 | 2002-09-12 | International Business Machines Corporation | Inter-partition message passing method, system and program product for a shared I/O driver |
US6985951B2 (en) * | 2001-03-08 | 2006-01-10 | International Business Machines Corporation | Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment |
US6901491B2 (en) | 2001-10-22 | 2005-05-31 | Sun Microsystems, Inc. | Method and apparatus for integration of communication links with a remote direct memory access protocol |
US7822980B2 (en) * | 2002-03-15 | 2010-10-26 | International Business Machines Corporation | Authenticated identity propagation and translation within a multiple computing unit environment |
US7330927B1 (en) * | 2003-05-07 | 2008-02-12 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Apparatus and methodology for a pointer manager |
ATE455419T1 (de) | 2003-05-27 | 2010-01-15 | Ibm | System zur bestimmung eines alternativen weges in einer nachrichtenübermittlung-middleware umgebung |
GB0328576D0 (en) * | 2003-12-10 | 2004-01-14 | Ibm | Method and apparatus for browsing a list of data items |
US7953903B1 (en) | 2004-02-13 | 2011-05-31 | Habanero Holdings, Inc. | Real time detection of changed resources for provisioning and management of fabric-backplane enterprise servers |
US20050251856A1 (en) * | 2004-03-11 | 2005-11-10 | Aep Networks | Network access using multiple authentication realms |
JP2005284840A (ja) | 2004-03-30 | 2005-10-13 | Matsushita Electric Ind Co Ltd | メッセージ通信回路、メッセージ送信方法、メッセージ管理方法、およびメッセージ通信システム |
US7613813B2 (en) * | 2004-09-10 | 2009-11-03 | Cavium Networks, Inc. | Method and apparatus for reducing host overhead in a socket server implementation |
US7546613B2 (en) * | 2004-09-14 | 2009-06-09 | Oracle International Corporation | Methods and systems for efficient queue propagation using a single protocol-based remote procedure call to stream a batch of messages |
US7882317B2 (en) * | 2004-12-06 | 2011-02-01 | Microsoft Corporation | Process isolation using protection domains |
EP1851646A2 (en) * | 2005-01-06 | 2007-11-07 | Tervela Inc. | Intelligent messaging application programming interface |
US7987306B2 (en) * | 2005-04-04 | 2011-07-26 | Oracle America, Inc. | Hiding system latencies in a throughput networking system |
US8196150B2 (en) * | 2005-10-07 | 2012-06-05 | Oracle International Corporation | Event locality using queue services |
US8255455B2 (en) * | 2005-12-30 | 2012-08-28 | Sap Ag | Method and system for message oriented middleware virtual provider distribution |
US7464121B2 (en) | 2006-01-06 | 2008-12-09 | International Business Machines Corporation | Apparatus for sending a sequence of asynchronous messages to the same member of a clustered consumer |
JP2007304786A (ja) | 2006-05-10 | 2007-11-22 | Nec Corp | コンピュータ装置間のホストメモリコピー方法、コンピュータ装置、およびコンピュータプログラム |
US8122144B2 (en) | 2006-06-27 | 2012-02-21 | International Business Machines Corporation | Reliable messaging using redundant message streams in a high speed, low latency data communications environment |
US7996583B2 (en) * | 2006-08-31 | 2011-08-09 | Cisco Technology, Inc. | Multiple context single logic virtual host channel adapter supporting multiple transport protocols |
US7609703B2 (en) | 2006-09-15 | 2009-10-27 | Hewlett-Packard Development Company, L.P. | Group communication system and method |
US7949815B2 (en) * | 2006-09-27 | 2011-05-24 | Intel Corporation | Virtual heterogeneous channel for message passing |
US7921427B2 (en) | 2007-03-27 | 2011-04-05 | Oracle America, Inc. | Method and system for processing messages in an application cluster |
JP2009199365A (ja) * | 2008-02-21 | 2009-09-03 | Funai Electric Co Ltd | マルチタスク処理システム |
US8849988B2 (en) * | 2008-11-25 | 2014-09-30 | Citrix Systems, Inc. | Systems and methods to monitor an access gateway |
JP2010165022A (ja) | 2009-01-13 | 2010-07-29 | Ricoh Co Ltd | プロセッサ間通信装置、プロセッサ間通信方法、プログラムおよび記録媒体 |
US20100250684A1 (en) * | 2009-03-30 | 2010-09-30 | International Business Machines Corporation | High availability method and apparatus for shared resources |
JP2011008678A (ja) | 2009-06-29 | 2011-01-13 | Hitachi Ltd | データ転送装置及びコンピュータシステム |
US20110030039A1 (en) | 2009-07-31 | 2011-02-03 | Eric Bilange | Device, method and apparatus for authentication on untrusted networks via trusted networks |
JP5541292B2 (ja) * | 2009-10-15 | 2014-07-09 | 日本電気株式会社 | 分散システム、通信手段選択方法および通信手段選択プログラム |
US9094210B2 (en) * | 2009-10-26 | 2015-07-28 | Citrix Systems, Inc. | Systems and methods to secure a virtual appliance |
US8819701B2 (en) | 2009-12-12 | 2014-08-26 | Microsoft Corporation | Cloud computing monitoring and management system |
US8667575B2 (en) * | 2009-12-23 | 2014-03-04 | Citrix Systems, Inc. | Systems and methods for AAA-traffic management information sharing across cores in a multi-core system |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US8516220B2 (en) * | 2010-05-11 | 2013-08-20 | Intel Corporation | Recording dirty information in software distributed shared memory systems |
US9009663B2 (en) * | 2010-06-01 | 2015-04-14 | Red Hat, Inc. | Cartridge-based package management |
US8667505B2 (en) * | 2010-09-14 | 2014-03-04 | Microsoft Corporation | Message queue management |
US8738860B1 (en) * | 2010-10-25 | 2014-05-27 | Tilera Corporation | Computing in parallel processing environments |
US8924964B2 (en) | 2010-11-01 | 2014-12-30 | Microsoft Corporation | Dynamic allocation and assignment of virtual environment |
US8595715B2 (en) | 2010-12-31 | 2013-11-26 | International Business Machines Corporation | Dynamic software version selection |
US9100443B2 (en) * | 2011-01-11 | 2015-08-04 | International Business Machines Corporation | Communication protocol for virtual input/output server (VIOS) cluster communication |
US8839267B2 (en) | 2011-02-21 | 2014-09-16 | Universidade Da Coruna-Otri | Method and middleware for efficient messaging on clusters of multi-core processors |
WO2012116369A2 (en) * | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
US8677031B2 (en) * | 2011-03-31 | 2014-03-18 | Intel Corporation | Facilitating, at least in part, by circuitry, accessing of at least one controller command interface |
US8533734B2 (en) * | 2011-04-04 | 2013-09-10 | International Business Machines Corporation | Application programming interface for managing time sharing option address space |
US20120331153A1 (en) * | 2011-06-22 | 2012-12-27 | International Business Machines Corporation | Establishing A Data Communications Connection Between A Lightweight Kernel In A Compute Node Of A Parallel Computer And An Input-Output ('I/O') Node Of The Parallel Computer |
US8806269B2 (en) * | 2011-06-28 | 2014-08-12 | International Business Machines Corporation | Unified, workload-optimized, adaptive RAS for hybrid systems |
US10216553B2 (en) * | 2011-06-30 | 2019-02-26 | International Business Machines Corporation | Message oriented middleware with integrated rules engine |
JP5869135B2 (ja) | 2011-09-30 | 2016-02-24 | インテル コーポレイション | コプロセッサのためのダイレクトi/oアクセス |
US9996403B2 (en) * | 2011-09-30 | 2018-06-12 | Oracle International Corporation | System and method for providing message queues for multinode applications in a middleware machine environment |
-
2012
- 2012-08-10 US US13/572,491 patent/US9996403B2/en active Active
- 2012-08-10 US US13/572,501 patent/US9558048B2/en active Active
- 2012-09-27 CN CN201280047474.0A patent/CN103827829B/zh active Active
- 2012-09-27 WO PCT/US2012/057634 patent/WO2013049399A1/en active Application Filing
- 2012-09-27 KR KR1020147009464A patent/KR102011949B1/ko active IP Right Grant
- 2012-09-27 IN IN1390CHN2014 patent/IN2014CN01390A/en unknown
- 2012-09-27 JP JP2014533333A patent/JP6238898B2/ja active Active
- 2012-09-27 EP EP12773178.4A patent/EP2761454A1/en not_active Ceased
-
2017
- 2017-09-05 JP JP2017170445A patent/JP6549663B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6557056B1 (en) * | 1998-12-30 | 2003-04-29 | Nortel Networks Limited | Method and apparatus for exchanging data between transactional and non-transactional input/output systems in a multi-processing, shared memory environment |
US6766358B1 (en) * | 1999-10-25 | 2004-07-20 | Silicon Graphics, Inc. | Exchanging messages between computer systems communicatively coupled in a computer system network |
US6871265B1 (en) * | 2002-02-20 | 2005-03-22 | Cisco Technology, Inc. | Method and apparatus for maintaining netflow statistics using an associative memory to identify and maintain netflows |
CN1909485A (zh) * | 2005-08-02 | 2007-02-07 | 韩美爱提株式会社 | 与多个客户端进行数据处理用系统服务器及数据处理方法 |
CN101719960A (zh) * | 2009-12-01 | 2010-06-02 | 中国电信股份有限公司 | 通信装置和cdma终端 |
Non-Patent Citations (1)
Title |
---|
一种消息队列中间件的设计与实现;王小霞,陈亮;《计算机工程》;20051105;第31卷(第21期);第81-83页 * |
Also Published As
Publication number | Publication date |
---|---|
JP6549663B2 (ja) | 2019-07-24 |
KR102011949B1 (ko) | 2019-08-19 |
US20130086183A1 (en) | 2013-04-04 |
CN103827829A (zh) | 2014-05-28 |
KR20140069126A (ko) | 2014-06-09 |
JP6238898B2 (ja) | 2017-11-29 |
WO2013049399A1 (en) | 2013-04-04 |
IN2014CN01390A (zh) | 2015-05-08 |
US20130086199A1 (en) | 2013-04-04 |
JP2014531687A (ja) | 2014-11-27 |
JP2017208145A (ja) | 2017-11-24 |
US9558048B2 (en) | 2017-01-31 |
EP2761454A1 (en) | 2014-08-06 |
US9996403B2 (en) | 2018-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103827829B (zh) | 在中间件机器环境中提供和管理用于多节点应用的消息队列的系统及方法 | |
EP3776162B1 (en) | Group-based data replication in multi-tenant storage systems | |
US9230002B2 (en) | High performant information sharing and replication for single-publisher and multiple-subscriber configuration | |
CN104050091B (zh) | 基于非一致性内存访问系统的网络设备及其设置方法 | |
US20080184008A1 (en) | Delegating network processor operations to star topology serial bus interfaces | |
EP3295293B1 (en) | Thread safe lock-free concurrent write operations for use with multi-threaded in-line logging | |
US9842008B2 (en) | Cache affinity and processor utilization technique | |
JP4660064B2 (ja) | 分散処理システムにおけるロックの実行 | |
US10860378B2 (en) | System and method for association aware executor service in a distributed computing environment | |
US10185681B2 (en) | Hybrid message-based scheduling technique | |
US20160077739A1 (en) | System and method for supporting a low contention queue in a distributed data grid | |
EP2761493B1 (en) | System and method for supporting a complex message header in a transactional middleware machine environment | |
US9672038B2 (en) | System and method for supporting a scalable concurrent queue in a distributed data grid | |
WO2013165379A1 (en) | Reflective memory bridge for external computing nodes | |
WO2013097098A1 (zh) | 数据处理方法、图形处理器gpu及第一节点设备 | |
CN115543952A (zh) | 用于分布式系统中的共享存储器访问api的方法和系统 | |
EP2761822B1 (en) | System and method for supporting different message queues in a transactional middleware machine environment | |
EP3933588B1 (en) | Cross-system process control framework | |
Nyrkov et al. | Data structures access model for remote shared memory | |
Giacomoni et al. | Frame shared memory: line-rate networking on commodity hardware | |
US10762011B2 (en) | Reflective memory bridge for external computing nodes | |
Brewer | CS262a Midterm Answers Fall 2008 | |
Niessen | Design and implementation of a high performance user level network interface for cluster computing | |
Mustafa | An assessment of a method to enhance the performance of cluster systems |
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 |