管理消息队列制造技术

技术编号:13018274 阅读:81 留言:0更新日期:2016-03-16 18:25
一种方法、相应系统及软件,其被描述为用于向多个队列写入数据,所述数据的每一部分被写入到相应的一个队列。该方法包括,无需同时锁定多于一个队列,确定每一队列中是否有空间可用以写入所述数据的相应部分,如果有,则预留所述队列的所述空间。该方法包括将所述数据的每一部分写入到相应的一个队列。

【技术实现步骤摘要】
【专利说明】管理消息队列本申请是申请日为2006年6月22日、申请号为200680023379.1、专利技术名称为“管理消息队列”的申请的分案申请,其全部内容通过参考援引于此。
技术介绍
本专利技术涉及管理消息队列。消息队列可用于提供适合于访问实体(例如服务器、操作系统、软件模块等)的异步通信协议,以进行消息交换。存放于消息队列中的消息以队列数据结构的方式存储,直到接收者(例如消息队列的订阅者(subscriber))取回(retrieve)它们。消息队列系统可以提供“持久性”以确保在系统发生故障的情况下消息不会丢失(或能够恢复任何丢失的消息)。实现持久性的一种方法是:例如在接收到一定数量的输入消息或数据字节后,利用非易失性存储器来同步在易失性存储器中存储的消息。
技术实现思路
在总体方案中,本专利技术的特征在于提供一种用于将数据写入到多个队列的方法、相应的软件和系统,其中数据的每一部分被写到相应的一个队列。该方法包括,无需同时锁定多于一个队列,确定每一队列中是否有空间可用以写入数据的相应部分,如果有,则预留(reserve)队列中的这些空间。该方法包括将数据的每一部分写入到相应的一个队列。该方案包括如下一个或多个特征。将数据的每一部分写入到相应的一个队列发生在预留队列中所有空间之后。该方法还包括在相应队列中写入一部分数据之后,释放为在该队列中写入将该部分数据而预留的空间。确定每一队列中是否有空间可用,以及如果有则预留所述空间的步骤包括,对于多个队列中的每一个:锁定该队列;确定该队列中的空间是否可用;如果可用则预留该空间;以及解锁该队列。被写入到相应的一个队列的所述数据的每一部分包括记录。 该方法还包括在将所述记录写入到任何队列之前写入日志记录。该方法还包括在写入日志记录之前将每一队列同步至非易失性存储器。该方法还包括,在将除了所述记录之一之外的数据写入到第一队列之前,如果该第一队列中已预留了空间,则锁定该第一队列,同时确定在将其它数据写入到该第一队列之前,对于所述其它数据该第一队列中的额外空间是否可用。该方法还包括,在将除了所述记录之一之外的数据写入到第一队列之前,如果该第一队列中还没有预留空间,则将所述数据写入到该第一队列而不需要锁定该第一队列。确定每一队列中是否有空间可用以写入所述数据的相应部分的步骤包括:确保每一队列中有足够空间可用于写入关于该队列的任何未完成事务的提交记录。该方法还包括在确定至少一个队列中没有预留足够的空间来写入关于该队列的任何未完成事务的提交记录之后,中止向所述多个队列中的每一个写入相应的提交记录。预留队列中的空间的步骤包括递增每一队列的相应计数。在另一总体方案中,本专利技术的特征在于一种方法及相应的软件和系统,包括:在第一数据结构中存储队列的多个消息,该第一数据结构与用于该队列的第二数据结构分开;提交与所述消息有关的事务;以及从相邻存储位置(contiguous memory locat1n)读取至少一些所述消息。该方案包括如下一个或多个特征。该方法还包括在该第二数据结构中存储指向该第一数据结构的指针。从相邻存储位置读取至少一些所述消息的步骤包括从该第一数据结构中读取至少一些所述消息。提交事务的步骤包括将所述消息从该第一数据结构移至该第二数据结构。从相邻存储位置读取至少一些所述消息的步骤包括从该第二数据结构中读取至少一些所述消息。该第一数据结构被存储在易失性存储器中,以及该第二数据结构被存储在非易失性存储器中。该方法还包括将所述消息从该第一数据结构移至第三数据结构;以及在该第二数据结构中存储指向该第三数据结构的指针。从相邻存储位置读取至少一些所述消息的步骤包括从该第三数据结构中读取至少一些所述消息。本专利技术的方案具有如下一个或多个优点。复合提交操作保证成功地将记录写入到多个队列中的每一个,而无需同时锁定多于一个队列,从而提高了计算资源的利用。将大型写事务中的消息写入到分开的数据结构避免了在读取其它消息时不得不浏览该大型写事务的记录。在将写事务中的消息添加到队列之前,将它们写入到分开的数据结构或写缓冲器中,这降低了许多其它消息与该写事务中的所述消息的交叉存取,从而提高了输入/输出(1/0)效率。从下面的描述和权利要求书中,本专利技术的其它特征和优点将变得清楚。【附图说明】图1A为排队系统的示意图。图1B为队列数据结构的示意图。图2A至图2E为写缓冲器和队列数据结构的示意图。图3A和图3B为写缓冲器和两个队列数据结构的示意图。图4为队列数据结构和相应读数据结构的示意图。图5为队列数据结构和大型事务数据结构的示意图。图6为作为复合提交操作部分的队列数据结构的示意图。图7为复合提交操作的流程图。图8A为开启操作(open operat1n)的流程图。图8B和图8C分别为复合提交操作和相关写操作的流程图。图9A和图9B分别为复合提交操作和相关写操作的流程图。【具体实施方式】1.概况图1A示出排队系统100,其中一组受信的访问实体102A-102M均包括队列事务模块104,队列事务模块104用于与队列管理器106直接进行相互作用。排队系统100还包括一组不受信的访问实体108A-108N,不受信的访问实体108A-108N均包括通过远程程序调用(RPC)管理器112与队列管理器106进行相互作用的远程队列事务模块110。排队系统100提供一种通过一个或多个消息队列在访问实体之间传递消息的机制。访问实体为模块提供接口,以与排队系统100相互作用。例如分布式计算系统中的“发布者”(publisher)计算模块能够将包括被处理的数据元(element)的消息传递到一个或多个“订阅者”(subscriber)计算模块。队列管理器106与输入/输出(I/O)管理器114相互作用,输入/输出管理器114为具有相应队列数据结构队列A-队列P的一组消息队列管理存储容量(memory storage),在易失性存储器118(例如半导体随机存取存储器(RAM))中为每一组消息队列分配存储空间(例如,一组磁盘页面),易失性存储器118是一种临时工作存储器,其对于读取和写入数据提供相对较快的访问。I/O管理器114也管理非易失性存储器116(例如磁盘系统),非易失性存储器116是一种永久性存储器,其提供相对更持久的数据,以及与易失性存储器相比,其对于读取和写入数据提供相对较慢的访问。任选地,可具有处理所有队列的I/O的一个I/O管理器,或者存在并行运行的多个I/O管理器,其中每一 I/O管理器处理队列子集的 I/O。队列数据结构存储包括“消息记录”(也简单地称作“消息”)和“控制记录”的记录,其中消息记录包括被发送的消息数据,控制记录包括由排队系统100使用以管理队列的信息。图1B示出含有一系列消息记录的示例性的队列数据结构队列M,每一消息记录包括消息报头130和消息数据132。任选地,队列可将消息数据与消息报头130 —起存储,或者可将指针134与消息报头130 —起存储,其中指针134用于指定外部存储的消息数据136的地址。在下文描述的“大型事务间接技术”中,任选地,记录可包括指向用于存储消息顺序的大型事务数据结构122的指针138。排队系统100支持包括发布-订阅数据分布模型的各种数据分布模型。起到队列“发布者本文档来自技高网...

【技术保护点】
一种向多个队列写入第一数据并向所述多个队列的一个写入第二数据的方法,所述第一数据的每一部分被写入到不同的相应的一个队列,该方法包括:无需同时锁定多于一个队列,确定每一队列中是否有空间可用于写入所述第一数据的相应部分,如果有,则预留所述每一队列中的所述空间以确保所述每一队列中的所述空间保持可用,直到所述第一数据的相应部分被写入到所述每一队列为止;在写所述第一数据的每一部分时,将所述第一数据的每一部分写入到不同的相应的一个队列,而不锁定所述相应的一个队列;以及将不同于所述第一数据的所述第二数据写入所述多个队列的至少一个队列,同时为所述第一数据的相应部分预留空间,包括:锁定将要被写入所述第二数据的所述一个队列,确定所述一个队列中有空间可用于写入所述第一数据的相应部分和所述第二数据,以及写入所述第二数据。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:斯皮罗·米柴伊洛夫桑吉维·班纳吉克雷格·W·斯坦菲尔
申请(专利权)人:起元科技有限公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1