CN102473107A - 用于处理电信网络中的事件的设备和方法 - Google Patents
用于处理电信网络中的事件的设备和方法 Download PDFInfo
- Publication number
- CN102473107A CN102473107A CN2009801606355A CN200980160635A CN102473107A CN 102473107 A CN102473107 A CN 102473107A CN 2009801606355 A CN2009801606355 A CN 2009801606355A CN 200980160635 A CN200980160635 A CN 200980160635A CN 102473107 A CN102473107 A CN 102473107A
- Authority
- CN
- China
- Prior art keywords
- incident
- task
- event queue
- queue
- event
- 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
Links
Images
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/546—Message passing systems or structures, e.g. queues
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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
-
- 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/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
- Multi Processors (AREA)
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
技术领域
本发明涉及用于处理电信网络中的事件的设备和方法,并且具体地涉及诸如Java企业版(JEE)处理平台之类的电信处理平台中用于同步与应用会话相关联的事件的处理的方法和设备。
背景技术
在电信网络中,为了提供除常规电话呼叫之外的额外功能,存在许多应用和服务。这些应用和服务通常运行在连接到电信网络的不同服务器上。这些服务器通常运行在与电信网络自身不同的平台上。
一种这样的平台是Java企业版(JEE)平台,其是标准Java平台的发展。JEE是针对Java编程语言中的服务器编程的广泛使用的平台。JEE平台与标准Java平台的不同在于其添加了主要基于运行在应用服务器上的模块化组件来部署容错的分布式多层Java软件的功能的库。JEE平台的特征在于其允许多个处理线程并行地运行,由此提高任务执行的吞吐量。
尽管JEE平台适合于许多应用,但是如下所述,对于某些电信服务可能是不可行的。
电信协议的处理通常要求使用与应用会话相关联的状态机。对于这些状态机,必须一次仅接收一个消息,使得不会破坏状态。因此,JEE平台不提供用于一次一个地处理特定应用会话上的消息的装置。相反,JEE平台通常会启动与要处理的消息一样多的并行线程。
图1示出了典型的JEE簇1,包括多个处理器3。处理器3可以是相同的,并且分享JEE簇1的负载。当用作电信处理平台时,每个处理器3通常将包括若干容器,例如Enterprise Java Beans 5(EJB)、HTTP服务程序(servlet)7、会话发起协议(SIP)服务程序9或者其他执行单元13,如用于与传统系统通信的其他资源适配器。
图1示出的架构包括线程池19。线程池19包括一个或多个处理线程t1至tN,用于使得处理器3能够并行地执行多任务。线程池19还包括任务队列21,任务队列21包含线程t1至tN要执行的任务的集合。每个处理线程t1至tN一次执行一个任务。
如上面提到的,JEE平台配置为并行地尝试和执行与系统中定义的线程一样多的任务。这在下述情况下可能出现问题:如图1所示的JEE平台被用于处理电信应用和服务,其中当多个线程t1至tN并行地执行与应用会话相关联的多个事件时,会话状态变为无效。换言之,应用会话中的事件并发地更新相同的会话状态。
确保事件同步的一种方法是使用锁或旗语(semaphore)来防止应用会话中的事件并发地更新相同的会话状态。如此,当一个线程t1至tN在处理与特定应用会话相关联的事件时,所有其他线程必须等待直到所述一个线程结束。其缺点在于:使许多线程t1至tN等待,这不是对系统资源的最佳使用,并且通常与JEE平台原理相冲突。
确保事件同步的另一方法是向每个应用会话仅分配所述多个线程t1至tN中的一个线程。如此,每个应用会话具有用于处理其事件的专用线程。然而,这样的解决方案具有上述线程池机制的缺点,以及因此违背了支配所有资源(包括线程)必须被管理的重要JEE平台原理。该解决方案还具有以下缺点:使用比所需的线程多得多的线程t1至tN,由此资源效率不高。
根据上文应该理解,在不损害资源效率的情况下实现事件同步存在问题。
发明内容
本发明的目的在于提供一种用于以资源高效的方式同步在电信网络中使用的处理平台中的事件处理的方法和设备。
根据本发明的一个方面,提供了一种在电信处理平台中同步与应用会话相关联的事件的处理的方法,其中所述电信处理平台具有用于并行地处理多个任务的多个处理线程,以及其中所述任务存储在任务队列中。所述方法包括以下步骤:在与特定应用会话相关联的事件队列中存储一个或多个事件,以及向特定应用会话的事件队列中的仅一个事件分配所述任务队列中的任务。
本发明具有以下优点:避免了并发地处理事件,因为特定应用会话的事件队列中仅一个事件分配有任务。本发明还具有以下优点:不需要对现有线程池本身执行任务队列中的任务的处理的方式进行任何修改。
在事件队列中存储事件可以包括以下步骤:确定所述事件是否是事件队列中的第一事件,如果是,则向该特定事件分配任务队列中的任务。
从事件队列中移除已处理的事件可以包括以下步骤:确定事件队列是否为空,如果不为空,则向事件队列中的另一事件分配任务队列中的任务。该分配任务的步骤可以包括向事件队列中的下一个事件分配任务的步骤。
在事件队列中存储事件以及确定所述事件是否是事件队列中的第一事件的步骤可以作为不可分割的动作来执行。这具有避免竞态条件的优点。
从事件队列中移除事件以及确定事件队列是否为空的步骤可以作为不可分割的动作来执行。这也具有避免竞态条件的优点。
根据本发明的一个方面,可以提供锁,以执行所述不可分割的动作。备选地,可以使用原子计数器来执行所述不可分割的动作。该原子计数器具有在相应的存储或移除步骤期间递增或递减的计数值,所述计数值指示事件队列是否为空,或者事件是否是事件队列中的第一事件。
所述方法可以用在具有Java企业版(JEE)处理平台的电信处理平台中。
根据本发明的另一方面,提供了一种在具有用于并行地处理多个任务的多个处理线程的电信处理平台中使用的资源适配器,所述任务存储在任务队列中。所述资源适配器包括一个或多个事件队列。每个事件队列与应用会话相关联,并且适于存储与其对应应用会话相关联的一个或多个事件。所述资源适配器包括:同步单元,用于同步事件队列中的事件的处理,所述同步单元配置为向事件队列中的仅一个事件分配任务队列中的任务。
根据本发明的另一方面,提供了一种JEE簇,所述JEE簇包括如所附权利要求所述的资源适配器,或者适于执行如所附权利要求所述的方法。
本发明具有如下优点:有效地使用线程池来处理来自多个队列的事件,不会不必要地阻止线程,而且同时并行处理尽可能多的事件(来自不同应用会话)。此外,本发明无死锁和活锁。
附图说明
为了更好地理解本发明,以及更清楚地示出如何实现本发明,现在将参考作为示例的附图,在附图中:
图1示出了已知JEE簇的典型架构;
图2示出了具有用于处理应用会话的资源适配器的JEE架构;
图3示出了根据本发明的实施例的资源适配器;
图4示出了根据本发明的实施例的方法中执行的步骤;
图5示出了根据本发明的一个方面的方法中执行的步骤;
图6示出了根据本发明的另一方面执行的步骤;
图7示出了根据本发明的另一方面执行的步骤;
图8示出了根据本发明的另一方面的执行的步骤;以及
图9至12提供了根据本发明可以如何处理多个事件的示例。
具体实施方式
下面将在JEE平台的上下文中描述的本发明。然而,应该理解,本发明还可应用于与线程池结合来执行对事件和会话的处理的平台的其他形式,即通过利用事件处理的任何会话框架。此外,尽管本发明是在电信环境的上下文中描述的,但是本发明还可应用于具有类似问题的其他应用。
根据本发明,通过提供特别设计用于处理应用会话的资源适配器,通过将事件排队在与特定应用会话相关联的事件队列中,以及一次仅将一个任务调度用于处理来自该队列的事件,实现了事件同步。例如,事件可以排队在FIFO队列中,并且一次仅调度一个任务用于处理事件队列中的第一事件。
图2示出了JEE簇1,包括多个处理器3,每个处理器3通常包括若干容器,例如Enterprise Java Beans 5(EJB)、HTTP服务程序7、会话发起协议(SIP)服务程序9或者其他执行单元13,如用于与传统系统通信的资源适配器。图2的架构还示出为包括会话资源适配器11,会话资源适配器11提供用于处理应用会话。
资源适配器11包括一个或多个应用会话S1至Sn。每个应用会话S1至Sn包括会话状态15以及事件队列17,事件队列17包含针对应用会话S1至Sn中的特定应用会话要执行的事件的列表。作为示例,可以在电信系统中发起新呼叫时创建“应用会话”。由此,应用会话可以是与发起的呼叫相关联的服务(例如用于向呼叫方播放通告)的形式。此外,仅作为示例,“事件”是与呼叫期间出现的事件相关联的术语,例如是被叫方应答呼叫、被叫方在其电话上键入信息,等等。应该注意,这些仅是可以被视为会话或事件的示例,本发明旨在包括可以处理的任何形式的应用会话或事件,并且包括基于电信、SIP或网络的会话和事件。
资源适配器11使用线程池19。线程池19可以在资源适配器11中提供,或者与系统中的其他组件共享。线程池19包括一个或多个处理线程t1至tN,用于使得处理器3能够并行地执行多个任务。线程池19还包括任务队列21,任务队列21包含线程t1至tN要执行的任务的队列。每个处理线程t1至tN一次处理一个任务。注意,在典型的电信应用中,线程t1至tN的数目通常比应用会话S1至Sn的数目少得多。
如上所述,JEE平台配置为并行地尝试和执行与系统中定义的线程一样多的任务。这在下述情况下可能出现问题:如图2所示的JEE平台被用于处理电信服务,因为当多个线程t1至tN并行地执行来自特定应用会话S1至Sn的多个事件时,会话状态会变为无效。换言之,应用会话中的事件并发地更新相同的会话状态。
如上面参考图1所述,确保事件同步的一种方法将是使用锁或旗语来创建特定应用会话S1至Sn的事件队列17上的互斥。如此,当一个线程t1至tN正在访问特定应用会话Sx的事件队列17时(即,处理下一个事件),所有其他线程必须等待直到所述一个线程结束。其缺点在于:使许多线程t1至tN等待,由此不是最佳地使用系统资源,这与JEE平台原理相冲突。
前面还提到,确保事件同步的另一方法将是向每个应用会话S1至Sn仅分配多个线程t1至tN中的一个线程。如此,每个应用会话S1至Sn具有用于处理来自其事件队列17的事件的专用线程。然而,这样的解决方案具有上述线程池机制的缺点,以及因此违背了支配所有资源(包括线程)必须被管理的重要JEE平台原理。该解决方案还具有以下缺点:使用比所需的线程多得多的线程t1至tN,以及由此资源效率不高。
图3示出了与本发明的实施例一起使用的架构。如图2示出的,JEE平台包括JEE簇1,JEE簇1具有多个处理器3。处理器3可以是相同的,尽管并不一定如此,以及处理器3可以分享JEE簇1的负载。处理器3可以包括一个或多个容器,例如Enterprise Java Beans 5(EJB)、HTTP服务程序7、会话发起协议(SIP)服务程序9或者其他执行单元13,如用于与传统系统通信的其他资源适配器。如图2示出的,处理器还可以包括会话资源适配器11。
在图3示出的架构中,用于处理应用会话的资源适配器11包括一个或多个应用会话S1至Sn。每个应用会话S1至Sn包括会话状态15以及事件队列17,事件队列17包含针对应用会话S1至Sn中的特定应用会话要执行的事件的集合。
会话状态15和事件队列17存储在存储器中。根据一个实施例,会话状态可以保存在发起应用会话的(以及相关联的通信会话通常驻留的)处理器上的存储器中。使用这种处理器亲合关系(affinity)的形式具有以下优点:事件不需要不必要地(通过本地网络)从一个处理器路由到另一个处理器。而且,会话状态不需要在簇上分发,并且当所其驻留的处理器崩溃时,将自动停止存在会话状态。注意,在不偏离本发明的范围的情况下,会话状态和事件队列可以存储在其他地方。
在图3示出的实施例中,资源适配器11还包括线程池19。线程池19包括一个或多个处理线程t1至tN,用于使得处理器3能够并行地执行多个任务。线程池19还包括任务队列21,任务队列21包含处理线程t1至tN要执行的任务。每个处理线程t1至tN一次处理一个任务。处理器可以具有任意数目的应用会话S1至Sn以及任意数目的线程t1至tN。注意,线程池19可以专用于资源适配器11,或者可以与处理器3上的其他组件共享。另外,应该注意,尽管图3中线程池19示为资源适配器11的一部分,但是线程池19还可以驻留在系统中的其他地方,即资源适配器11共享驻留在其他地方的线程池19的使用。
根据本发明,资源适配器11包括同步单元23,用于控制来自线程池的多个线程t1至tN如何处理多个应用会话S1至Sn中的事件。在另一个实施例中,每个应用会话可以包括用于防止竞态条件或者使得特定步骤能够以不可分割的方式执行的装置25,例如使用计数器25,如原子计数器,其将稍后在参考图7和8的应用中描述。
如上面参考图2提到的,没有图3的同步单元23,JEE平台对线程池19中的处理线程t1至tN没有控制,这将导致线程池19使用尽可能多的可用线程t1至tN来尽可能快地消耗应用会话S1至Sn的多个事件队列17,因此存在并行地处理来自特定应用会话的事件队列17的多个事件的风险。
然而,根据本发明的同步单元23配置为使得不是针对相关联的应用会话的事件队列17中的每个事件来调度任务。而是同步单元23配置为使得来自应用会话S1至Sn的事件队列17的仅一个事件分配有任务。例如,当事件存储在先入先出FIFO队列形式的事件队列17中时,同步单元23配置为控制资源适配器11的操作,使得仅事件队列17中的第一事件具有在与线程池19相关联的任务队列21中调度的任务。
图4示出了本发明的实施例执行的步骤。在步骤401中,在与应用会话相关联的事件队列中存储一个或多个事件。如步骤402所示,仅针对特定应用会话的事件队列中的一个事件分配任务队列中的任务。下面描述可以如何实现该步骤的示例。
当同步单元23确保来自事件队列17的仅一个事件分配有任务时,存在两种主要的情况。一个这样的情况涉及事件被添加到事件队列(即存储或插入到事件队列)时。另一个情况涉及从事件队列移除事件时(即来自事件队列的事件已经被线程处理之后)。
图5示出了在事件队列中插入事件时执行的步骤。在步骤501,确定新事件要被插入特定应用会话的事件队列。在步骤503,同步单元23配置为首先在存储队列中存储该事件。随后,在步骤505,同步单元23配置为确定所插入的事件是否是事件队列中的第一事件。如果不是,则同步单元23不针对该特定事件来调度任务队列中的任务。然而,如果在步骤505中确定该事件是队列中的第一事件,则在步骤507中同步单元23针对该事件来调度任务队列中的任务。如此,应该理解,仅事件队列中的第一事件分配有任务队列中的任务。
如本申请的后面描述的,优选地,将事件插入或存储到队列中的步骤(步骤503)和确定该事件是否是队列中的第一事件的步骤(步骤505)是不可分割的动作。换言之,这些步骤以下述方式执行:使得它们在系统中的任何其他线程不会对它们的执行有任何影响的情况下执行。
图6示出了在处理来自事件队列的事件时执行的步骤以及后续的处理步骤。应该理解,如上面参考图5描述的,一个或多个事件已经插入事件队列。在步骤601,由线程处理分配有任务队列中的任务的事件,即事件队列中的第一事件。在处理该事件之后,在步骤603从事件队列中移除该事件。接着,在步骤605,同步单元23确定事件队列是否为空。如果在步骤605确定事件队列不为空,则在步骤607中同步单元23配置为针对为事件队列中的另一事件(例如,下一个事件)来调度新任务。图6示出的过程继续在步骤601中由另一线程(或相同线程)处理事件队列中的第一事件,直到在步骤605中确定事件队列中不再存在任何事件时为止,在该情况下处理结束,不调度新任务(即,因为事件队列中未留有要调度任务的任何事件)。
从上文可以看出,仅在已经完全处理了第一事件之后,才可以处理来自特定事件队列的第二事件。具体地,仅在已经从队列中移除了第一事件之后(在该时刻,第二事件已经变成了第一事件),才可以处理第二事件。为了使得能够实现期望的功能,在事件已经被处理之后,从事件队列中移除该事件。
如在本申请中稍后描述的,优选地,从事件队列中移除事件的步骤(步骤603)和确定事件队列是否为空的步骤(步骤605)是不可分割的动作。换言之,这些步骤以下述方式执行:使得它们在系统中的任何其他线程不会对它们的执行有任何影响的情况下执行。
同步单元23的配置方式说明在线程处理的任务和事件处理例程之间进行区分,而所述线程处理的任务和事件处理例程通常情况下是相同的。
根据图6,应该理解,根据3个不同步骤来调度任务。第一是:仅针对队列中的第一事件执行事件处理例程。然后将该事件从其队列中移除,接着执行检查以确定队列是否具有更多事件,如果有,则针对事件队列创建新任务,并且将该任务提供给线程池。
因此,将观察到存在将任务调度给线程池的任务队列的两个不同位置。针对事件队列中“第一事件”的任务总是由插入事件的线程提供给线程池。针对“下一个事件”的任务总是由处理“第一事件”的线程提供给线程池。这可能导致竞态条件的出现,在竞态条件中两个线程均必须判定队列何时为空:执行插入的线程必须在其插入事件之前判定队列是否为空(即,因为如果队列为空,则需要调度任务);执行移除的线程必须在其已经移除事件之后判定队列是否为空(即,因为如果队列不为空则需要调度新任务)。
有可能出现下述情况:在插入之前,事件队列包含一个事件(正被处理的事件),该事件在执行插入的线程可以插入其事件之前被执行处理的线程移除。因为插入线程没有看到空队列,所以其将不调度任务并且将不再处理任何事件。
还可能出现下述情况:存在两个(或更多的)执行插入的线程,两者在插入事件之前都发现队列为空。因为两者都看到空队列,所以两者都将调度任务,从而将同时处理两个事件。
上面描述的竞态条件可以通过将在事件队列中插入或存储事件的步骤和确定该事件是否是事件队列中的第一事件的步骤作为不可分割的动作执行来解决。类似地,竞态条件可以通过将从事件队列移除事件的步骤和确定该事件队列是否为空的步骤作为不可分割的动作执行来解决。这些不可分割的动作在图5和6中分别示出为步骤509和609。
图7和8描述了为了避免上述竞态条件而具有原子计数器的本发明的另一实施例的操作。
在该另一实施例中,可以通过对事件队列的原子计数器来实现不可分割的动作。执行处理的线程递减原子计数器,以及所有执行插入的线程递增原子计数器。因为递增和递减是返回先前值的原子的或不可分割的操作,线程可以安全地确定队列现在或过去是否为空。
图7示出了在将事件插入事件队列时执行的步骤。在步骤701,确定新事件要被插入到特定应用会话的事件队列。在步骤703,同步单元23配置为首先在事件队列中存储事件。在步骤704,同步单元23配置为递增计数器,指示另一个事件已经被加入事件队列。在步骤706,同步单元23进一步配置为通过检查在递增计数值之前计数值是否为零(即,通过检查事件队列是否为空)来确定该事件是否是事件队列中的第一事件。如果确定该事件不是事件队列中的第一事件,即因为先前的计数值不为零,则同步单元23不针对该特定事件来调度任务队列中的任务。如果在步骤706中确定该事件是第一事件,即因为先前的计数器值是零,则同步单元23针对该事件来调度任务队列中的任务。如此,应该认识到,当将新事件插入事件队列时递增计数器提供了关于事件队列是否为空的清楚指示。
图8示出了在处理来自事件队列的事件时执行的步骤以及后续处理步骤。应该理解,如上面参考图7所描述的,在事件队列中已经插入了一个或多个事件,以及因此计数器具有非零的值。在步骤801,处理在分配有任务队列中的任务的事件(即事件队列中的第一事件)。在处理之后,在步骤803,从事件队列中移除该事件。
根据本发明的该实施例,在步骤804,同步单元配置为递减计数器25,计数器25指示事件队列是否为空。接着,在步骤806,同步单元确定事件队列是否为空,即通过检查计数器25的计数值来确定计数值是否为零。如果在步骤806确定事件队列不为空,则在步骤807同步单元23配置为针对事件队列中的另一事件(例如下一事件)来调度新任务。在新任务的轮次,在来自线程池的新线程中,该新任务执行与图8中描述的步骤相同的步骤。
该过程继续,直到在步骤806中确定事件队列中不再有更多事件(即计数值为零)时为止,在该情况下处理结束。应该理解,在从事件队列中移除事件时递减计数器提供了关于事件队列是否为空的清楚指示。
尽管已经将计数器描述为用于指示事件队列是否为空从而提供图5、6、7和8示出的步骤的不可分割性的实现的装置,但是应该理解,可以使用其他装置来提供该指示以及因此避免竞态条件,例如锁的使用,例如旗语。
应该理解,上面描述的本发明具有以下优点:有效地使用线程池来处理来自多个队列的事件,不会不必要地阻止线程,而且同时并行处理尽可能多的事件(来自不同会话)。此外,所描述的系统无死锁和活锁。
图9-12提供用于说明根据本发明如何同步事件的处理。在该示例中,描述了四个应用会话S1至S4,以及具有两个处理线程t1、t2的线程池。参考图9,应用会话S1、S2、S3和S4示出为分别具有三个事件(e1a,e1b,e1c)、两个事件(e2a,e2b)、一个事件(e3a)和两个事件。线程t1和t2示出为都是空闲的,并且已经针对应用会话S1、S2和S3调度了任务。
图10示出此时将发生的情况。线程t1执行针对应用会话S1的任务,以及因此执行针对来自应用会话S1的事件队列的事件e1a的事件处理例程。并行地,线程t2执行针对应用会话S2的任务,以及因此执行针对来自应用会话S2的事件队列的事件e2a的事件处理例程。立即从任务队列移除这些任务,在任务队列中仅留下针对应用会话S3的任务。因为仅存在两个线程t1、t2,所以针对应用会话S3的任务必须等待线程t1、t2之一变为空闲。
参考图11,假设某个其他线程现在将事件e4a插入针对应用会话S4的事件队列。因为针对应用会话S4的事件队列为空,同步单元在线程池的任务队列中调度针对应用会话S4的新任务。还假设此后线程t2完成其对事件e2a的处理。然后线程t2从应用会话S2的事件队列中移除事件e2a。因为应用会话S2的事件队列不为空,所以同步单元在任务队列中调度针对应用会话S2的新任务。具体地,同步单元将针对来自应用会话S2的事件队列的下一个事件e2b的任务调度进任务队列。此外,因为线程t2现在空闲,因此线程t2将开始执行针对应用会话S3的任务,该任务是先前在任务队列中等待处理的(如上文参考图9讨论的),以及因此处理事件e3a。
参考图12,现在假设线程t1完成处理事件e1a。线程t1由此从应用会话S1的事件队列中移除事件e1a,因为应用会话S1的事件队列不为空,所以同步单元将针对来自应用会话S1的事件e1b的新任务调度到任务队列。因为线程t1是空闲的,因此线程t1将开始执行针对应用会话S4的任务,从图11可以看出,针对应用会话S4的任务在任务队列中等待处理。如此,线程t1处理事件e4a。假设不久之后,线程t2结束对来自应用会话S3的事件e3a的处理。线程t2从应用会话S3的事件队列中移除事件e3a。因为应用会话S3的事件队列是空的,所以同步单元不提供针对应用会话S3的新任务。因为线程t2是空闲的,所以线程t2开始执行针对应用会话S2的任务,由此处理来自应用会话S2的事件e2b。
图9-12描述的过程继续,其中同步单元确保在任何特定时刻每个队列仅一个事件被调度为任务队列中的任务。
因此,上面描述的本发明实现了通过确保针对每个应用会话一次仅处理一个事件,使得能够提供事件同步。
上述方法的使用大大简化了JEE平台上电信服务的编写。该方法具有下述优点:解决了与事件同步相关联的问题,不会变得资源低效,同时允许管理所有资源。
尽管上述实施例涉及使用其自己的线程池19的资源适配器11,但是资源适配器11还可以使用平台的线程池。这允许管理这些系统资源。
此外,因为该框架独立于任何技术,所以可以与众多技术结合使用,例如EJB、服务程序以及其他资源适配器。
注意,该方法优选地实现为使用JEE连接器架构(JCA)的资源适配器11。JCA被提供用于与传统系统通信,但是适合于实现在整个JEE平台上使用本发明的事件同步。
本发明具有下述优点:不以任何方式改变与线程池相关联的控制软件——线程池将如其标准行为一样继续尝试尽可能快地执行来自任务队列的任务。然而,本发明的会话资源适配器中的同步单元(在事件队列和线程池之间提供)管理每个事件队列最多仅一个任务。在传统的系统中,不存在这样的机制,并且每个事件将等于任务。
注意,尽管提到了在计数值为零时计数器为空,但是应该理解可以选择任何值作为参考来指示计数器为空。
注意,尽管流程图示出某些步骤以特定顺序执行,但是这些步骤中的一些步骤可以用不同的顺序来执行,而不会偏离所附权利要求定义的本发明的范围。
应该注意,上述实施例用于说明本发明,而不是限制本发明,以及本领域技术人员将能够在不偏离所附权利要求的范围内设计出多种备选实施例。“包括”一词不排除存在与权利要求中列出的单元或步骤不同的单元或步骤,“一”或“一个”不排除多个,以及单个处理器或其他单元可以实现权利要求中记载的若干单元的功能。权利要求中的任何参考标记不应该解释为限制其范围。
Claims (20)
1.一种在电信处理平台中同步与应用会话相关联的事件的处理的方法,所述电信处理平台具有用于并行地处理多个任务的多个处理线程,所述任务存储在任务队列中,所述方法包括以下步骤:
在与特定应用会话相关联的事件队列中存储一个或多个事件,以及
向特定应用会话的事件队列中的仅一个事件分配所述任务队列中的任务。
2.根据权利要求1中所述的方法,其中,在事件队列中存储事件的步骤包括以下步骤:
确定所述事件是否是所述事件队列中的第一事件,如果是,则向该特定事件分配所述任务队列中的任务。
3.根据权利要求1或2所述的方法,还包括从事件队列中移除已处理的事件的步骤,其中,从事件队列中移除已处理的事件的步骤包括以下步骤:
确定所述事件队列是否为空,如果不为空,则向所述事件队列中的另一事件分配所述任务队列中的任务。
4.根据权利要求3所述的方法,其中,分配任务的步骤包括以下步骤:向事件队列中的下一个事件分配任务。
5.根据权利要求2所述的方法,其中,存储步骤和确定步骤作为不可分割的动作来执行。
6.根据权利要求3或4所述的方法,其中,移除步骤和确定步骤作为不可分割的动作来执行。
7.根据权利要求5或6所述的方法,还包括以下步骤:使用锁来执行所述不可分割的动作。
8.根据权利要求5或6所述的方法,还包括以下步骤:使用原子计数器来执行所述不可分割的动作。
9.根据权利要求8所述的方法,其中,所述原子计数器具有在相应的存储或移除步骤期间递增或递减的计数值,所述计数值指示所述事件队列是否为空或者事件是否是事件队列中的第一事件。
10.根据权利要求1至9中任一项所述的方法,其中,所述电信处理平台是Java企业版JEE处理平台。
11.一种在具有用于并行地处理多个任务的多个处理线程的电信处理平台中使用的资源适配器,所述任务存储在任务队列中,所述资源适配器包括:
一个或多个事件队列,每个事件队列与应用会话相关联,并且适于存储与其对应应用会话相关联的一个或多个事件;以及
同步单元,用于同步事件队列中的事件的处理,所述同步单元配置为向所述事件队列中的仅一个事件分配所述任务队列中的任务。
12.根据权利要求11所述的资源适配器,其中,所述同步单元配置为:在将事件存储到事件队列中时,确定所述事件是否是要插入事件队列的第一事件;如果是,则向该特定事件分配所述任务队列中的任务。
13.根据权利要求11或12所述的资源适配器,其中,所述同步单元配置为:在从事件队列中移除事件时,确定所述事件队列是否为空,如果不为空,则向所述事件队列中的另一事件分配所述任务队列中的任务。
14.根据权利要求13所述的资源适配器,其中,所述同步单元适于向所述事件队列中的下一个事件分配任务。
15.根据权利要求11至14中任一项所述的资源适配器,还包括原子计数器,所述原子计数器具有指示对应事件队列是否为空的计数值。
16.根据权利要求15所述的资源适配器,其中,所述同步单元配置为在所述事件队列中存储事件时递增所述原子计数器的计数值。
17.根据权利要求15或16所述的资源适配器,其中,所述同步单元配置为在从所述事件队列中移除事件时递减所述原子计数器的计数值。
18.根据权利要求11至17中任一项所述的资源适配器,其中,所述事件队列包括先入先出队列。
19.根据权利要求11至18中任一项所述的资源适配器,其中,所述电信处理平台是Java企业版JEE处理平台。
20.一种JEE簇,包括根据权利要求11至19中任一项所述的资源适配器,或者适于执行权利要求1至10中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510419034.9A CN104932946B (zh) | 2009-07-28 | 2009-07-28 | 用于处理电信网络中的事件的设备和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2009/059753 WO2011012157A1 (en) | 2009-07-28 | 2009-07-28 | Apparatus and method for processing events in a telecommunications network |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510419034.9A Division CN104932946B (zh) | 2009-07-28 | 2009-07-28 | 用于处理电信网络中的事件的设备和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102473107A true CN102473107A (zh) | 2012-05-23 |
CN102473107B CN102473107B (zh) | 2015-08-19 |
Family
ID=42021635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980160635.5A Active CN102473107B (zh) | 2009-07-28 | 2009-07-28 | 用于处理电信网络中的事件的设备和方法 |
Country Status (11)
Country | Link |
---|---|
US (1) | US9459941B2 (zh) |
EP (1) | EP2460072B1 (zh) |
JP (1) | JP5756801B2 (zh) |
CN (1) | CN102473107B (zh) |
BR (1) | BR112012001629B1 (zh) |
CA (1) | CA2769169C (zh) |
DK (1) | DK2460072T3 (zh) |
ES (1) | ES2719489T3 (zh) |
IN (1) | IN2012DN00677A (zh) |
MY (1) | MY163545A (zh) |
WO (1) | WO2011012157A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105303307A (zh) * | 2015-10-16 | 2016-02-03 | 北京京北方信息技术有限公司 | 一种分配工作任务的方法及装置 |
CN110309230A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于区块链的区块生成方法、装置、设备及存储介质 |
CN111651865A (zh) * | 2020-05-12 | 2020-09-11 | 北京华如科技股份有限公司 | 一种并行离散事件的事件集中发射式仿真执行方法及系统 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262564A (zh) * | 2011-08-16 | 2011-11-30 | 天津市天祥世联网络科技有限公司 | 视频监控平台系统的线程池结构及实现方法 |
US9069609B2 (en) * | 2012-01-18 | 2015-06-30 | Nvidia Corporation | Scheduling and execution of compute tasks |
US9256915B2 (en) | 2012-01-27 | 2016-02-09 | Qualcomm Incorporated | Graphics processing unit buffer management |
CN102831017B (zh) * | 2012-08-31 | 2014-09-10 | 河海大学 | 一种高效分布式并行鉴权系统 |
US9672011B2 (en) * | 2012-11-07 | 2017-06-06 | Oracle International Corporation | System and method for composing a telecommunication application by orchestrating application components |
JP5775925B2 (ja) * | 2013-12-20 | 2015-09-09 | エヌ・ティ・ティ・コムウェア株式会社 | 負荷分散装置、負荷分散方法及び負荷分散プログラム |
CN105991416B (zh) * | 2015-02-15 | 2019-05-31 | 无锡北邮感知技术产业研究院有限公司 | 一种消息传递方法及消息传递中间件 |
JP2015143998A (ja) * | 2015-02-27 | 2015-08-06 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | 電気通信ネットワークにおけるイベントを処理するための装置および方法 |
US20170031724A1 (en) * | 2015-07-31 | 2017-02-02 | Futurewei Technologies, Inc. | Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks |
CN105872676A (zh) * | 2015-12-21 | 2016-08-17 | 乐视致新电子科技(天津)有限公司 | 操作指令的执行方法及装置 |
US10592307B2 (en) * | 2016-12-13 | 2020-03-17 | Salesforce.Com, Inc. | Multi user threaded executor |
CN107885590A (zh) | 2017-11-30 | 2018-04-06 | 百度在线网络技术(北京)有限公司 | 用于智能设备的任务处理方法和装置 |
CN110795222B (zh) * | 2019-10-25 | 2022-03-22 | 北京浪潮数据技术有限公司 | 一种多线程任务调度方法、装置、设备及可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030110230A1 (en) * | 2001-12-12 | 2003-06-12 | 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 |
CN101364190A (zh) * | 2008-09-24 | 2009-02-11 | 金蝶软件(中国)有限公司 | 图形用户界面执行同步、异步操作的方法及装置 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7225249B1 (en) * | 1997-09-26 | 2007-05-29 | Mci, Llc | Integrated systems for providing communications network management services and interactive generating invoice documents |
US7055151B1 (en) * | 1998-04-03 | 2006-05-30 | Applied Micro Circuits Corporation | Systems and methods for multi-tasking, resource sharing and execution of computer instructions |
JP2001117839A (ja) * | 1999-10-15 | 2001-04-27 | Nippon Denki Information Technology Kk | 相談システム |
US6687729B1 (en) | 1999-12-20 | 2004-02-03 | Unisys Corporation | System and method for providing a pool of reusable threads for performing queued items of work |
US7412525B2 (en) * | 2001-01-24 | 2008-08-12 | Microsoft Corporation | System verifying if an email request passed a policy check before initiating an interactive telephony session |
US7302684B2 (en) * | 2001-06-18 | 2007-11-27 | Microsoft Corporation | Systems and methods for managing a run queue |
AU2002353280A1 (en) * | 2001-12-14 | 2003-06-30 | Koninklijke Philips Electronics N.V. | Data processing system having multiple processors and task scheduler and corresponding method therefore |
US7058950B2 (en) * | 2002-03-21 | 2006-06-06 | Sun Microsystems, Inc. | Callback event listener mechanism for resource adapter work executions performed by an application server thread |
FI116166B (fi) * | 2002-06-20 | 2005-09-30 | Nokia Corp | Menetelmä ja järjestelmä sovellusistuntojen suorittamiseksi elektroniikkalaitteessa, ja elektroniikkalaite |
US7047531B2 (en) * | 2002-07-11 | 2006-05-16 | Hewlett-Packard Development Company, L.P. | Method and apparatus for automated network polling |
US8015303B2 (en) * | 2002-08-02 | 2011-09-06 | Astute Networks Inc. | High data rate stateful protocol processing |
US7293270B1 (en) * | 2002-11-19 | 2007-11-06 | International Business Machines Corporation | System and method for scheduling and coordinating tasks across application processes using shared memory |
US7657892B2 (en) * | 2004-05-20 | 2010-02-02 | Bea Systems, Inc. | System and method for application server with self-tuned threading model |
BRPI0402190A (pt) * | 2004-06-04 | 2006-01-17 | Leonardo Larsen Ribeiro | Processo de integração de sistemas digitais e produto resultante |
US8281014B2 (en) * | 2004-12-28 | 2012-10-02 | Sap Ag | Session lifecycle management within a multi-tiered enterprise network |
WO2007040648A1 (en) * | 2005-09-29 | 2007-04-12 | Teamon Systems, Inc. | Email server for processing a threshold number of email jobs for a given user and related methods |
FR2893156B1 (fr) * | 2005-11-04 | 2008-02-15 | Commissariat Energie Atomique | Procede et systeme de calcul intensif multitache et multiflot en temps reel. |
JP4936517B2 (ja) * | 2006-06-06 | 2012-05-23 | 学校法人早稲田大学 | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ |
US8584126B2 (en) * | 2007-03-23 | 2013-11-12 | Vmware, Inc. | Systems and methods for enabling threads to lock a stage prior to processing data |
JP4771431B2 (ja) * | 2007-09-20 | 2011-09-14 | Kddi株式会社 | オペレーティングシステムに基づくイベント処理機能搭載装置及びプログラム |
US7990974B1 (en) * | 2008-09-29 | 2011-08-02 | Sonicwall, Inc. | Packet processing on a multi-core processor |
US8200765B2 (en) * | 2009-01-12 | 2012-06-12 | International Business Machines Corporation | Preserving message order using a message ordering manager |
-
2009
- 2009-07-28 ES ES09781199T patent/ES2719489T3/es active Active
- 2009-07-28 CN CN200980160635.5A patent/CN102473107B/zh active Active
- 2009-07-28 MY MYPI2011006287A patent/MY163545A/en unknown
- 2009-07-28 US US13/383,494 patent/US9459941B2/en active Active
- 2009-07-28 JP JP2012521974A patent/JP5756801B2/ja active Active
- 2009-07-28 CA CA2769169A patent/CA2769169C/en active Active
- 2009-07-28 DK DK09781199.6T patent/DK2460072T3/en active
- 2009-07-28 WO PCT/EP2009/059753 patent/WO2011012157A1/en active Application Filing
- 2009-07-28 BR BR112012001629A patent/BR112012001629B1/pt active IP Right Grant
- 2009-07-28 EP EP09781199.6A patent/EP2460072B1/en active Active
-
2012
- 2012-01-23 IN IN677DEN2012 patent/IN2012DN00677A/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030110230A1 (en) * | 2001-12-12 | 2003-06-12 | 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 |
CN101364190A (zh) * | 2008-09-24 | 2009-02-11 | 金蝶软件(中国)有限公司 | 图形用户界面执行同步、异步操作的方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105303307A (zh) * | 2015-10-16 | 2016-02-03 | 北京京北方信息技术有限公司 | 一种分配工作任务的方法及装置 |
CN110309230A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 基于区块链的区块生成方法、装置、设备及存储介质 |
CN111651865A (zh) * | 2020-05-12 | 2020-09-11 | 北京华如科技股份有限公司 | 一种并行离散事件的事件集中发射式仿真执行方法及系统 |
CN111651865B (zh) * | 2020-05-12 | 2023-03-17 | 北京华如科技股份有限公司 | 一种并行离散事件的事件集中发射式仿真执行方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CA2769169A1 (en) | 2011-02-03 |
CN102473107B (zh) | 2015-08-19 |
US20120284725A1 (en) | 2012-11-08 |
BR112012001629A2 (pt) | 2016-11-08 |
BR112012001629B1 (pt) | 2019-10-22 |
JP5756801B2 (ja) | 2015-07-29 |
CA2769169C (en) | 2017-04-04 |
EP2460072B1 (en) | 2019-01-09 |
ES2719489T3 (es) | 2019-07-10 |
IN2012DN00677A (zh) | 2015-08-21 |
EP2460072A1 (en) | 2012-06-06 |
JP2013500526A (ja) | 2013-01-07 |
WO2011012157A1 (en) | 2011-02-03 |
DK2460072T3 (en) | 2019-03-25 |
US9459941B2 (en) | 2016-10-04 |
MY163545A (en) | 2017-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102473107A (zh) | 用于处理电信网络中的事件的设备和方法 | |
US8453152B2 (en) | Workflow control of reservations and regular jobs using a flexible job scheduler | |
CN102567111B (zh) | 一种异步过程调用的方法、系统和终端设备 | |
US8756613B2 (en) | Scalable, parallel processing of messages while enforcing custom sequencing criteria | |
CN105700937A (zh) | 多线程任务处理方法和装置 | |
US9231995B2 (en) | System and method for providing asynchrony in web services | |
CN102455940B (zh) | 一种定时器和异步事件的处理方法及系统 | |
US20120246651A1 (en) | System and method for supporting batch job management in a distributed transaction system | |
JP2015143998A (ja) | 電気通信ネットワークにおけるイベントを処理するための装置および方法 | |
US7925921B2 (en) | Fault recovery in concurrent queue management systems | |
CN110825535A (zh) | 一种作业调度的方法和系统 | |
GB2516852A (en) | Consuming ordered streams of messages in a message oriented middleware | |
CN114168302A (zh) | 任务调度方法、装置、设备及存储介质 | |
CN108984290B (zh) | 任务调度方法和系统 | |
CN111290842A (zh) | 一种任务执行方法和装置 | |
US20030163600A1 (en) | Method and system where one thread can handle several different services concurrently | |
CN104932946B (zh) | 用于处理电信网络中的事件的设备和方法 | |
US10949367B2 (en) | Method for handling kernel service request for interrupt routines in multi-core environment and electronic device thereof | |
JP2013206041A (ja) | 通信システム及び負荷分散処理装置 | |
CN112749020A (zh) | 一种物联网操作系统的微内核优化方法 | |
US20070268924A1 (en) | System and method for recognition and cyclic service of partial sequences of communication requests | |
CN115328646A (zh) | 一种临界资源调度方法、装置、设备及存储介质 |
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 |