用于并行消息的有效保序传递的方法和装置的制作方法

文档序号:7666103阅读:172来源:国知局
专利名称:用于并行消息的有效保序传递的方法和装置的制作方法
技术领域
本发明一般涉及在计算机进程间的通信,并且更具体地,涉及用于在 计算机间有序传递消息的系统和方法。
背景技术
分布式群组通信系统(GCSs, group communication systems )使得应 用能够在计算机群集中的进程群组内交换消息。GCS为正在交换的消息提 供了诸如可靠性、同步和排序的各种语义保证。例如,响应于应用请求, GCS可以确保如果将寻址于整个群组的消息传递给了群组成员之一,则 还会将该消息传递给该群组中所有其它存活的和连接的成员,以便群组成 员能够按照所接收到的消息行事并且彼此间保持一致。
Chockler 等人在 "Group Communication Specifications: A Comprehensive Study," /4CM 5Wv, 33:4 (December, 2001),
pages 1-43中提供了对GCS的有益综述。该文章集中在面向视图的 (view-oriented) GCS,其向群组中的成员进程提供了成员关系和可靠多 播月良务(reliable multicast service )。成员关系月艮务(membership servcice ) 的任务是维护群组中当前有效的和连接的进程的列表。成员关系服务的输 出被称为"视图(view)"。可靠多播服务将消息传递给当前的视图成员。
在本领域中已知有各种方法用于维护GCS中所期望的消息次序。例 如,Chiu等人在"Total Ordering Group Communciation Protocol Based on Coordinating Sequencers for Multiple Overlapping Groups," /ow"a/ o/ Pflm/fe/ flwJD/对尸幼fited O加pwftVig 65 (2005), pages 437-447中描述了 一种 这样的排序协议。如该文中所描述的,全排序传递(total ordering delivery ) 的特征在于要求以相同的相对次序将消息传递给每个进程。作者所提出
的协议是基于定序器(sequencer-based )的,即选择定序器站点(sequencer sites)来负责对所有的多播消息进行排序,以便实现全排序传递。

发明内容
因此,依照本发明的实施例提供了一种用于通信的计算机实现的方法, 其中,通过网络接收多个有序消息序列(例如,部分有序消息集)。分配 多个处理线程来处理所接收到的消息。在收到来自所述网络的每个新消息 时,标识所述新消息所属于的有序序列。当在所标识的有序序列中存在这 样的至少一个在先消息(preceding message),即其使得使用至少第一处 理线程仍未完成对所述至少 一个在先消息的处理时,延迟对所述新消息的 处理。在使用至少所述第 一处理线程完成了对所述至少 一个在先消息的处 理时,分派第二处理线程来处理所述新消息,并且4吏用所述第二处理线程 处理所述新消息。
本发明的其它实施例提供了通信装置和计算机软件产品。


结合附图,根据以下对本发明的实施例的详细描述,将更为充分地理
解本发明,附图中
图1是依照本发明的实施例示意性地说明了计算节点的群集的框图; 图2A和2B依照本发明的实施例示意性地说明了对应于消息序列的有
向非循环图3另一依照本发明的实施例示意性地说明了用于处理所接收到的消息 的方法的流程图;以及
图4另」依照本发明的实施例示意性地iJC明了用于有序消息处理的方法 的流程图。
具体实施例方式
图1是依照本发明的实施例示意性地说明了通过网络24连接的计算节
点22的群集20的框图。每个节点均包括计算机处理器26和通信适配器 28 (其将节点链接至网络)。在该例中,处理器26运行应用软件30 (其 可以是分布式应用),并且使用群组通信系统(GCS)层32iM目互通信. 处理器26通常包括通用计算机处理器,其被编程于软件中以实现下文所描 述的功能。举例来说,可以通过网络24以电子形式将该软件下载到节点 22,或者可选地,可以在诸如光学、磁性或电子存储介质的有形介质上提 供该软件。
在示例性实施例中,节点22可以包括由IBM公司(Armonk, New York)所生产的WebSphere⑧应用服务器,并且GCS 32包括WebSphere 体系结构的DCS组群通信组件。举例来说,由Farchi等人在"Effective Testing and Debugging Techniques for a Group Communication System," 7Voce^Vig51 说e 2卵5 7rtter憩ftV /m/ Co"/emjce <m Z)e/7e/^fl6/e 5""te附s "m/A^Mw/b(DSN'05)中描述了 DCS。 DCS包括多层的堆栈,包括有虚拟 同步层34、应用接口层36,以及成员关系层38。不同节点22上应用30 的实例之间的消息穿过应用接口层36和合适的同步层34到达与通信适配 器28关联的基本传输模块,并且然后倒退(back up)经过目标节点上相 同的堆栈。成员关系层38对当前的视图成员保持3口宗并且处理视图变化。 同步和应用接口层34和36负责确保以适当的次序处理输入消息,如下文 所述。
当节点22发送和接收与事件有关的消息时,下文所描迷的机制还确保 对相对于应用消息的这些消息进行适当的排序。这样的事件消息通常与 GCS的管理和控制有关。举例来说,在视图改变的时候、在当前视图即将 关闭的时候、在特定成员即将离开视图的时候,或者在进程即将终止的时 候,可以生成这类事件。因此,术语"消息,,,如本发明申请中以及权利 要求中所使用的,应当被理解为不仅包括应用相关的消息,而且还包括报 告事件的消息。
在可选的实施例中,本发明的原理,并且具体而言下文所描述的方法, 可以在其它类型的群组通信和消息接发系统中,以及在客户机-服务器通
信环境中实现。
尽管GCS 32被设计成在由系统20中的不同节点所发送的多播消息间 维护某种相对排序,然而,并不保证通过网络24从一个节点发送到另一节 点的应用消息会以其被源节点发送的次序到达目的节点。此外,对于计算 效率来说,通过分派不同的处理线程来处理每个新消息(至少达到所讨论 的进程的资源所支持的线程数),希望应用接口层36并行地处理输入消息。 另一方面,当在相同节点的不同线程上并行地处理两个(或更多的)消息 的时候,应用接口层36可能在其传递早先的消息之前结束对后面的消息的 处理并且将其传递给应用30,即使在通信适配器28以正确的次序接收消 息的时候。通过分配单线程来处理在给定的通信会话中从特定的节点或节 点群组接收到的所有消息,可以避免这类情形,但是这类方法增加了开销 并且限制对线程的重用和最优利用。
在一些实施例中,为了确保以适当的次序处理从一个节点到另一节点 的消息,合适的同步层34利用诸如标题或其它标志的消息标识符来标记每 个输出消息。标识符指示消息的源,例如,发送消息的节点以及可能是节 点上的应用或进程。在大多数情况下,消息标识符含有对输出消息所属于 的有序序列中的至少一个在先消息的指示(或者对这是序列中的第一消息 的指示)。
在接收节点,只要有线程可用并且在在先消息(其中,术语"消息" 包括事件,如以上所指出的)所属于的消息序列中不存在仍未完成其处理 的在先消息,应用接口层36就立即分派线程来处理消息。换句话说,从网 洛接收到的每个新消息均通过可以对该消息的有序序列进行更新的所有堆 栈层进行处理。只要在该序列中还存在其处理仍未完成的任何在先消息, 应用接口层就延迟对新消息的处理。当已经完成对所有在先消息的处理时 (以及当没有找到在先消息-包括事件-时),应用接口层分派处理线程 来处理新消息。为了避免不断分配新线程的计算成本,使用本领域中已知 的线程池技术,应用接口层可以从现有的线程池提取用于消息处理的线程。 该方法提供了在处理来自不同源的消息方面最大可能的并行性,与此同时,确保以由发送应用和/或由其它可应用因素所确定的次序将消息传送给接 收应用。
系统20可以^f皮配置以支持诸如先进先出(FIFO)排序和因果排序的 各种不同的排序模型。发送节点插入消息标识符中的对在先消息的指示的 类型取决于将要推行的消息排序模型。例如,如果使用FIFO模型,则指 示可以筒单地包括顺序消息号。(在FIFO模型的情况下,实现排序的层 不需要对有向非循环图(DAG)进行编码以及将其传送给应用层,因为应 用层可以隐含地导出来自每个源的连续消息之间的排序)。另一方面,如 果^f吏用因果排序,则用于给定消息的消息标识符可以指示在分派线程处理 给定消息之前必须完成其处理的两个或更多的先行消息(predecessor messages )。
图2A和2B依照本发明的实施例示意性地说明了系统20中的消息序 列44,其由有向非循环图(DAG)40、 42和50表示。图2A中的示图40 和42具有FIFO消息排序的特征,而图2B中的示图50表示因果消息排序。 在接收消息44的节点上的应用接口层36使用这些种类的DAG表示来跟 踪消息接收和处理,如下文进一步所描述的。
每个消息44均具有源标识符(在这些例子中是"A"或"B")和序 列号。如图2A中所示,来自源A和B的有序消息序列在不同的、交错的 时间抵达接收节点的应用接口层。使用不同的线程,接收节点处的应用接 口层可以并行地处理两个序列。将到达的每个新消息添加为合适的示图40 或42中的节点(不与节点22相混淆),且边缘(edge )从在先消息节点 指向新消息节点。在图2B中,作为因果排序模型的结果,消息A5具有多 个先行者(predecessor) , A2、 A3和A4,可以并行地对其进行处理,但 是必须在应用接口层处理消息A5之前完成所有的处理。 一般而言,对于 任何的给定消息来说,没有必要(使用以上所提及的消息标识符标志或使 用DAG中的边缘)涉及序列中所有的在先消息,而仅涉及给定消息的直 接先行者。
在表示有序消息序列的每个示图中,应用接口层36维护含有这样的消息的DAG窗口 ,即该消息已经由GCS 32中的基本层接收和通过用于传递, 并且层36仍未完成对该消息的处理。当完成对消息的处理时,从窗口中删 除该消息。层36定义"候选末梢(candidate frontier)",其包括DAG 窗口中不具有该窗口中的输入边缘的消息,例如,其先行者已经全部被处 理的消息,或者没有先行者来作为起点的消息。假设示图40、 42和50表 示对应的消息序列的DAG窗口,举例来说,候选末梢包括分别在示图40 和42中的消息Al和Bl,以及示图50中的消息Al、 A3和A4。应用接口 层如下文所述在^^选末梢处处理消息。
图3是依照本发明的实施例示意性地说明了用于处理由应用接口层36 所接收的输入消息的方法的流程图。在消息接收步骤60,无论层36何时 从网络24接收到新消息M,均启动该方法。在DAG添加步骤62,将新 消息添加到DAG窗口。通常,GCS32中的基本层确保以适当的次序将所 有的消息传递给层36。
在先行者检查步骤64,层36然后确定M在DAG窗口中是否具有任 何的直接先行者。如果有的话,则层36将(从直接先行者指向M的)一 个或多个边缘添加到DAG。在延迟步骤66,延迟对M的进一步处理,直 到已完成对DAG窗口中所有先行者的处理。如以下参照图4所描述的继 续进行对该消息的后续处理。
如果应用接口层36在步骤64确定消息M在DAG窗口中没有先行者, 则在候选添加步骤68,其将M添加到候选末梢。在可用性检查步骤70, 层36然后确定是否存在可用于处理M的线程。在该例中,假设所讨论的 进程具有可以用于此目的的一池线程。如果在池中可获得线程,则在线程 分派步骤72,使用如本领域中已知的标准线程池技术,层36取得线程。 在消息处理步骤74,其然后使用该线程来处理M。
否则,在步骤70如果池中没有可用的线程,则在线程创建步骤76, 层36可以创建新线程来处理M,只要有效线程的数目尚未达到进程的并 行限制。如果有效线程的数目已经达到该限制,并且在线程池中没有空闲 线程,则层36等待处理M,直到完成对另一消息的处理,并且线程在线
程池中变成可用的,如下文所述。
图4是依照本发明的实施例示意性地说明了用于对在应用接口层36 的DAG窗口中等待的消息进行有序处理的方法的流程图。在消息完成步 骤80,当层36结束处理给定消息(再次称为消息M)的时候,启动该方 法。在消息删除步骤82,从DAG窗口以及从候选末梢删除M,在线程释 放步骤84,释方丈用于处理M的线程,并且如果没有其它消息符合传递条 件,则将该线程返回线程池。
从DAG窗口移除M意味着M的直接后继者(successor)在DAG窗 口中可能不再有先行者。在后继者检查步骤86,应用接口层36检查这些 后继者,并且将在DAG窗口中不再具有任何先行者的后继消息(successor messages)中的任何一个添加到候选末梢。在下一消息选择步骤88,层36 然后从用于处理的候选末梢选择消息N。为了确保来自所有源的消息序列 取得其对处理资源的公平共享,层36可以通过随机选择、轮式循环法,或 者任何其它的公平排队方案(如果可应用的话,包括加权方案)来选择要 处理的下一消息。在线程分派步骤卯,层36从池中取得线程,并且在消 息处理步骤92使用该线程来处理消息N。当完成处理时,将该线程返回步 骤80处的池,并且继续循环。
尽管为了清楚起见,以上在系统20中的GCS的环境下描述了有序消 息处理的方法,然而,本发明的原理(加以必要的修正)类似地可应用于 其它的计算机通信环境。举例来说,可以在服务于多个客户机的服务器上 实现上述方法,以便促进对来自不同客户机的消息的并行处理,与此同时, 仍确保在适当有序的序列中处理来自每个客户机的消息。
因而,可以理解上述实施例另一作为例子加以引用的,并且本发明并不 限于上文曾特别示出和描述的内容。更确切地说,本发明的范围既包括上 文所描述的各种特征的组合又包括其子组合,以及本领域的技术人员在阅修改。
权利要求
1.一种用于通信的计算机实现的方法,其包括通过网络接收多个有序消息序列;分配多个处理线程用于处理所接收到的消息;在收到来自所述网络的每个新消息时,标识所述新消息所属于的有序序列;当在所标识的有序序列中存在这样的至少一个在先消息,即其使得使用至少第一处理线程仍未完成对所述至少一个在先消息的处理时,延迟对所述新消息的处理;在使用至少所述第一处理线程完成了对所述至少一个在先消息的处理时,分派第二处理线程来处理所述新消息;以及使用所述第二处理线程处理所述新消息。
2. 根据权利要求l的方法,其中分配所述多个处理线程包括相应地
3. 根据权利要求1的方法,其中分配所述多个处理线程包括提供线 程池,并且其中,分派所述第二处理线程包括从所述线程池取得所述线程 中的一个。
4. 根据权利要求3的方法,其包括在所述完成对所述至少一个在先 消息的处理时,将所述第一处理线程返回所述线程池。
5. 根据权利要求l的方法,其包括当在所标识的有序序列中不存在 这样的在先消息,即其〗吏得仍未完成对所述在先消息的处理时,分派所述 处理线程中的一个线程来处理所述新消息而不延迟对所述新消息的处理, 只要不是所有的所述处理线程都已在使用中。
6. 根据权利要求5的方法,其中分派所述处理线程中的所述一个线程序序列中的消息,直到达到可用的处理线程的最大数目。
7. 根据权利要求l的方法,其中利用消息标识符标记所述消息中的每 一个,所述消息标识符指示所述消息的源,并且含有对所述消息所属于的 有序序列中的所迷至少一个在先消息的指示。
8. 根据权利要求l的方法,其中所述有序序列服从先进先出排序,从 而使得所述新消息具有单个直接先行消息,并且其中延迟所述处理包括 等待处理所述新消息,直到已经处理了所述单个直接先行消息。
9. 根据权利要求l的方法,其中所述有序序列服从因果排序,从而使 得所述新消息具有一组多个先行消息,并且其中延迟所述处理包括等待 处理所述新消息,直到已经处理了所述组中所有的所述先行消息。
10. 根据权利要求l的方法,其中延迟所述处理包括维护对应于所 述有序序列中每一个的相应的有向非循环图,从而使得对于每个新消息, 将对应于所述新消息的节点添加到对应于所标识的有序序列的有向非循环 图,并且当仍未完成对所标识的有序序列中的所述至少一个在先消息的处 理时,将至少一个边缘添加到将所述节点连接至对应于所述至少一个在先 消息的至少一个在先节点的有向非循环图,以及其中分派所述处理线程包括当所述有向非循环图中在对应于所述新 消息的节点之前不存在仍未被处理的节点时,分派所述线程来处理所述新 消息。
11. 根据权利要求l的方法,其中接收所述多个有序消息序列包括 在群组通信系统中的网络节点间交换所述消息,并且其中,所标识的有序 序列中的消息中的至少 一个报告了所i^M且通信系统中的事件。
12. —种通信装置,其包括通信适配器,其被安排成耦合于网络以便接收多个有序消息序列;以及进程,其被安排以便分配多个处理线程用于处理所接收到的消息,并 且在从所述网络收到每个新消息时,其被安排以l更标识所述新消息所属于 的有序序列,以及当在所标识的有序序列中存在这样的至少一个在先消息, 即其使得^:用至少第 一处理线程仍未完成对所述至少 一个在先消息的处理时,延迟对所述新消息的处理,以及在使用至少所述笫一处理线程完成了 对所述至少 一个在先消息的处理时,分派第二处理线程来处理所述新消息, 以及使用所述第二处理线程来处理所述新消息。
13. 根据权利要求12的装置,其中所述进程被安排以便相应地分派 多个所述处理线程来并行地处理所述有序序列的不同有序序列中的消息。
14. 根据权利要求12的装置,其中所述进程被安排以便维护线程池, 以及从所述线程g得至少所述第一和第二处理线程。
15. 根据权利要求12的装置,其中当在所标识的有序序列中不存在 这样的在先消息,即其4吏得仍未完成对所述在先消息的处理时,所述进程 被安排以便分派所述处理线程中的一个线程来处理所述新消息而不延迟对 所述新消息的处理。
全文摘要
一种用于通信的计算机实现的方法,其包括通过网络接收多个有序消息序列。分配多个处理线程来处理所接收到的消息。在收到来自所述网络的每个新消息时,标识所述新消息所属于的有序序列。当在所标识的有序序列中存在这样的至少一个在先消息,即其使得使用至少第一处理线程仍未完成对所述至少一个在先消息的处理时,延迟对所述新消息的处理。在使用至少所述第一处理线程完成了对所述至少一个在先消息的处理时,分派第二处理线程来处理所述新消息,并且使用所述第二处理线程处理所述新消息。
文档编号H04L29/02GK101179553SQ20071018038
公开日2008年5月14日 申请日期2007年10月23日 优先权日2006年10月30日
发明者A·克里斯, B·曼德勒, R·威滕博格 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1