CN104932946A - 用于处理电信网络中的事件的设备和方法 - Google Patents

用于处理电信网络中的事件的设备和方法 Download PDF

Info

Publication number
CN104932946A
CN104932946A CN 201510419034 CN201510419034A CN104932946A CN 104932946 A CN104932946 A CN 104932946A CN 201510419034 CN201510419034 CN 201510419034 CN 201510419034 A CN201510419034 A CN 201510419034A CN 104932946 A CN104932946 A CN 104932946A
Authority
CN
Grant status
Application
Patent type
Prior art keywords
comprises
event
sessions
processing
used
Prior art date
Application number
CN 201510419034
Other languages
English (en)
Inventor
弗雷德里克·胡戈·芝瓦尔
Original Assignee
瑞典爱立信有限公司
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

Links

Abstract

处理平台,例如Java企业版(JEE)平台,包括具有多个处理器(3)的JEE簇,所述多个处理器包括用于处理与一个或多个应用会话Si至Sn相关联的事件的资源适配器(11)。每个应用会话Si至Sn包括会话状态(15)和事件队列(17),事件队列(17)包含针对会话S1至Sn中的特定会话要执行的事件的列表。线程池(19)包括一个或多个处理线程t1至tN,用于使得处理器(3)能够并行地执行多个任务。线程池(19)包括任务队列(21),所述任务队列(21)包含处理线程t1至tN要执行的任务。资源适配器(11)包括同步单元(23),用于控制来自线程池的多个线程t1至tN如何处理多个应用会话Si至Sn中的事件。具体地,同步单元(23)配置为使得排队在事件队列(17)中的仅一个事件调度有任务队列(21)中的任务,由此防止并行地执行来自应用会话的特定事件队列的多于一个事件。

Description

用于处理电信网络中的事件的设备和方法

[0001] 分案说明

[0002] 本申请是申请日为2009年7月28日,申请号为200980160635.5,题为“用于处理电信网络中的事件的设备和方法”的中国专利申请的分案申请。

技术领域

[0003] 本发明涉及用于处理电信网络中的事件的设备和方法,并且具体地涉及诸如Java企业版(JEE)处理平台之类的电信处理平台中用于同步与应用会话相关联的事件的处理的方法和设备。

背景技术

[0004] 在电信网络中,为了提供除常规电话呼叫之外的额外功能,存在许多应用和服务。这些应用和服务通常运行在连接到电信网络的不同服务器上。这些服务器通常运行在与电信网络自身不同的平台上。

[0005] 一种这样的平台是Java企业版(JEE)平台,其是标准Java平台的发展。JEE是针对Java编程语言中的服务器编程的广泛使用的平台。JEE平台与标准Java平台的不同在于其添加了主要基于运行在应用服务器上的模块化组件来部署容错的分布式多层Java软件的功能的库。JEE平台的特征在于其允许多个处理线程并行地运行,由此提高任务执行的吞吐量。

[0006] 尽管JEE平台适合于许多应用,但是如下所述,对于某些电信服务可能是不可行的。

[0007] 电信协议的处理通常要求使用与应用会话相关联的状态机。对于这些状态机,必须一次仅接收一个消息,使得不会破坏状态。因此,JEE平台不提供用于一次一个地处理特定应用会话上的消息的装置。相反,JEE平台通常会启动与要处理的消息一样多的并行线程。

[0008] 图1示出了典型的JEE簇1,包括多个处理器3。处理器3可以是相同的,并且分享JEE簇I的负载。当用作电信处理平台时,每个处理器3通常将包括若干容器,例如Enterprise Java Beans 5 (EJB)、HTTP 服务程序(servlet) 7、会话发起协议(SIP)服务程序9或者其他执行单元13,如用于与传统系统通信的其他资源适配器。

[0009] 图1示出的架构包括线程池19。线程池19包括一个或多个处理线程t N,用于使得处理器3能够并行地执行多任务。线程池19还包括任务队列21,任务队列21包含线程^至t ,要执行的任务的集合。每个处理线程t 1至t N—次执行一个任务。

[0010] 如上面提到的,JEE平台配置为并行地尝试和执行与系统中定义的线程一样多的任务。这在下述情况下可能出现问题:如图1所示的JEE平台被用于处理电信应用和服务,其中当多个线程^至1,并行地执行与应用会话相关联的多个事件时,会话状态变为无效。换言之,应用会话中的事件并发地更新相同的会话状态。

[0011] 确保事件同步的一种方法是使用锁或旗语(semaphore)来防止应用会话中的事件并发地更新相同的会话状态。如此,当一个线程^至tN在处理与特定应用会话相关联的事件时,所有其他线程必须等待直到所述一个线程结束。其缺点在于:使许多线程^至七,等待,这不是对系统资源的最佳使用,并且通常与JEE平台原理相冲突。

[0012] 确保事件同步的另一方法是向每个应用会话仅分配所述多个线程^至^中的一个线程。如此,每个应用会话具有用于处理其事件的专用线程。然而,这样的解决方案具有上述线程池机制的缺点,以及因此违背了支配所有资源(包括线程)必须被管理的重要JEE平台原理。该解决方案还具有以下缺点:使用比所需的线程多得多的线程^至七,,由此资源效率不高。

[0013] 根据上文应该理解,在不损害资源效率的情况下实现事件同步存在问题。

发明内容

[0014] 本发明的目的在于提供一种用于以资源高效的方式同步在电信网络中使用的处理平台中的事件处理的方法和设备。

[0015] 根据本发明的一个方面,提供了一种在电信处理平台中同步与应用会话相关联的事件的处理的方法,其中所述电信处理平台具有用于并行地处理多个任务的多个处理线程,以及其中所述任务存储在任务队列中。所述方法包括以下步骤:在与特定应用会话相关联的事件队列中存储一个或多个事件,以及向特定应用会话的事件队列中的仅一个事件分配所述任务队列中的任务。

[0016] 本发明具有以下优点:避免了并发地处理事件,因为特定应用会话的事件队列中仅一个事件分配有任务。本发明还具有以下优点:不需要对现有线程池本身执行任务队列中的任务的处理的方式进行任何修改。

[0017] 在事件队列中存储事件可以包括以下步骤:确定所述事件是否是事件队列中的第一事件,如果是,则向该特定事件分配任务队列中的任务。

[0018] 从事件队列中移除已处理的事件可以包括以下步骤:确定事件队列是否为空,如果不为空,则向事件队列中的另一事件分配任务队列中的任务。该分配任务的步骤可以包括向事件队列中的下一个事件分配任务的步骤。

[0019] 在事件队列中存储事件以及确定所述事件是否是事件队列中的第一事件的步骤可以作为不可分割的动作来执行。这具有避免竞态条件的优点。

[0020] 从事件队列中移除事件以及确定事件队列是否为空的步骤可以作为不可分割的动作来执行。这也具有避免竞态条件的优点。

[0021] 根据本发明的一个方面,可以提供锁,以执行所述不可分割的动作。备选地,可以使用原子计数器来执行所述不可分割的动作。该原子计数器具有在相应的存储或移除步骤期间递增或递减的计数值,所述计数值指示事件队列是否为空,或者事件是否是事件队列中的第一事件。

[0022] 所述方法可以用在具有Java企业版(JEE)处理平台的电信处理平台中。

[0023] 根据本发明的另一方面,提供了一种在具有用于并行地处理多个任务的多个处理线程的电信处理平台中使用的资源适配器,所述任务存储在任务队列中。所述资源适配器包括一个或多个事件队列。每个事件队列与应用会话相关联,并且适于存储与其对应应用会话相关联的一个或多个事件。所述资源适配器包括:同步单元,用于同步事件队列中的事件的处理,所述同步单元配置为向事件队列中的仅一个事件分配任务队列中的任务。

[0024] 根据本发明的另一方面,提供了一种JEE簇,所述JEE簇包括如所附权利要求所述的资源适配器,或者适于执行如所附权利要求所述的方法。

[0025] 本发明具有如下优点:有效地使用线程池来处理来自多个队列的事件,不会不必要地阻止线程,而且同时并行处理尽可能多的事件(来自不同应用会话)。此外,本发明无死锁和活锁。

附图说明

[0026] 为了更好地理解本发明,以及更清楚地示出如何实现本发明,现在将参考作为示例的附图,在附图中:

[0027] 图1示出了已知JEE簇的典型架构;

[0028] 图2示出了具有用于处理应用会话的资源适配器的JEE架构;

[0029] 图3示出了根据本发明的实施例的资源适配器;

[0030] 图4示出了根据本发明的实施例的方法中执行的步骤;

[0031] 图5示出了根据本发明的一个方面的方法中执行的步骤;

[0032] 图6示出了根据本发明的另一方面执行的步骤;

[0033] 图7示出了根据本发明的另一方面执行的步骤;

[0034] 图8示出了根据本发明的另一方面的执行的步骤;以及

[0035] 图9至12提供了根据本发明可以如何处理多个事件的示例。

具体实施方式

[0036] 下面将在JEE平台的上下文中描述的本发明。然而,应该理解,本发明还可应用于与线程池结合来执行对事件和会话的处理的平台的其他形式,即通过利用事件处理的任何会话框架。此外,尽管本发明是在电信环境的上下文中描述的,但是本发明还可应用于具有类似问题的其他应用。

[0037] 根据本发明,通过提供特别设计用于处理应用会话的资源适配器,通过将事件排队在与特定应用会话相关联的事件队列中,以及一次仅将一个任务调度用于处理来自该队列的事件,实现了事件同步。例如,事件可以排队在FIFO队列中,并且一次仅调度一个任务用于处理事件队列中的第一事件。

[0038] 图2示出了 JEE簇1,包括多个处理器3,每个处理器3通常包括若干容器,例如Enterprise Java Beans 5 (EJB)、HTTP服务程序7、会话发起协议(SIP)服务程序9或者其他执行单元13,如用于与传统系统通信的资源适配器。图2的架构还示出为包括会话资源适配器11,会话资源适配器11提供用于处理应用会话。

[0039] 资源适配器11包括一个或多个应用会话31至S n。每个应用会话31至Sn包括会话状态15以及事件队列17,事件队列17包含针对应用会话31至Sn中的特定应用会话要执行的事件的列表。作为示例,可以在电信系统中发起新呼叫时创建“应用会话”。由此,应用会话可以是与发起的呼叫相关联的服务(例如用于向呼叫方播放通告)的形式。此外,仅作为示例,“事件”是与呼叫期间出现的事件相关联的术语,例如是被叫方应答呼叫、被叫方在其电话上键入信息,等等。应该注意,这些仅是可以被视为会话或事件的示例,本发明旨在包括可以处理的任何形式的应用会话或事件,并且包括基于电信、SIP或网络的会话和事件。

[0040] 资源适配器11使用线程池19。线程池19可以在资源适配器11中提供,或者与系统中的其他组件共享。线程池19包括一个或多个处理线程^至t N,用于使得处理器3能够并行地执行多个任务。线程池19还包括任务队列21,任务队列21包含线程^至%要执行的任务的队列。每个处理线程&至%—次处理一个任务。注意,在典型的电信应用中,线程^至t N的数目通常比应用会话S ^ S n的数目少得多。

[0041] 如上所述,JEE平台配置为并行地尝试和执行与系统中定义的线程一样多的任务。这在下述情况下可能出现问题:如图2所示的JEE平台被用于处理电信服务,因为当多个线程^至t ,并行地执行来自特定应用会话S 1至S n的多个事件时,会话状态会变为无效。换言之,应用会话中的事件并发地更新相同的会话状态。

[0042] 如上面参考图1所述,确保事件同步的一种方法将是使用锁或旗语来创建特定应用会话31至5„的事件队列17上的互斥。如此,当一个线程、至%正在访问特定应用会话Sx的事件队列17时(即,处理下一个事件),所有其他线程必须等待直到所述一个线程结束。其缺点在于:使许多线程&至%等待,由此不是最佳地使用系统资源,这与JEE平台原理相冲突。

[0043] 前面还提到,确保事件同步的另一方法将是向每个应用会话51至Sn仅分配多个线程^至t ,中的一个线程。如此,每个应用会话S 1至S1Jc有用于处理来自其事件队列17的事件的专用线程。然而,这样的解决方案具有上述线程池机制的缺点,以及因此违背了支配所有资源(包括线程)必须被管理的重要JEE平台原理。该解决方案还具有以下缺点:使用比所需的线程多得多的线程^至tN,以及由此资源效率不高。

[0044] 图3示出了与本发明的实施例一起使用的架构。如图2示出的,JEE平台包括JEE簇1,JEE簇I具有多个处理器3。处理器3可以是相同的,尽管并不一定如此,以及处理器3可以分享JEE簇I的负载。处理器3可以包括一个或多个容器,例如Enterprise JavaBeans 5 (EJB) ,HTTP服务程序7、会话发起协议(SIP)服务程序9或者其他执行单元13,如用于与传统系统通信的其他资源适配器。如图2示出的,处理器还可以包括会话资源适配器11。

[0045] 在图3示出的架构中,用于处理应用会话的资源适配器11包括一个或多个应用会话S1M S no每个应用会话S1M S n包括会话状态15以及事件队列17,事件队列17包含针对应用会话31至Sn中的特定应用会话要执行的事件的集合。

[0046] 会话状态15和事件队列17存储在存储器中。根据一个实施例,会话状态可以保存在发起应用会话的(以及相关联的通信会话通常驻留的)处理器上的存储器中。使用这种处理器亲合关系(affinity)的形式具有以下优点:事件不需要不必要地(通过本地网络)从一个处理器路由到另一个处理器。而且,会话状态不需要在簇上分发,并且当所其驻留的处理器崩溃时,将自动停止存在会话状态。注意,在不偏离本发明的范围的情况下,会话状态和事件队列可以存储在其他地方。

[0047] 在图3示出的实施例中,资源适配器11还包括线程池19。线程池19包括一个或多个处理线程^至t N,用于使得处理器3能够并行地执行多个任务。线程池19还包括任务队列21,任务队列21包含处理线程^至t ,要执行的任务。每个处理线程t 1至t N—次处理一个任务。处理器可以具有任意数目的应用会话31至S n以及任意数目的线程t 1至t N。注意,线程池19可以专用于资源适配器11,或者可以与处理器3上的其他组件共享。另外,应该注意,尽管图3中线程池19示为资源适配器11的一部分,但是线程池19还可以驻留在系统中的其他地方,即资源适配器11共享驻留在其他地方的线程池19的使用。

[0048] 根据本发明,资源适配器11包括同步单元23,用于控制来自线程池的多个线程h至、如何处理多个应用会话S工至Sn中的事件。在另一个实施例中,每个应用会话可以包括用于防止竞态条件或者使得特定步骤能够以不可分割的方式执行的装置25,例如使用计数器25,如原子计数器,其将稍后在参考图7和8的应用中描述。

[0049] 如上面参考图2提到的,没有图3的同步单元23,JEE平台对线程池19中的处理线程^至t ,没有控制,这将导致线程池19使用尽可能多的可用线程11至t N来尽可能快地消耗应用会话31至多个事件队列17,因此存在并行地处理来自特定应用会话的事件队列17的多个事件的风险。

[0050] 然而,根据本发明的同步单元23配置为使得不是针对相关联的应用会话的事件队列17中的每个事件来调度任务。而是同步单元23配置为使得来自应用会话31至5„的事件队列17的仅一个事件分配有任务。例如,当事件存储在先入先出FIFO队列形式的事件队列17中时,同步单元23配置为控制资源适配器11的操作,使得仅事件队列17中的第一事件具有在与线程池19相关联的任务队列21中调度的任务。

[0051] 图4示出了本发明的实施例执行的步骤。在步骤401中,在与应用会话相关联的事件队列中存储一个或多个事件。如步骤402所示,仅针对特定应用会话的事件队列中的一个事件分配任务队列中的任务。下面描述可以如何实现该步骤的示例。

[0052] 当同步单元23确保来自事件队列17的仅一个事件分配有任务时,存在两种主要的情况。一个这样的情况涉及事件被添加到事件队列(即存储或插入到事件队列)时。另一个情况涉及从事件队列移除事件时(即来自事件队列的事件已经被线程处理之后)。

[0053] 图5示出了在事件队列中插入事件时执行的步骤。在步骤501,确定新事件要被插入特定应用会话的事件队列。在步骤503,同步单元23配置为首先在存储队列中存储该事件。随后,在步骤505,同步单元23配置为确定所插入的事件是否是事件队列中的第一事件。如果不是,则同步单元23不针对该特定事件来调度任务队列中的任务。然而,如果在步骤505中确定该事件是队列中的第一事件,则在步骤507中同步单元23针对该事件来调度任务队列中的任务。如此,应该理解,仅事件队列中的第一事件分配有任务队列中的任务。

[0054] 如本申请的后面描述的,优选地,将事件插入或存储到队列中的步骤(步骤503)和确定该事件是否是队列中的第一事件的步骤(步骤505)是不可分割的动作。换言之,这些步骤以下述方式执行:使得它们在系统中的任何其他线程不会对它们的执行有任何影响的情况下执行。

[0055] 图6示出了在处理来自事件队列的事件时执行的步骤以及后续的处理步骤。应该理解,如上面参考图5描述的,一个或多个事件已经插入事件队列。在步骤601,由线程处理分配有任务队列中的任务的事件,即事件队列中的第一事件。在处理该事件之后,在步骤603从事件队列中移除该事件。接着,在步骤605,同步单元23确定事件队列是否为空。如果在步骤605确定事件队列不为空,则在步骤607中同步单元23配置为针对为事件队列中的另一事件(例如,下一个事件)来调度新任务。图6示出的过程继续在步骤601中由另一线程(或相同线程)处理事件队列中的第一事件,直到在步骤605中确定事件队列中不再存在任何事件时为止,在该情况下处理结束,不调度新任务(即,因为事件队列中未留有要调度任务的任何事件)。

[0056] 从上文可以看出,仅在已经完全处理了第一事件之后,才可以处理来自特定事件队列的第二事件。具体地,仅在已经从队列中移除了第一事件之后(在该时刻,第二事件已经变成了第一事件),才可以处理第二事件。为了使得能够实现期望的功能,在事件已经被处理之后,从事件队列中移除该事件。

[0057] 如在本申请中稍后描述的,优选地,从事件队列中移除事件的步骤(步骤603)和确定事件队列是否为空的步骤(步骤605)是不可分割的动作。换言之,这些步骤以下述方式执行:使得它们在系统中的任何其他线程不会对它们的执行有任何影响的情况下执行。

[0058] 同步单元23的配置方式说明在线程处理的任务和事件处理例程之间进行区分,而所述线程处理的任务和事件处理例程通常情况下是相同的。

[0059] 根据图6,应该理解,根据3个不同步骤来调度任务。第一是:仅针对队列中的第一事件执行事件处理例程。然后将该事件从其队列中移除,接着执行检查以确定队列是否具有更多事件,如果有,则针对事件队列创建新任务,并且将该任务提供给线程池。

[0060] 因此,将观察到存在将任务调度给线程池的任务队列的两个不同位置。针对事件队列中“第一事件”的任务总是由插入事件的线程提供给线程池。针对“下一个事件”的任务总是由处理“第一事件”的线程提供给线程池。这可能导致竞态条件的出现,在竞态条件中两个线程均必须判定队列何时为空:执行插入的线程必须在其插入事件之前判定队列是否为空(即,因为如果队列为空,则需要调度任务);执行移除的线程必须在其已经移除事件之后判定队列是否为空(即,因为如果队列不为空则需要调度新任务)。

[0061] 有可能出现下述情况:在插入之前,事件队列包含一个事件(正被处理的事件),该事件在执行插入的线程可以插入其事件之前被执行处理的线程移除。因为插入线程没有看到空队列,所以其将不调度任务并且将不再处理任何事件。

[0062] 还可能出现下述情况:存在两个(或更多的)执行插入的线程,两者在插入事件之前都发现队列为空。因为两者都看到空队列,所以两者都将调度任务,从而将同时处理两个事件。

[0063] 上面描述的竞态条件可以通过将在事件队列中插入或存储事件的步骤和确定该事件是否是事件队列中的第一事件的步骤作为不可分割的动作执行来解决。类似地,竞态条件可以通过将从事件队列移除事件的步骤和确定该事件队列是否为空的步骤作为不可分割的动作执行来解决。这些不可分割的动作在图5和6中分别示出为步骤509和609。

[0064] 图7和8描述了为了避免上述竞态条件而具有原子计数器的本发明的另一实施例的操作。

[0065] 在该另一实施例中,可以通过对事件队列的原子计数器来实现不可分割的动作。执行处理的线程递减原子计数器,以及所有执行插入的线程递增原子计数器。因为递增和递减是返回先前值的原子的或不可分割的操作,线程可以安全地确定队列现在或过去是否为空。

[0066] 图7示出了在将事件插入事件队列时执行的步骤。在步骤701,确定新事件要被插入到特定应用会话的事件队列。在步骤703,同步单元23配置为首先在事件队列中存储事件。在步骤704,同步单元23配置为递增计数器,指示另一个事件已经被加入事件队列。在步骤706,同步单元23进一步配置为通过检查在递增计数值之前计数值是否为零(S卩,通过检查事件队列是否为空)来确定该事件是否是事件队列中的第一事件。如果确定该事件不是事件队列中的第一事件,即因为先前的计数值不为零,则同步单元23不针对该特定事件来调度任务队列中的任务。如果在步骤706中确定该事件是第一事件,即因为先前的计数器值是零,则同步单元23针对该事件来调度任务队列中的任务。如此,应该认识到,当将新事件插入事件队列时递增计数器提供了关于事件队列是否为空的清楚指示。

[0067] 图8示出了在处理来自事件队列的事件时执行的步骤以及后续处理步骤。应该理解,如上面参考图7所描述的,在事件队列中已经插入了一个或多个事件,以及因此计数器具有非零的值。在步骤801,处理在分配有任务队列中的任务的事件(即事件队列中的第一事件)。在处理之后,在步骤803,从事件队列中移除该事件。

[0068] 根据本发明的该实施例,在步骤804,同步单元配置为递减计数器25,计数器25指示事件队列是否为空。接着,在步骤806,同步单元确定事件队列是否为空,即通过检查计数器25的计数值来确定计数值是否为零。如果在步骤806确定事件队列不为空,则在步骤807同步单元23配置为针对事件队列中的另一事件(例如下一事件)来调度新任务。在新任务的轮次,在来自线程池的新线程中,该新任务执行与图8中描述的步骤相同的步骤。

[0069] 该过程继续,直到在步骤806中确定事件队列中不再有更多事件(即计数值为零)时为止,在该情况下处理结束。应该理解,在从事件队列中移除事件时递减计数器提供了关于事件队列是否为空的清楚指示。

[0070] 尽管已经将计数器描述为用于指示事件队列是否为空从而提供图5、6、7和8示出的步骤的不可分割性的实现的装置,但是应该理解,可以使用其他装置来提供该指示以及因此避免竞态条件,例如锁的使用,例如旗语。

[0071] 应该理解,上面描述的本发明具有以下优点:有效地使用线程池来处理来自多个队列的事件,不会不必要地阻止线程,而且同时并行处理尽可能多的事件(来自不同会话)。此外,所描述的系统无死锁和活锁。

[0072] 图9-12提供用于说明根据本发明如何同步事件的处理。在该示例中,描述了四个应用会话S 4,以及具有两个处理线程t1、t2的线程池。参考图9,应用会话S pSpS#S4示出为分别具有三个事件(ela,elb,elc)、两个事件(e2a,e2b)、一个事件(e3a)和两个事件。线程^和12示出为都是空闲的,并且已经针对应用会话S P &和S 3调度了任务。

[0073] 图10示出此时将发生的情况。线程h执行针对应用会话S ^勺任务,以及因此执行针对来自应用会话S1的事件队列的事件ela的事件处理例程。并行地,线程12执行针对应用会话&的任务,以及因此执行针对来自应用会话S2的事件队列的事件e2a的事件处理例程。立即从任务队列移除这些任务,在任务队列中仅留下针对应用会话&的任务。因为仅存在两个线程h、t2,所以针对应用会话S3的任务必须等待线程t P 12之一变为空闲。

[0074] 参考图11,假设某个其他线程现在将事件e4a插入针对应用会话S4的事件队列。因为针对应用会话S4的事件队列为空,同步单元在线程池的任务队列中调度针对应用会话S4的新任务。还假设此后线程〖2完成其对事件e2a的处理。然后线程〖2从应用会话52的事件队列中移除事件e2a。因为应用会话S2的事件队列不为空,所以同步单元在任务队列中调度针对应用会话S2的新任务。具体地,同步单元将针对来自应用会话S2的事件队列的下一个事件e2b的任务调度进任务队列。此外,因为线程t2现在空闲,因此线程12将开始执行针对应用会话&的任务,该任务是先前在任务队列中等待处理的(如上文参考图9讨论的),以及因此处理事件e3a。

[0075] 参考图12,现在假设线程h完成处理事件ela。线程t i由此从应用会话S i的事件队列中移除事件ela,因为应用会话S1的事件队列不为空,所以同步单元将针对来自应用会话S1的事件elb的新任务调度到任务队列。因为线程t i是空闲的,因此线程t i将开始执行针对应用会话S4的任务,从图11可以看出,针对应用会SS4的任务在任务队列中等待处理。如此,线程^处理事件e4a。假设不久之后,线程t2结束对来自应用会话S3的事件e3a的处理。线程t2从应用会话53的事件队列中移除事件e3a。因为应用会话S3的事件队列是空的,所以同步单元不提供针对应用会话S3的新任务。因为线程12是空闲的,所以线程12开始执行针对应用会话S 2的任务,由此处理来自应用会话S 2的事件e2b。

[0076] 图9-12描述的过程继续,其中同步单元确保在任何特定时刻每个队列仅一个事件被调度为任务队列中的任务。

[0077] 因此,上面描述的本发明实现了通过确保针对每个应用会话一次仅处理一个事件,使得能够提供事件同步。

[0078] 上述方法的使用大大简化了 JEE平台上电信服务的编写。该方法具有下述优点:解决了与事件同步相关联的问题,不会变得资源低效,同时允许管理所有资源。

[0079] 尽管上述实施例涉及使用其自己的线程池19的资源适配器11,但是资源适配器11还可以使用平台的线程池。这允许管理这些系统资源。

[0080] 此外,因为该框架独立于任何技术,所以可以与众多技术结合使用,例如EJB、服务程序以及其他资源适配器。

[0081] 注意,该方法优选地实现为使用JEE连接器架构(JCA)的资源适配器11。JCA被提供用于与传统系统通信,但是适合于实现在整个JEE平台上使用本发明的事件同步。

[0082] 本发明具有下述优点:不以任何方式改变与线程池相关联的控制软件一一线程池将如其标准行为一样继续尝试尽可能快地执行来自任务队列的任务。然而,本发明的会话资源适配器中的同步单元(在事件队列和线程池之间提供)管理每个事件队列最多仅一个任务。在传统的系统中,不存在这样的机制,并且每个事件将等于任务。

[0083] 注意,尽管提到了在计数值为零时计数器为空,但是应该理解可以选择任何值作为参考来指示计数器为空。

[0084] 注意,尽管流程图示出某些步骤以特定顺序执行,但是这些步骤中的一些步骤可以用不同的顺序来执行,而不会偏离所附权利要求定义的本发明的范围。

[0085] 应该注意,上述实施例用于说明本发明,而不是限制本发明,以及本领域技术人员将能够在不偏离所附权利要求的范围内设计出多种备选实施例。“包括”一词不排除存在与权利要求中列出的单元或步骤不同的单元或步骤,“一”或“一个”不排除多个,以及单个处理器或其他单元可以实现权利要求中记载的若干单元的功能。权利要求中的任何参考标记不应该解释为限制其范围。

Claims (18)

1.一种在电信处理平台中同步与应用会话相关联的事件的处理的方法,所述电信处理平台具有用于并行地处理多个任务的多个处理线程,所述任务存储在任务队列中,所述方法包括以下步骤: 在与应用会话相关联的事件队列中存储一个或多个事件,以及 向所述事件队列中的事件分配任务,使得一次仅向事件队列中的一个事件分配任务; 在处理所述事件之后,从事件队列中移除所述事件;以及 确定移除了已处理事件的事件队列是否为空,如果不为空,则向所述事件队列中的仅一个其他事件分配任务。
2.根据权利要求1所述的方法,还包括以下步骤: 通过将任务存储在任务队列中来调度所述任务。
3.根据权利要求1或2所述的方法,其中,被分配以任务的事件是所述事件队列中的第一事件。
4.根据权利要求1所述的方法,其中,向所述事件队列中的事件分配任务,使得一次仅向事件队列中的一个事件分配任务的步骤包括:在确定所存储的事件是事件队列中的第一事件之后,向所述事件队列中的事件分配任务,以及 其中,存储步骤和确定所存储的事件是事件队列中的第一事件的步骤作为不可分割的动作来执行。
5.根据权利要求1所述的方法,其中,移除步骤和确定移除了已处理事件的事件队列是否为空的步骤作为不可分割的动作来执行。
6.根据权利要求4或5所述的方法,还包括以下步骤:使用锁来执行所述不可分割的动作。
7.根据权利要求4或5所述的方法,还包括以下步骤:使用原子计数器来执行所述不可分割的动作。
8.根据权利要求7所述的方法,其中,所述原子计数器具有在相应的存储或移除步骤期间递增或递减的计数值,所述计数值指示所述事件队列是否为空或者事件是否是事件队列中的第一事件。
9.根据权利要求1或2中任一项所述的方法,其中,所述电信处理平台是Java企业版JEE处理平台。
10.一种在具有用于并行地处理多个任务的多个处理线程的电信处理平台中使用的资源适配器,所述任务存储在任务队列中,所述资源适配器包括: 一个或多个事件队列,每个事件队列与应用会话相关联,并且适于存储与对应应用会话相关联的事件;以及 同步单元,用于同步所述一个或多个事件队列中的事件的处理,所述同步单元配置为: 向所述事件队列中的事件分配任务,使得一次仅向事件队列中的一个事件分配任务; 在处理事件之后,从事件队列中移除已处理事件;以及 确定移除了已处理事件的事件队列是否为空,如果不为空,则向所述事件队列中的仅一个其他事件分配任务。
11.根据权利要求10所述的资源适配器,其中,所述同步单元还配置为:通过将任务存储在任务队列中来调度所述任务。
12.根据权利要求10或11所述的资源适配器,其中,被分配以任务的事件是所述事件队列中的第一事件。
13.根据权利要求10或11中任一项所述的资源适配器,还包括原子计数器,所述原子计数器具有指示对应事件队列是否为空的计数值。
14.根据权利要求13所述的资源适配器,其中,所述同步单元配置为在所述事件队列中存储事件时递增所述原子计数器的计数值。
15.根据权利要求13所述的资源适配器,其中,所述同步单元配置为在从所述事件队列中移除事件时递减所述原子计数器的计数值。
16.根据权利要求10或11中任一项所述的资源适配器,其中,所述事件队列包括先入先出队列。
17.根据权利要求10或11中任一项所述的资源适配器,其中,所述电信处理平台是Java企业版JEE处理平台。
18.—种JEE簇,包括根据权利要求10或11中任一项所述的资源适配器。
CN 201510419034 2009-07-28 2009-07-28 用于处理电信网络中的事件的设备和方法 CN104932946A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200980160635 CN102473107B (zh) 2009-07-28 2009-07-28 用于处理电信网络中的事件的设备和方法

Publications (1)

Publication Number Publication Date
CN104932946A true true CN104932946A (zh) 2015-09-23

Family

ID=54122558

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201510419034 CN104932946A (zh) 2009-07-28 2009-07-28 用于处理电信网络中的事件的设备和方法

Country Status (1)

Country Link
CN (1) CN104932946A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5938708A (en) * 1997-07-03 1999-08-17 Trw Inc. Vehicle computer system having a non-interrupt cooperative multi-tasking kernel and a method of controlling a plurality of vehicle processes
US20030158883A1 (en) * 2002-02-04 2003-08-21 Drudis Antoni N. Message processing
CN1517917A (zh) * 2003-01-27 2004-08-04 精工爱普生株式会社 在多线程环境中管理和持久结构相关联的事务处理的方法
US20050108718A1 (en) * 2003-11-19 2005-05-19 Alok Kumar Method for parallel processing of events within multiple event contexts maintaining ordered mutual exclusion
US7240097B2 (en) * 2001-12-12 2007-07-03 International Business Machines Corporation Method and system for preserving message order when parallel processing messages

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5938708A (en) * 1997-07-03 1999-08-17 Trw Inc. Vehicle computer system having a non-interrupt cooperative multi-tasking kernel and a method of controlling a plurality of vehicle processes
US7240097B2 (en) * 2001-12-12 2007-07-03 International Business Machines Corporation Method and system for preserving message order when parallel processing messages
US20030158883A1 (en) * 2002-02-04 2003-08-21 Drudis Antoni N. Message processing
CN1517917A (zh) * 2003-01-27 2004-08-04 精工爱普生株式会社 在多线程环境中管理和持久结构相关联的事务处理的方法
US20050108718A1 (en) * 2003-11-19 2005-05-19 Alok Kumar Method for parallel processing of events within multiple event contexts maintaining ordered mutual exclusion

Similar Documents

Publication Publication Date Title
US6052707A (en) Preemptive multi-tasking with cooperative groups of tasks
US6385638B1 (en) Processor resource distributor and method
Ramos-Thuel et al. On-line scheduling of hard deadline aperiodic tasks in fixed-priority systems
Koren et al. Skip-over: Algorithms and complexity for overloaded systems that allow skips
EP0806730A2 (en) Real time dispatcher
US20090064168A1 (en) System and Method for Hardware Based Dynamic Load Balancing of Message Passing Interface Tasks By Modifying Tasks
US6212573B1 (en) Mechanism for invoking and servicing multiplexed messages with low context switching overhead
US20070074150A1 (en) Queued asynchrounous remote function call dependency management
US20090019449A1 (en) Load balancing method and apparatus in symmetric multi-processor system
US6763520B1 (en) Fair assignment of processing resources to queued requests
US5812844A (en) Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
US6295602B1 (en) Event-driven serialization of access to shared resources
US20060230411A1 (en) Resource accessing with locking
US20050086030A1 (en) Software tool for synthesizing a real-time operating system
US6886041B2 (en) System for application server messaging with multiple dispatch pools
US20040100982A1 (en) Distributed real-time operating system
US20040117793A1 (en) Operating system architecture employing synchronous tasks
US20080288949A1 (en) Interprocess Resource-Based Dynamic Scheduling System and Method
US20060206887A1 (en) Adaptive partitioning for operating system
US5768572A (en) Timer state control optimized for frequent cancel and reset operations
US20020087618A1 (en) System and method for utilizing dispatch queues in a multiprocessor data processing system
US6421701B1 (en) Method and system for replication support in a remote method invocation system
US20050125789A1 (en) Executing processes in a multiprocessing environment
JPH07141305A (ja) 並列計算機の実行制御方法
US20040039884A1 (en) System and method for managing the memory in a computer system

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination