CN1225105C - 一种适用于应用服务器的呼叫处理方法 - Google Patents
一种适用于应用服务器的呼叫处理方法 Download PDFInfo
- Publication number
- CN1225105C CN1225105C CN 02158912 CN02158912A CN1225105C CN 1225105 C CN1225105 C CN 1225105C CN 02158912 CN02158912 CN 02158912 CN 02158912 A CN02158912 A CN 02158912A CN 1225105 C CN1225105 C CN 1225105C
- Authority
- CN
- China
- Prior art keywords
- call
- queue
- message object
- scheduling
- current
- 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.)
- Expired - Fee Related
Links
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种适用于应用服务器的呼叫处理方法,对每个新发起的呼叫,建立与该呼叫对应的呼叫队列,用于存储属于该呼叫的所有呼叫处理操作;然后,对于每个接收到的呼叫处理操作,将其放入该呼叫处理操作所属呼叫对应的呼叫队列中,等待处理;之后,对多个呼叫的多个呼叫处理操作通过扫描调度分别进行处理,采用线程池来实现,每个线程处理一个呼叫处理操作;每处理完一个呼叫处理操作后,判断是否处理完相应呼叫中所有的呼叫处理操作,如果没有,则将该呼叫队列放回调度队列中,等待下一扫描周期的处理,否则,在下一扫描周期继续处理其他呼叫的呼叫处理操作。采用该方法能高效处理并发呼叫,降低单个呼叫的处理时延,提高应用服务器性价比。
Description
技术领域
本发明涉及一种呼叫处理技术,特别是指一种适用于下一代网络中应用服务器的呼叫处理方法。
背景技术
应用服务器是一种面向下一代网络的业务提供系统,它通常采用Parlay应用程序接口(API)访问并控制软交换提供的网络能力,从而实现各种增值业,因此又称为Parlay应用服务器。这里的Parlay是电信领域的一个国际组织,所述的Parlay API是由Parlay组织提出的一种开放的、可扩展的、技术和网络独立的API,其具有安全访问现有网络以及将来可能出现的网络的能力,现有网络包括固定网、移动网及分组网等。所述的软交换属于外部网络设备,其主要功能是负责呼叫控制和媒体流的控制,其与应用服务器之间采用Parlay API通信;软交换又可称为呼叫服务器、呼叫代理或媒体网关控制器等。
应用服务器的主要功能是:提供业务逻辑执行环境(SLEE),这一点非常类似于传统智能网中业务控制点(SCP)的作用。关于应用服务器采取何种措施实现呼叫的并发处理,目前尚未提出明确的处理方案,因此,可通过现有技术中SCP处理并发呼叫的过程来讨论目前并发呼叫处理中出现的问题。
对于SCP来说,其处理并发呼叫大致有两种方式:
1)采用进程“伪并发”的方式。在SCP中,一个业务逻辑程序(SLP)是由若干个与业务无关的构成块(SIB)组成的,SLP通常被放在一个进程中执行。进程把SLP分成若干个程序代码段(Step),这些Step按顺序执行。这里的一个Step可以是一个SIB,也可以是一个SIB的一部分。进程在处理一个呼叫时,每执行一个Step就停下来,转向执行另外一个呼叫的某个Step。在所有呼叫被执行完一个Step后,进程将再次轮流执行这些呼叫的下一个Step。这种方式的一个缺点是:效率比较低,当一个进程处理大量呼叫时,每个呼叫等待被处理的时间较长;另一个缺点是:业务逻辑比较复杂,需要合理设置Step,对业务开发者的要求比较高。
2)采用线程并发的方式。SLP每收到一个新的呼叫发起请求就新建一个线程,负责处理该呼叫。这种方式的局限性在于:无法控制系统中线程的数目,当呼叫量较大时,系统中的线程数太多,系统负荷太大并且无法进行有效控制。同时,创建线程是一项耗时的任务,大量的线程创建和删除工作将加重系统负担,从而增加了呼叫处理的时延。
发明内容
有鉴于此,本发明的主要目的在于提供一种适用于应用服务器的呼叫处理方法,使其不仅满足呼叫处理的并发性要求,降低单个呼叫的处理时延,而且能有效地控制系统流量,防止系统过载。
为达到上述目的,本发明的技术方案是这样实现的:一种适用于应用服务器的呼叫处理方法,用于至少包括业务代理单元、调度队列、一个或一个以上呼叫队列、调度单元、业务逻辑单元和线程池的应用服务器,该方法包括:
a.业务代理单元收到外部设备发来的呼叫发起请求时,为该呼叫创建一个呼叫队列,并将新创建的呼叫队列加入调度队列中;
b.业务代理单元收到外部设备发来的每个呼叫处理操作后,业务代理单元先将当前收到的呼叫处理操作封装生成消息对象,然后根据消息对象中的呼叫会话标识,将所生成的消息对象放入当前收到的呼叫处理操作所属呼叫对应的、步骤a所创建的呼叫队列中;其中,每个消息对象对应一个呼叫处理操作,每个呼叫队列中包括至少一个消息对象;
c.每个扫描周期到达时,调度单元从调度队列中取出一个呼叫队列,再从当前呼叫队列中取出头消息对象,判断该头消息对象是否满足所设定的约束条件且线程池中有空闲线程,如果是,则调用生成该消息对象的呼叫处理操作对应的业务逻辑单元,同时由所调用的业务逻辑单元从线程池中取出一个空闲线程,在该线程中执行当前消息对象对应的呼叫处理操作,进入步骤d;否则,返回步骤c,等待下一扫描周期;
d.处理完当前消息对象后,由步骤c所调用的业务逻辑单元返回执行结果,同时调度单元判断当前消息对象所属的呼叫队列是否为空,如果不是,则将该呼叫队列重新插入调度队列,返回步骤c,等待下一扫描周期;否则,直接返回步骤c,等待下一扫描周期。
在上述方法中,步骤b进一步包括:业务代理单元收到外部设备发来的呼叫处理操作后,先判断该操作是异步方式还是同步方式,如果为异步方式,则在每个步骤完成后先返回一个临时结果;如果是同步方式,则在当前操作处理完后再返回执行结果。
该方法还包括:预先为每个呼叫队列设置一个表明该呼叫重要程度的优先级属性。那么,步骤c所述从调度队列中取出呼叫队列进一步包括:调度单元先判断所有呼叫队列是否存在优先级差别,如果是,则取出当前优先级最高的呼叫队列;否则,从调度队列的非呼叫队列插入端顺序取出一个呼叫队列。
步骤c进一步包括:如果是没有空闲线程,则不继续进行处理,拒绝当前呼叫处理操作,返回步骤c,等待下一扫描周期;如果是消息对象不符合约束条件,则将该呼叫队列重新插入调度队列,返回步骤c,等待下一扫描周期。
该方法进一步包括:在每个消息对象创建时,将该消息对象对应的操作名称和操作参数直接放入消息对象中;或是将该消息对象对应的操作名称和操作参数设置为消息对象的一个属性。
因此,本发明所提供的适用于应用服务器的呼叫处理方法,具有以下的优点和特点:
1)由于本发明采用消息队列的设计方法,将到达应用服务器的呼叫处理操作封装为消息对象,并存放于呼叫队列,一个呼叫队列中的所有消息对象都属于一个呼叫,从而使操作调用和操作执行在不同线程中进行,满足并增强了呼叫处理的并行性,降低了单个呼叫的处理时延。
2)本发明将每个呼叫的所有消息对象按顺序存入呼叫队列,从而保证了一个呼叫中消息处理的有序性,提高了系统的处理效率。
3)本发明采用基于优先级的呼叫调度方式,可对呼叫进行优先级控制,保证优先级高的呼叫先得到调度,在一定程度上实现了呼叫级服务质量(QoS)保证。
4)本发明采用限制调度队列长度的方法控制系统的流量,可有效控制系统的流量,实现系统过载控制。
5)与创建消息对象的操作相比,创建线程需要更大的开销,消耗更长的时间,因此本发明采用线程池的设计方法,预先创建多个空闲线程供系统直接调用,从而可以限制系统中的线程数量,控制系统负载,同时避免了频繁的线程创建操作,提高了系统的处理性能和执行效率。
6)本发明所提出的线程池设计方法,是在系统中维护一个线程池,通过其中的线程调度消息队列中的对象,从而达到异步执行Parlay操作的目的,同样,该方法也适用于Parlay的同步调用方式。
附图说明
图1为本发明呼叫系统的逻辑结构示意图;
图2为本发明呼叫处理方法的实现流程示意图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
如图1所示,本发明的呼叫处理系统主要包括以下几个组件:业务代理、消息对象、一个以上呼叫队列、调度队列、业务逻辑、调度单元以及线程池。其中,消息对象全部存储于呼叫队列中,呼叫队列中每个以黑色填充的圆点即表示一个消息对象,每个消息对象对应一个呼叫处理操作,消息对象按所属呼叫不同分别存储于不同的呼叫队列中;所有的呼叫队列构成调度队列。在图1所示的系统中,业务代理与外部软交换、调度队列之间;调度单元与业务逻辑、调度队列之间;业务逻辑与线程池之间存在逻辑上的通信连接关系。
在图1所示的系统中,业务代理,用于接收软交换送来的呼叫处理操作,比如:Parlay操作或数据库访问等操作,并将当前接收的操作封装为消息对象。消息对象,用于封装呼叫处理操作,该对象中至少包括操作名和操作参数。业务逻辑,用于提供不同的业务功能,对应不同的呼叫处理操作。呼叫队列,一个呼叫队列用于存放一个呼叫的所有消息对象,每个呼叫队列可以设置一个优先级属性,以表明该呼叫的重要程度,系统先处理优先级高的呼叫。调度队列,用于存放应用服务器上所有的呼叫队列,该调度队列的长度取决于系统内存的大小。调度单元,用于周期性地扫描调度队列,取出需要处理的呼叫队列,如:判断当前呼叫队列的头消息是否符合执行条件,如符合,则相应的处理方法。一个扫描周期开始后,调度单元首先取出优先级最高呼叫队列;随后,一直到下一个扫描周期到达之前,将从调度队列的队尾按顺序取出呼叫队列。扫描周期的长短一定要合理,太短会导致优先级低的呼叫队列长时间甚至永远得不到调度;太长则体现不出优先级高的呼叫队列被优先调度的特性。线程池,用来存放并维护一组空闲线程,其容量取决于系统参数,如内存、CPU速率等,线程池中的每个空白圆点表示一个线程。
基于上述呼叫处理系统的组成结构,本发明中的呼叫处理主要包括两大部分:呼叫建立和呼叫处理。那么,一个呼叫完整的处理过程参见图1、图2所示,包括以下的步骤:
步骤100:软交换向业务代理单元发呼叫发起请求callEventNotify(),当业务代理收到该呼叫发起请求后,为该呼叫创建一个呼叫队列,并将新创建的呼叫队列加入调度队列之中。
步骤101:当软交换向业务代理发送呼叫处理操作时,比如:软交换向业务代理发路由响应操作RouteRes(),业务代理收到该呼叫处理操作,先判断该操作是异步方式还是同步方式,如果为异步方式,则在每个步骤完成后先返回一个临时结果,此处是先返回一个空消息;如果是同步方法,则等执行完所有步骤后再返回执行结果。
步骤102:业务代理将所收到的呼叫处理操作进行封装,创建并生成消息对象,然后根据消息对象中的操作参数,如:呼叫会话标识(CallSessionID)找到相应的呼叫队列,并将当前生成的消息对象加入该呼叫队列之中。每个消息对象在新建时即将包含操作名称、操作参数的信息放入消息对象中,或设置为消息对象的一个属性;操作参数中的标识信息用来唯一标识一个呼叫。
步骤103:对于呼叫的处理,是由调度单元周期性地扫描调度队列,调度单元先判断所有呼叫队列是否存在优先级差别,如果是,则取出当前优先级最高的呼叫队列;否则,从调度队列的另一端取出一个呼叫队列,该另一端是指调度队列中与呼叫队列插入方向相反的一端。
步骤104:取出呼叫队列后,再从当前呼叫队列中取出头消息对象,判断当前取出的消息对象是否满足所设定的约束条件且线程池中有空闲线程,如果是,则调用业务逻辑中对应的呼叫处理操作,同时由业务逻辑从线程池中取出一个空闲线程,在该线程中执行当前的呼叫处理操作,执行步骤105;否则,如果是没有空闲线程,则不继续进行处理,拒绝当前呼叫操作,返回步骤103,等待下一轮调度;如果是消息对象不符合约束条件,则将该呼叫队列重新插入调度队列,返回步骤103,等待下一轮调度。这里所述的约束条件可以是指呼叫所处的某个状态。
步骤105:当前消息对象处理完毕后,由业务逻辑返回相应的执行结果,调度单元判断当前消息对象所属的呼叫队列是否为空,如果不是,则将该呼叫队列再重新插入调度队列,返回步骤103,等待下一轮调度;否则,直接返回步骤103,等待下一轮调度。
本发明的呼叫处理系统及方法,适用于Parlay应用服务器中,也可以适用于采用其它协议,如会话发起协议(SIP)的应用服务器。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (6)
1、一种适用于应用服务器的呼叫处理方法,用于至少包括业务代理单元、调度队列、一个或一个以上呼叫队列、调度单元、业务逻辑单元和线程池的应用服务器,其特征在于,该方法包括以下步骤:
a.业务代理单元收到外部设备发来的呼叫发起请求时,为该呼叫发起请求对应的呼叫创建一个呼叫队列,并将新创建的呼叫队列加入调度队列中;
b.业务代理单元收到外部设备发来的每个呼叫处理操作后,业务代理单元先将当前收到的呼叫处理操作封装生成消息对象,然后根据消息对象中的呼叫会话标识,将所生成的消息对象放入当前收到的呼叫处理操作所属呼叫对应的、步骤a所创建的呼叫队列中;其中,每个消息对象对应一个呼叫处理操作,每个呼叫队列中包括至少一个消息对象;
c.每个扫描周期到达时,调度单元从调度队列中取出一个呼叫队列,再从当前呼叫队列中取出头消息对象,判断该头消息对象是否满足所设定的约束条件且线程池中有空闲线程,如果是,则调用生成该消息对象的呼叫处理操作对应的业务逻辑单元,同时由所调用的业务逻辑单元从线程池中取出一个空闲线程,在该线程中执行当前消息对象对应的呼叫处理操作,进入步骤d;否则,返回步骤c,等待下一扫描周期;
d.处理完当前消息对象后,由步骤c所调用的业务逻辑单元返回执行结果,同时调度单元判断当前消息对象所属的呼叫队列是否为空,如果不是,则将该呼叫队列重新插入调度队列,返回步骤c,等待下一扫描周期;否则,直接返回步骤c,等待下一扫描周期。
2、根据权利要求1所述的呼叫处理方法,其特征在于,所述步骤b进一步包括:业务代理单元收到外部设备发来的呼叫处理操作后,先判断该操作是异步方式还是同步方式,如果为异步方式,则在每个步骤完成后先返回一个临时结果;如果是同步方式,则在当前操作处理完后再返回执行结果。
3、根据权利要求1所述的呼叫处理方法,其特征在于,该方法进一步包括:预先为每个呼叫队列设置一个表明该呼叫重要程度的优先级属性。
4、根据权利要求3所述的呼叫处理方法,其特征在于,步骤c所述从调度队列中取出呼叫队列进一步包括:调度单元先判断所有呼叫队列是否存在优先级差别,如果是,则取出当前优先级最高的呼叫队列;否则,从调度队列的非呼叫队列插入端顺序取出一个呼叫队列。
5、根据权利要求1所述的呼叫处理方法,其特征在于,所述步骤c进一步包括:如果是没有空闲线程,则不继续进行处理,拒绝当前呼叫处理操作,返回步骤c,等待下一扫描周期;如果是消息对象不符合约束条件,则将该呼叫队列重新插入调度队列,返回步骤c,等待下一扫描周期。
6、根据权利要求1所述的呼叫处理方法,其特征在于,该方法进一步包括:在每个消息对象创建时,将该消息对象对应的操作名称和操作参数直接放入消息对象中;或是将该消息对象对应的操作名称和操作参数设置为消息对象的一个属性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02158912 CN1225105C (zh) | 2002-12-26 | 2002-12-26 | 一种适用于应用服务器的呼叫处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02158912 CN1225105C (zh) | 2002-12-26 | 2002-12-26 | 一种适用于应用服务器的呼叫处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1426215A CN1426215A (zh) | 2003-06-25 |
CN1225105C true CN1225105C (zh) | 2005-10-26 |
Family
ID=4753203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02158912 Expired - Fee Related CN1225105C (zh) | 2002-12-26 | 2002-12-26 | 一种适用于应用服务器的呼叫处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1225105C (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100433842C (zh) * | 2003-12-30 | 2008-11-12 | 北京邮电大学 | 一种实现软交换多种信令的集成呼叫系统及呼叫处理方法 |
CN101188570B (zh) * | 2006-11-17 | 2011-05-04 | 鸿富锦精密工业(深圳)有限公司 | 即时消息处理系统及方法 |
CN102739840A (zh) * | 2011-04-07 | 2012-10-17 | 中兴通讯股份有限公司 | 一种用户终端来电处理方法及装置 |
CN103197968B (zh) * | 2013-03-18 | 2016-03-30 | 焦点科技股份有限公司 | 一种融合同步异步特点的线程池处理方法及系统 |
CN103326880B (zh) * | 2013-04-24 | 2016-12-28 | 武汉大学 | Genesys呼叫系统高可用性云计算监控系统及方法 |
CN103218449B (zh) * | 2013-04-26 | 2016-04-13 | 中国农业银行股份有限公司 | 报表日间操作异步处理方法与系统 |
CN104021481A (zh) * | 2014-07-01 | 2014-09-03 | 浪潮软件股份有限公司 | 一种高效的烟草行业订单批量订单处理方法 |
CN105528254B (zh) * | 2015-12-07 | 2019-02-22 | 贵阳朗玛信息技术股份有限公司 | 一种业务处理方法及装置 |
CN107566297A (zh) * | 2017-09-05 | 2018-01-09 | 荷花科技(北京)有限公司 | 物联网业务处理方法和系统 |
CN108667838A (zh) * | 2018-05-11 | 2018-10-16 | 济南浪潮高新科技投资发展有限公司 | 一种基于IPsec的边界会话控制器的设置方法 |
-
2002
- 2002-12-26 CN CN 02158912 patent/CN1225105C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1426215A (zh) | 2003-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1225105C (zh) | 一种适用于应用服务器的呼叫处理方法 | |
US7630480B2 (en) | Service provisioning system | |
CN1097785C (zh) | 信号数据处理系统及方法以及包括信号数据处理系统的通信系统 | |
CN1873615A (zh) | 一种定时器任务服务方法 | |
CN101159747A (zh) | 一种基于tcp并发多链路的通信系统及其方法 | |
CN1870767A (zh) | 对定时器任务进行管理的方法 | |
CN1549108A (zh) | 一种实现通信过程零拷贝消息队列的方法 | |
CN1794185A (zh) | 一种多线程处理中的资源调用方法 | |
CN111400016A (zh) | 一种调用应用程序接口函数的方法和设备 | |
CN105468682A (zh) | 一种事件调度系统 | |
CN1929486A (zh) | 通信业务处理系统及通信业务处理方法 | |
CN1423456A (zh) | 共享线程实现和调度方法 | |
CN1277196C (zh) | 一种实现计算机系统应用服务器的方法 | |
CN117271137A (zh) | 一种多线程的数据分片并行方法 | |
CN1714342A (zh) | 状态机族的并发操作 | |
CN1129281C (zh) | 利用缓存技术提高ip报文转发速度的方法 | |
CN1124052C (zh) | 用于处理电话呼叫的方法 | |
CN1286277C (zh) | 网络处理器中核心处理器与微引擎之间的通信方法 | |
CN1955990A (zh) | 综合电信平台中的流程执行方法及系统 | |
CN1117498C (zh) | 电信网中的业务启动方法,电信网以及电信网的交换点 | |
CN1389799A (zh) | 多优先级最佳动态域值缓存管理算法 | |
CN1257655C (zh) | 交换方法和网络单元 | |
CN1691637A (zh) | 通信设备中数据包的存储方法 | |
CN111414244B (zh) | 一种高效调用密码机的方法 | |
CN1466311A (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20051026 Termination date: 20111226 |