一种适用于应用服务器的呼叫处理系统及其实现方法

文档序号:7697483阅读:158来源:国知局
专利名称:一种适用于应用服务器的呼叫处理系统及其实现方法
技术领域
本发明涉及一种呼叫处理技术,特别是指一种适用于下一代网络中应用服务器的呼叫处理系统及其实现方法。
应用服务器的主要功能是提供业务逻辑执行环境(SLEE),这一点非常类似于传统智能网中业务控制点(SCP)的作用。关于应用服务器采取何种措施实现呼叫的并发处理,目前尚未提出明确的处理方案,因此,可通过现有技术中SCP处理并发呼叫的过程来讨论目前并发呼叫处理中出现的问题。
对于SCP来说,其处理并发呼叫大致有两种方式1)采用进程“伪并发”的方式。在SCP中,一个业务逻辑程序(SLP)是由若干个与业务无关的构成块(SIB)组成的,SLP通常被放在一个进程中执行。进程把SLP分成若干个程序代码段(Step),这些Step按顺序执行。这里的一个Step可以是一个SIB,也可以是一个SIB的一部分。进程在处理一个呼叫时,每执行一个Step就停下来,转向执行另外一个呼叫的某个Step。在所有呼叫被执行完一个Step后,进程将再次轮流执行这些呼叫的下一个Step。这种方式的一个缺点是效率比较低,当一个进程处理大量呼叫时,每个呼叫等待被处理的时间较长;另一个缺点是业务逻辑比较复杂,需要合理设置Step,对业务开发者的要求比较高。
2)采用线程并发的方式。SLP每收到一个新的呼叫发起请求就新建一个线程,负责处理该呼叫。这种方式的局限性在于无法控制系统中线程的数目,当呼叫量较大时,系统中的线程数太多,系统负荷太大并且无法进行有效控制。同时,创建线程是一项耗时的任务,大量的线程创建和删除工作将加重系统负担,从而增加了呼叫处理的时延。
本发明的另一目的在于提供一种适用于应用服务器的呼叫处理方法,使其不仅满足呼叫处理的并发性要求,降低单个呼叫的处理时延,而且能有效地控制系统流量,防止系统过载。
为达到上述目的,本发明的技术方案是这样实现的一种适用于应用服务器的呼叫处理系统,该系统包括以下组件业务代理,用于接收外部的呼叫处理操作,并将当前接收的操作封装为消息对象;调度队列,用于存放一个以上的呼叫队列,该调度队列的长度取决于系统内存大小;调度单元,用于周期性扫描调度队列,取出当前需要处理的呼叫队列;业务逻辑,用于提供对应不同呼叫处理操作的不同业务功能;线程池,用来存放并维护一组空闲线程;该线程池的容量根据当前应用服务器的系统参数确定;业务代理同时与调度队列和外部软交换逻辑相连,调度单元同时 与业务逻辑与调度队列逻辑连接,业务逻辑与线程池逻辑相连。
其中,每个呼叫队列中包括属于同一个呼叫的至少一个消息对象。每个消息对象对应一个呼叫处理操作,且每个消息对象至少包括所对应呼叫处理操作的操作名和操作参数。
一种基于权利要求1所述系统的呼叫处理方法,该方法包括以下步骤a.当业务代理收到外部发来的呼叫发起请求时,为该呼叫创建一个呼叫队列,并将新创建的呼叫队列加入调度队列中;b.当业务代理收到外部发来的呼叫处理操作时,将所收到的呼叫处理操作进行封装生成消息对象,然后根据消息对象中的呼叫会话标识(CallSessionID)找到相应的呼叫队列将当前生成的消息对象加入该呼叫队列中;c.调度单元在扫描周期到达时,从调度队列中取出一个呼叫队列,再从当前呼叫队列中取出头消息对象,判断该头消息对象是否满足所设定的约束条件且线程池中有空闲线程,如果是,则调用业务逻辑中对应的呼叫处理操作,同时由业务逻辑从线程池中取出一个空闲线程,在该线程中执行当前呼叫处理操作,进入步骤d;否则,返回步骤c,等待下一扫描周期;d.当前消息对象处理完后,由业务逻辑返回执行结果,同时调度单元判断当前消息对象所属的呼叫队列是否为空,如果不是,则将该呼叫队列重新插入调度队列,返回步骤c,等待下一扫描周期;否则,直接返回步骤c,等待下一扫描周期。
在上述方法中,步骤b进一步包括业务代理收到外部发来的呼叫处理操作后,先判断该操作是异步方式还是同步方式,如果为异步方式,则在每个步骤完成后先返回一个临时结果;如果是同步方法,则在当前操作处理完后再返回执行结果。
该方法还包括预先为每个呼叫队列设置一个表明该呼叫重要程度的优先级属性。那么,步骤c所述从调度队列中取出呼叫队列进一步包括调度单元先判断所有呼叫队列是否存在优先级差别,如果是,则取出当前优先级最高的呼叫队列;否则,从调度队列的非呼叫队列插入端顺序取出一个呼叫队列。
步骤c进一步包括如果是没有空闲线程,则不继续进行处理,拒绝当前呼叫处理操作,返回步骤c,等待下一扫描周期;如果是消息对象不符合约束条件,则将该呼叫队列重新插入调度队列,返回步骤c,等待下一扫描周期。
该方法进一步包括在每个消息对象创建时,将该消息对象对应的操作名称和操作参数直接放入消息对象中;或是将该消息对象对应的操作名称和操作参数设置为消息对象的一个属性。
因此,本发明所提供的适用于应用服务器的呼叫处理系统及其实现方法,具有以下的优点和特点1)由于本发明采用消息队列的设计方法,将到达应用服务器的呼叫处理操作封装为消息对象,并存放于呼叫队列,一个呼叫队列中的所有消息对象都属于一个呼叫,从而使操作调用和操作执行在不同线程中进行,满足并增强了呼叫处理的并行性,降低了单个呼叫的处理时延。
2)本发明将每个呼叫的所有消息对象按顺序存入呼叫队列,从而保证了一个呼叫中消息处理的有序性,提高了系统的处理效率。
3)本发明采用基于优先级的呼叫调度方式,可对呼叫进行优先级控制,保证优先级高的呼叫先得到调度,在一定程度上实现了呼叫级服务质量(QoS)保证。
4)本发明采用限制调度队列长度的方法控制系统的流量,可有效控制系统的流量,实现系统过载控制。
5)与创建消息对象的操作相比,创建线程需要更大的开销,消耗更长的时间,因此本发明采用线程池的设计方法,预先创建多个空闲线程供系统直接调用,从而可以限制系统中的线程数量,控制系统负载,同时避免了频繁的线程创建操作,提高了系统的处理性能和执行效率。
6)本发明所提出的线程池设计方法,是在系统中维护一个线程池,通过其中的线程调度消息队列中的对象,从而达到异步执行Parlay操作的目的,同样,该方法也适用于Parlay的同步调用方式。


图1所示,本发明的呼叫处理系统主要包括以下几个组件业务代理、消息对象、一个以上呼叫队列、调度队列、业务逻辑、调度单元以及线程池。其中,消息对象全部存储于呼叫队列中,呼叫队列中每个以黑色填充的圆点即表示一个消息对象,每个消息对象对应一个呼叫处理操作,消息对象按所属呼叫不同分别存储于不同的呼叫队列中;所有的呼叫队列构成调度队列。在图1所示的系统中,业务代理与外部软交换、调度队列之间;调度单元与业务逻辑、调度队列之间;业务逻辑与线程池之间存在逻辑上的通信连接关系。
在图1所示的系统中,业务代理,用于接收软交换送来的呼叫处理操作,比如Parlay操作或数据库访问等操作,并将当前接收的操作封装为消息对象。消息对象,用于封装呼叫处理操作,该对象中至少包括操作名和操作参数。业务逻辑,用于提供不同的业务功能,对应不同的呼叫处理操作。呼叫队列,一个呼叫队列用于存放一个呼叫的所有消息对象,每个呼叫队列可以设置一个优先级属性,以表明该呼叫的重要程度,系统先处理优先级高的呼叫。调度队列,用于存放应用服务器上所有的呼叫队列,该调度队列的长度取决于系统内存的大小。调度单元,用于周期性地扫描调度队列,取出需要处理的呼叫队列,如判断当前呼叫队列的头消息是否符合执行条件,如符合,则相应的处理方法。一个扫描周期开始后,调度单元首先取出优先级最高呼叫队列;随后,一直到下一个扫描周期到达之前,将从调度队列的队尾按顺序取出呼叫队列。扫描周期的长短一定要合理,太短会导致优先级低的呼叫队列长时间甚至永远得不到调度;太长则体现不出优先级高的呼叫队列被优先调度的特性。线程池,用来存放并维护一组空闲线程,其容量取决于系统参数,如内存、CPU速率等,线程池中的每个空白圆点表示一个线程。
基于上述呼叫处理系统的组成结构,本发明中的呼叫处理主要包括两大部分呼叫建立和呼叫处理。那么,一个呼叫完整的处理过程参见图1、图2所示,包括以下的步骤步骤100软交换向业务道理单元发呼叫发起请求callEventNotify(),当业务代理收到该呼叫发起请求后,为该呼叫创建一个呼叫队列,并将新创建的呼叫队列加入调度队列之中。
步骤101当软交换向业务代理发送呼叫处理操作时,比如软交换向业务代理发路由响应操作RouteRes(),业务代理收到该呼叫处理操作,先判断该操作是异步方式还是同步方式,如果为异步方式,则在每个步骤完成后先返回一个临时结果,此处是先返回一个空消息;如果是同步方法,则等执行完所有步骤后再返回执行结果。
步骤102业务代理将所收到的呼叫处理操作进行封装,创建并生成消息对象,然后根据消息对象中的操作参数,如呼叫会话标识(CallSessionID)找到相应的呼叫队列,并将当前生成的消息对象加入该呼叫队列之中。每个消息对象在新建时即将包含操作名称、操作参数的信息放入消息对象中,或设置为消息对象的一个属性;操作参数中的标识信息用来唯一标识一个呼叫。
步骤103对于呼叫的处理,是由调度单元周期性地扫描调度队列,调度单元先判断所有呼叫队列是否存在优先级差别,如果是,则取出当前优先级最高的呼叫队列;否则,从调度队列的另一端取出一个呼叫队列,该另一端是指调度队列中与呼叫队列插入方向相反的一端。
步骤104取出呼叫队列后,再从当前呼叫队列中取出头消息对象,判断当前取出的消息对象是否满足所设定的约束条件且线程池中有空闲线程,如果是,则调用业务逻辑中对应的呼叫处理操作,同时由业务逻辑从线程池中取出一个空闲线程,在该线程中执行当前的呼叫处理操作,执行步骤105;否则,如果是没有空闲线程,则不继续进行处理,拒绝当前呼叫操作,返回步骤103,等待下一轮调度;如果是消息对象不符合约束条件,则将该呼叫队列重新插入调度队列,返回步骤103,等待下一轮调度。这里所述的约束条件可以是指呼叫所处的某个状态。
步骤105当前消息对象处理完毕后,由业务逻辑返回相应的执行结果,调度单元判断当前消息对象所属的呼叫队列是否为空,如果不是,则将该呼叫队列再重新插入调度队列,返回步骤103,等待下一轮调度;否则,直接返回步骤103,等待下一轮调度。
本发明的呼叫处理系统及方法,适用于Parlay应用服务器中,也可以适用于采用其它协议,如会话发起协议(SIP)的应用服务器。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种适用于应用服务器的呼叫处理系统,其特征在于该系统包括以下组件业务代理,用于接收外部的呼叫处理操作,并将当前接收的操作封装为消息对象;调度队列,用于存放所有的呼叫队列;调度单元,用于周期性扫描调度队列,取出当前需要处理的呼叫队列;业务逻辑,用于提供呼叫处理功能;线程池,用来存放并维护一组空闲线程;业务代理同时与调度队列和外部软交换逻辑相连,调度单元同时与业务逻辑与调度队列逻辑连接,业务逻辑与线程池逻辑相连。
2.根据权利要求1所述的呼叫处理系统,其特征在于所述的每个呼叫队列中包括属于同一个呼叫的至少一个消息对象。
3.根据权利要求1所述的呼叫处理系统,其特征在于所述的每个消息对象对应一个呼叫处理操作;且每个消息对象中至少包括所对应呼叫处理操作的操作名和操作参数。
4.一种基于权利要求1所述系统的呼叫处理方法,其特征在于该方法包括以下步骤a.当业务代理收到外部发来的呼叫发起请求时,为该呼叫创建一个呼叫队列,并将新创建的呼叫队列加入调度队列中;b.当业务代理收到外部发来的呼叫处理操作时,将所收到的呼叫处理操作进行封装生成消息对象,然后根据消息对象中的呼叫会话标识(CallSessionID)找到相应的呼叫队列,将当前生成的消息对象加入该呼叫队列中;c.调度单元在扫描周期到达时,从调度队列中取出一个呼叫队列,再从当前呼叫队列中取出头消息对象,判断该头消息对象是否满足所设定的约束条件且线程池中有空闲线程,如果是,则调用业务逻辑中对应的呼叫处理操作,同时由业务逻辑从线程池中取出一个空闲线程,在该线程中执行当前呼叫处理操作,进入步骤d;否则,返回步骤c,等待下一扫描周期;d.当前消息对象处理完后,由业务逻辑返回执行结果,同时调度单元判断当前消息对象所属的呼叫队列是否为空,如果不是,则将该呼叫队列重新插入调度队列,返回步骤c,等待下一扫描周期;否则,直接返回步骤c,等待下一扫描周期。
5.根据权利要求4所述的呼叫处理方法,其特征在于所述步骤b进一步包括业务代理收到外部发来的呼叫处理操作后,先判断该操作是异步方式还是同步方式,如果为异步方式,则在每个步骤完成后先返回一个临时结果;如果是同步方法,则在当前操作处理完后再返回执行结果。
6.根据权利要求4所述的呼叫处理方法,其特征在于该方法进一步包括预先为每个呼叫队列设置一个表明该呼叫重要程度的优先级属性。
7.根据权利要求6所述的呼叫处理方法,其特征在于步骤c所述从调度队列中取出呼叫队列进一步包括调度单元先判断所有呼叫队列是否存在优先级差别,如果是,则取出当前优先级最高的呼叫队列;否则,从调度队列的非呼叫队列插入端顺序取出一个呼叫队列。
8.根据权利要求4所述的呼叫处理方法,其特征在于所述步骤c进一步包括如果是没有空闲线程,则不继续进行处理,拒绝当前呼叫处理操作,返回步骤c,等待下一扫描周期;如果是消息对象不符合约束条件,则将该呼叫队列重新插入调度队列,返回步骤c,等待下一扫描周期。
9.根据权利要求4所述的呼叫处理方法,其特征在于该方法进一步包括在每个消息对象创建时,将该消息对象对应的操作名称和操作参数直接放入消息对象中;或是将该消息对象对应的操作名称和操作参数设置为消息对象的一个属性。
全文摘要
本发明公开了一种适用于应用服务器的呼叫处理系统,该系统包括以下组件业务代理,用于接收外部的呼叫处理操作,并将当前接收的操作封装为消息对象;调度队列,用于存放所有的呼叫队列;调度单元,用于周期性扫描调度队列,取出当前需要处理的呼叫队列;业务逻辑,用于提供呼叫处理功能;线程池,用来存放并维护一组空闲线程,业务代理同时与调度队列和外部软交换逻辑相连,调度单元同时与业务逻辑与调度队列逻辑连接,业务逻辑与线程池逻辑相连。本发明还同时公开了一种基于上述系统的呼叫处理方法,采用该系统及方法不仅能高效合理地处理并发呼叫,降低单个呼叫的处理时延,提高应用服务器的性价比,且能有效控制系统流量,防止系统过载。
文档编号H04Q3/00GK1426215SQ0215891
公开日2003年6月25日 申请日期2002年12月26日 优先权日2002年12月26日
发明者杨放春, 李永平, 苏森, 邹华, 孙其博, 陈俊亮 申请人:北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1