CN101242392A - 用于系列服务消息处理的方法、设备和系统 - Google Patents
用于系列服务消息处理的方法、设备和系统 Download PDFInfo
- Publication number
- CN101242392A CN101242392A CNA2007100065773A CN200710006577A CN101242392A CN 101242392 A CN101242392 A CN 101242392A CN A2007100065773 A CNA2007100065773 A CN A2007100065773A CN 200710006577 A CN200710006577 A CN 200710006577A CN 101242392 A CN101242392 A CN 101242392A
- Authority
- CN
- China
- Prior art keywords
- service message
- server
- server instance
- instance
- instances
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明公开了用于系列服务消息处理的方法、设备和系统。在本发明的系列服务消息的处理方法中,系列服务消息由多个服务消息组成,并且至少两个服务器实例提供对系列服务消息的实时处理,并且存储所述系列服务消息提供的信息和处理所述系列服务消息得到的结果。该方法包括:判定至少两个服务器实例中的至少一个服务器实例将出现对系列服务消息的实时处理产生影响的行为,将系列服务消息中的后续服务消息分派到除该至少一个服务器实例之外的其他服务器实例,以保证消息处理延时不受所述行为的影响。根据本发明,可以消除该行为对服务消息的实时处理的影响,同时避免其他改善服务消息处理延时方法所导致的服务消息吞吐率的显著下降。
Description
技术领域
本发明涉及信息技术领域,更具体地说,本发明涉及一种用于系列服务消息处理的方法、设备和系统。
背景技术
在一些重要的行业中,例如在电信业和银行业中,需要对业务进行实时处理。例如,在电信业中,一些典型应用要求95%的时间响应延迟要小于20毫秒,并且在最差的情况下,响应延迟要小于40毫秒。
“实时”不仅仅意味着快速处理,而且意味着“可靠地和可预测地响应现实世界事件的能力”。因此,与速度相比,“实时”更关注及时。
当采用通常的Java平台实现需要实时处理的应用时,可预测地控制应用的执行是面临的主要困难,其中的一个原因是Java平台的自动内存管理(垃圾收集)的不可预测性。
为了能够在实时处理领域中采用Java技术,Sun公司发布了Java实时系统(Java RTS)。Java RTS是Java实时规范(RTSJ)的第一个商业实现。Java RTS使得实时应用程序的开发者能够利用Java语言生态系统的优势,同时尽力实现了实时应用程序执行的可预测性。
另外,IBM公司提供了一种新的实时垃圾收集器,称作Metronome。利用该垃圾收集器,即使在最差的情况下,垃圾收集引起的消息处理停顿时间也小于1毫秒。
上述Java RTS和Metronome虽能改进服务消息处理延迟的可预测性,但很大程度地降低了服务消息处理的吞吐率。
因此,在实时处理领域中,需要提供一种解决方案,使得不但能够改进服务消息处理延迟的可预测性,同时也能够维持较高的服务消息的吞吐率。
发明内容
本发明的一个目的是提供一种解决方案,使得在实现实时应用时,即使采用Java平台,也能够改进服务消息处理延迟的可预测性,同时维持较高的服务消息处理的吞吐率。
为了上述目的,本发明提出了一种系列服务消息的处理方法,所述系列服务消息由多个服务消息组成,其中至少两个服务器实例提供对所述系列服务消息的实时处理,并且存储所述系列服务消息提供的信息和处理所述系列服务消息得到的结果。所述方法包括步骤:判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为,以及将所述系列服务消息中的后续服务消息分派到除所述至少一个服务器实例之外的其他服务器实例,以保证消息处理延时不受所述行为的影响。
本发明还提出了一种用于系列服务消息的处理的设备,所述系列服务消息由多个服务消息组成,其中至少两个服务器实例提供对所述系列服务消息的实时处理,并且存储所述系列服务消息提供的信息和处理所述系列服务消息得到的结果。所述设备包括:调度器,用于判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为,以及分派器,用于将所述系列服务消息中的后续服务消息分派到除所述至少一个服务器实例之外的其他服务器实例,以保证消息处理延时不受所述行为的影响。
此外,本发明还提出了一种系列服务消息的处理系统,所述系列服务消息由多个服务消息组成,其中至少两个服务器实例提供对所述系列服务消息的实时处理,并且存储所述系列服务消息提供的信息和处理所述系列服务消息得到的结果,并且在所述至少两个服务器实例中由虚拟机管理内存。所述系统包括:调度器,用于判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为,路由策略数据库,用于存储路由策略,在判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为后,所述调度器在所述路由策略数据库中修改路由策略,以避免将后续服务消息分派到所述至少一个服务器实例,分派器,用于通过访问路由策略数据库,将所述系列服务消息中的后续服务消息分派到除所述至少一个服务器实例之外的其他服务器实例,保证消息处理延时不受所述行为的影响,至少两个虚拟机监视器,分别位于所述至少两个服务器实例的每一个上,用于向所述调度器提供用于判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为的信息,以及内存数据库,用于存储所述系列服务消息提供的信息和处理所述系列服务消息得到的结果。
本发明还提出了用于实现上述方法的计算机程序产品。
根据本发明,通过精心调度服务消息的分派,避免把服务消息分派到出现对服务消息的实时处理产生影响的行为的服务器实例,可以消除上述行为对服务消息的实时处理的影响,同时避免其他改善服务消息处理延时方法所导致的服务消息吞吐率的显著下降。
附图说明
通过以下结合附图的说明,并且随着对本发明的更全面了解,本发明的其他目的和效果将变得更加清楚和易于理解,其中:
图1示出了根据本发明的一个实施方式的服务消息处理系统;
图2示出了根据本发明的一个实施方式的服务消息处理系统中包括的组件以及这些组件之间的信号流关系;
图3A-3D示出了测试结果;
在所有的上述附图中,相同的标号表示具有相同、相似或相应的特征或功能。
具体实施方式
本发明适用于由至少两个服务器实例提供同一种服务,例如,所述至少两个服务器实例的每一个均作为一个SIP(会话初始协议)应用服务器实例而提供该服务的情况。本发明的基本思想就是在所述至少两个服务器实例中的至少一个服务器实例将出现对服务消息的实时处理产生影响的行为,例如,需要进行垃圾收集,或者出现了负载波动(overhead fluctuation)时,将此后的服务消息分派到除所述至少一个服务器实例之外的其他服务器实例,以保障服务消息处理的实时性。
这样,通过精心调度服务消息的分派,避免把服务消息分派到出现所述影响服务消息处理的实时性的行为的服务器实例中,可以消除所述行为对服务消息的实时处理的影响,并且维持较高的服务消息吞吐率。
下面以在JVM(Java虚拟机)上处理SIP消息为例对本发明的实施方式进行描述。当然,本领域的技术人员应当理解,本发明并不限于此。例如,本发明也可以适用于.NET的情形,即在.NET平台上处理SIP消息的情形。
SIP是因特网工程任务组(IETF)于1999年提出的一种信令协议。关于SIP的详细情况,可以参考IETF RFC 3261。这里,通过参考将IETF RFC 3261并入本申请。
作为一种基本会话控制协议,SIP在电信下一代网络(NGN)和IT合作解决方案中变得越来越普遍。并且,根据SIP,一个会话(session)可以包括多个事务(transaction),而每个事务可以包括多个消息。
当然,本领域的技术人员应当理解,本发明并不局限于SIP,本发明适用于任何这样的协议,其中一个会话包括多个事务,而每个事务包括多个消息。
图1示出了根据本发明的一个实施方式的服务消息处理系统100。如图1所示,该系统100包括SIP应用服务器集群101、102和103,包括在SIP应用服务器集群101中的SIP应用服务器实例110、120;SIP代理130;以及客户端140。
其中SIP应用服务器实例110和120能够并行地处理SIP消息,换句话说,SIP应用服务器实例110和120提供同一种SIP应用服务,既可以把SIP消息分派到SIP应用服务器实例110,也可以把SIP消息分派到SIP应用服务器实例120。这里为了简洁起见,只在SIP应用服务器集群101中示出了两个SIP应用服务器实例110和120。然而,本领域的技术人员应当理解,本发明不限于此,在SIP应用服务器集群101中可以包括多于两个的SIP应用服务器实例。SIP应用服务器集群102和103中也可以分别包括两个或更多的SIP应用服务器实例。同样,系统100可以包括的SIP应用服务器集群的数目也不局限于3个。另外,在该实施方式中,假设SIP应用服务器实例110和120是物理上分离的两个服务器实例。当然,本领域的技术人员应当理解,本发明不限于此,本发明也适用于SIP应用服务器实例110和120物理上在同一个服务器中,而只是逻辑上分开的情形。
另外,在该实施方式中,假设SIP应用服务器实例110和120是基于Java技术的,也就是说,SIP应用服务器实例110和120在各自的JVM上处理SIP消息。
SIP代理130位于SIP应用服务器集群101、102、103和客户端140之间。SIP代理130是从客户端140到SIP应用服务器集群101、102、103的所有业务量的入口。SIP代理130可以执行许多工作量管理操作,例如接纳控制、负载平衡等等。在本发明中,扩展了SIP代理130的功能,如以下将详细描述的。
这里,客户端140代表许多个客户端设备。客户端140可以包括SIP语音终端、SIP视频终端等等。
其中,SIP应用服务器集群101、102、103与SIP代理130之间通过链路112、114和116连接,而SIP代理130与客户端140之间通过链路132连接。链路112、114和116可以是有线链路,诸如同轴电缆、光纤等。另外,链路132可以跨越一个网络(未示出),该网络可以是无线网、有线网、或它们的组合。另外,该网络可以是局域网、城域网、广域网、或它们的组合。例如,该网络是因特网。
另外,在图1中示出了SIP应用服务器集群101、102和103与SIP代理130通过点到点链路相连接。然而,本领域的技术人员应当理解,SIP应用服务器集群101、102和103与SIP代理130也可以通过一条总线而连接。
在该实施方式中,SIP应用服务器实例110和120并行地处理SIP消息。当SIP代理130判定SIP应用服务器实例110和120中的一个需要进行垃圾收集时,SIP代理130将工作量从该需要进行垃圾收集的应用服务器实例切换到另一个应用服务器实例。这里将即将进行垃圾收集的应用服务器实例称作“主应用服务器实例”(PS),而将另一个不执行垃圾收集的应用服务器实例称作“备份应用服务器实例”(BS)。上述两个SIP应用服务器实例110和120可以交替地作为PS或BS。
图2示出了根据本发明的一个实施方式的服务消息处理系统中包括的组件以及这些组件之间的信号流关系,这些组件包括如下:调度器236、分派器232和路由策略数据库234,其均位于SIP代理130中;JVM监视器212和222,分别位于SIP应用服务器实例110和120中;以及内存数据库202,它是独立于SIP应用服务器实例的进程,可位于任意SIP应用服务器所在的物理节点上或者第三方物理节点上。另外,在SIP应用服务器实例110和120中,可以分别运行应用程序204,并且,应用程序204是采用Java语言编写的。更具体地说,在SIP应用服务器实例110和120每一个中具有一个JVM,应用程序204和JVM监视器212和222都运行在JVM上。
由于在处理一个SIP会话的后续消息时,有可能依赖于由先前消息提供的信息或处理的结果,并且上述信息保存在一个会话相关的对象中。在将工作量从PS切换到BS后,BS处理在PS上开始的会话的后续消息时,需要知道在PS中创建并维护的该会话相关的对象。由于PS和BS之间的角色的转换很频繁(根据垃圾收集的频率,一般每隔几分钟转换一次)。在该实施方式中,采用了一个内存数据库202来在PS和BS之间交换该会话相关的对象。伯克利(Berkeley)数据库或IBM公司的ObjectGrid可以用作该内存数据库202。内存数据库202与PS和BS之间的交互将在下面描述。
下面参考图2描述根据本发明的一个实施方式的服务消息处理系统的操作方法。
SIP代理130中的调度器236周期性地(例如每隔几秒)同时向SIP应用服务器实例110和120中的JVM监视器212和222发出询问信号,以得到各个JVM的内存使用率。
如果其中一个JVM的内存使用率高于一个阈值,例如高于80%,并且另一个JVM的内存使用率低于该阈值,那么调度器236就判定其内存使用率高于该阈值的JVM将出现垃圾收集行为,其所在的SIP应用服务器实例作为PS,而其内存使用率低于该阈值的JVM所在的SIP应用服务器实例作为BS。
在提供同一种服务的SIP应用服务器实例的数目多于两个的情况下,如果至少一个SIP应用服务器实例的JVM的内存使用率高于该阈值,并且有至少一个SIP应用服务器实例的JVM的内存使用率低于该阈值,那么调度器236就判定其内存使用率高于该阈值的那些JVM将出现垃圾收集行为,其所在的SIP应用服务器实例作为PS,而其内存使用率低于该阈值的那些JVM所在的SIP应用服务器实例作为BS。
然后,调度器236将更新在SIP代理130中的路由策略数据库234,或者直接将关于路由策略修改的信息通知给SIP代理130中的分派器232。
更具体地,调度器236在路由策略数据库中的目标应用服务器实例列表中标示PS的状态为暂时不可用。
然后,调度器236周期性地(例如每隔几秒)向PS(例如向作为PS的SIP应用服务器实例中的应用程序204)询问在PS上的所有正在进行中的事务的完成情况。调度器236根据在PS上正在进行的事务的完成情况,发出一个命令消息给PS的JVM上的JVM监视器,以触发JVM执行垃圾收集。例如,可以在PS上正在进行的所有事务完成之后,或者在PS上正在进行的事务小于一定量时,调度器236发出一个命令消息给PS的JVM上的JVM监视器,以触发JVM执行垃圾收集。在本发明的一个实施方式中,由PS中的JVM执行垃圾收集。当然,本领域的技术人员应当理解,也可以由PS中的操作系统执行垃圾收集,以及如果不是采用JVM而是采用其他的虚拟机,则对应的虚拟机执行垃圾收集操作。
应当理解,在本发明中,在SIP应用服务器实例110和120中可以采用任何类型的JVM,并且也可以采用任何垃圾收集算法。
然后,调度器236周期性地(例如每隔几毫秒)向PS(例如向其JVM监视器204)询问垃圾收集是否完成。
在垃圾收集完成之后,调度器236通过在路由策略数据库234中的目标应用服务器实例列表中标示PS的状态为可用,来更新路由策略数据库234。
JVM监视器212和222分别运行在SIP应用服务器实例110和120的各自JVM上,用于监视JVM的内存使用率。当它们从调度器236接收到请求查询JVM的内存使用率的消息后,执行查询操作。Java 5.0的规范提供了询问JVM内存使用率的API。
在本发明的一个实施方式中,当JVM监视器212或222从调度器236接收到执行垃圾收集的命令后,将调用system.gc()来触发垃圾收集。
路由策略数据库234位于SIP代理130中,其受到调度器236的控制,并由分派器232所使用。更具体地,路由策略数据库234包括目标应用服务器实例列表。如上所述,调度器236可以修改该在路由策略数据库234中的目标应用服务器实例列表,例如将一个在该目标应用服务器实例列表中的应用服务器实例的状态标示为暂时不可用,或者将该应用服务器实例的状态标示为可用。
本领域的技术人员应当理解,在上述情况中,调度器236修改的是已经添加到该目标应用服务器实例列表中的应用服务器实例的状态。
当然,本领域的技术人员可以理解,也可以是这样,即当判定一个应用服务器实例将作为PS时,调度器236将该应用服务器实例从目标应用服务器列表中删除;当一个应用服务器实例完成垃圾收集之后,调度器236将该应用服务器实例添加到目标应用服务器列表中。
该路由策略数据库234是可选的。换句话说,也可以没有路由策略数据库234。当调度器236判定一个JVM需要执行垃圾收集时,它将这个信息直接告诉给分派器232。这样,分派器232可以不将服务消息分派给具有需要进行垃圾收集的JVM的SIP应用服务器实例。
分派器232在向SIP应用服务器实例110和120分派接收的服务消息(这些服务消息都来自客户端140,组成一系列服务消息)之前,查询该路由策略数据库234,以判定服务消息可以分派到SIP应用服务器实例210和220中的哪一个。
例如,如果SIP应用服务器实例110在路由策略数据库234的目标应用服务器列表中的状态为可用,那么分派器232可以将服务消息分派到SIP应用服务器实例110;如果SIP应用服务器实例110在路由策略数据库234的目标应用服务器列表中的状态为暂时不可用,那么分派器232不能将服务消息分派到SIP应用服务器实例110。
根据本发明的实施方式的服务消息处理系统有四个状态:变异状态、垃圾收集前状态、全局垃圾收集状态和垃圾收集后状态。以下将详细描述这四个状态。
变异状态:
在系统刚启动时,或者当在SIP应用服务器实例110和120中的一个中的垃圾收集完成,并且把属于这一个应用服务器实例的工作量已经切换回该应用服务器实例时,系统改变到变异状态。
在该状态,SIP应用服务器实例110和120正常地运行。换句话说,在该状态,SIP应用服务器实例110和120在路由策略数据库234的目标应用服务器实例列表中的状态都为可用,分派器232根据SIP应用服务器实例110和120的工作量情况,判定将服务消息分派到SIP应用服务器实例110还是120。在SIP应用服务器实例110和120方面,当一个事务完成时,在内存数据库202中更新对应的会话相关对象。
对于在该状态的调度器236,其就JVM的内存使用率周期性地询问在SIP应用服务器实例110和120的各自JVM上的JVM监视器212和222,并分析得到的这些JVM的内存使用率。如上所述的那样,基于内存使用率信息,该调度器236判定SIP应用服务器实例110和120中的哪一个的JVM应当执行垃圾收集。
垃圾收集前状态:
当在SIP代理130中的调度器236决定触发在SIP应用服务器实例110中的JVM执行垃圾收集,系统进入垃圾收集前状态。在该状态,调度器236首先更新路由策略数据库234,更具体地说,调度器236将在路由策略数据库234的目标应用服务器列表中的SIP应用服务器实例110的状态标示为暂时不可用。
如上所述,在该实施方式中,SIP应用服务器实例110是PS,而SIP应用服务器实例120是BS。
在该状态,根据路由策略数据库234,在SIP代理130中的分派器232将用于创建新会话的服务消息分派给SIP应用服务器实例120。
在该状态,该分派器232根据如下准则,分派属于这样的会话的服务消息,该会话是在SIP应用服务器实例110上建立的。
-用于新的事务,而对应的会话是在SIP应用服务器实例110上的服务消息将分派到SIP应用服务器实例120(除了CANCEL消息,其应当被分派到对应INVITE消息分派到的那个SIP应用服务器实例);
-用于在SIP应用服务器实例110上的正在进行的事务的所有消息将分派到SIP应用服务器实例110。
此外,调度器236将向SIP应用服务器实例110(例如向应用程序204)询问在SIP应用服务器实例110上是否有未完成的事务。如果在SIP应用服务器实例110上没有未完成的事务,也就是说,所有的事务已经完成,那么调度器236将发送一个命令给SIP应用服务器实例110的JVM监视器212,以触发JVM进行垃圾收集。
对于在该状态的SIP应用服务器实例110,它将正常地处理接收的消息。每当一个事务完成时,它在内存数据库202中更新会话相关对象。
对于在该状态的SIP应用服务器实例120,其将不但接收用于创建新会话的服务消息,而且接收用于创建一个新的事务、同时对应的会话相关的对象不在本地中的服务消息。SIP应用服务器实例120将询问内存数据库202以获得相对应的会话相关对象,以处理这种类型的消息。
全局垃圾收集状态:
如果在SIP应用服务器实例110上所有的事务已经完成,那么系统进入全局垃圾收集状态。
在该状态下,调度器236将发送一个命令给SIP应用服务器实例110的JVM监视器212,以触发JVM进行垃圾收集。然后,SIP应用服务器实例110的JVM执行垃圾收集。
在该状态期间,在SIP代理130中的分派器232将所有消息分派到SIP应用服务器实例120,也就是说,所有的工作量暂时由SIP应用服务器实例120处理。SIP应用服务器实例120处理所有接收的消息,并在每个事务结束后,在内存数据库202中更新对应的会话相关的对象。
在这个状态,调度器236周期性地询问SIP应用服务器实例110(例如询问JVM监视器212),以检查在SIP应用服务器实例110中的垃圾收集是否已经完成。
如果调度器236判定在SIP应用服务器实例110中已经完成垃圾收集,则系统进入到垃圾收集后状态。
垃圾收集后状态:
在该状态,在SIP代理130中的调度器236修改路由策略数据库234,以把在目标应用服务器实例列表中的SIP应用服务器实例110的状态再次标示为可用。
在SIP代理130中的分派器232将基于SIP应用服务器实例110和120的工作量来分派用于创建新会话的消息。
在该状态,该分派器232根据如下准则,分派属于这样的会话的消息,该会话是在SIP应用服务器实例110上建立的。
-所有用于其对应会话在SIP应用服务器实例110上的新事务的消息将被分派到SIP应用服务器实例110(除了CANCEL消息,其应该被分派到对应INVITE消息分派到的应用服务器实例);
-用于在SIP应用服务器实例120上正在进行的事务的所有消息将被分派到SIP应用服务器实例120。
在该状态中,当SIP应用服务器实例110接收到属于在其上的正在进行的会话的消息时,它首先查询内存数据库202,以检查在其本地中的会话相关对象是否与在内存数据库202中的会话相关对象相同。如果不相同,SIP应用服务器实例110将用在内存数据库202中的会话相关对象同步在本地中的会话相关对象。然后,SIP应用服务器实例110处理接收的消息并在对应事务完成后,在内存数据库202中更新会话相关对象。
此外,调度器236将向SIP应用服务器实例120(例如向应用程序204)询问在SIP应用服务器实例120上是否有这样的未完成的事务,该事务本来应当在SIP应用服务器实例110上。如果在SIP应用服务器实例120上所有这样的事务已经完成,那么垃圾收集后状态结束,并且系统再次进入到变异状态。
图3示出了测试结果。其中上述测试是在如图2所示的环境下在如下的条件下进行的:
垃圾收集器:标识-清理-压缩(mark-sweep-compact)垃圾收集器;
内存:512M
在垃圾收集期间转发会话发起消息。
图3A示出了在流量一定时,一段测试时间里服务消息的平均处理延迟,在图3A中,横坐标代表流量(单位为事务数/秒),纵坐标代表服务消息的平均处理延迟(单位为秒),上面的曲线代表的是没有采用根据本发明的服务消息处理方法的情况,而下面的曲线代表的是采用了根据本发明的服务消息处理方法的情况。可以看出,当采用了本发明的服务消息处理方法后,即使流量增加,也没有显著增加服务消息的平均处理延迟。
图3B示出了在流量一定时,一段测试时间里服务消息的最大处理延迟,其中,横坐标代表流量(单位为事务数/秒),纵坐标代表服务消息的最大处理延迟(单位为秒),上面的曲线代表的是没有采用根据本发明的服务消息处理方法的情况,而下面的曲线代表的是采用了根据本发明的服务消息处理方法的情况。可以看出,当采用了根据本发明的服务消息处理方法之后,即使流量增加,也没有显著增加服务消息的最大处理延迟。
图3C示出了在没有采用根据本发明的服务消息处理方法的情况下,流量一定时,一段测试时间里的每个事务的响应时间;而图3D示出了在采用根据本发明的服务消息处理方法的情况下,流量一定时,一段测试时间里每个事务的响应时间。在图3C和图3D中,横坐标代表事务的序号,纵坐标代表响应时间(单位为秒)。从图3C和3D可以看出,在采用根据本发明的服务消息处理方法的情况下,可以减小由垃圾收集引起的毛刺。
本发明还可以实现为一种例如由计算机系统所使用的计算机程序产品,所述计算机程序产品用于系列服务消息的处理,所述系列服务消息由多个服务消息组成,其中至少两个服务器实例提供对所述系列服务消息的实时处理,并且存储所述系列服务消息提供的信息和处理所述系列服务消息得到的结果,所述计算机程序产品包括用于如下的代码:判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为,以及将所述系列服务消息中的后续服务消息分派到除所述至少一个服务器实例之外的其他服务器实例,以保证消息处理延时不受所述行为的影响。
这样的计算机程序产品可以存储在一个存储载体中。
应当注意,为了使本发明更容易理解,上面的描述省略了对于本领域的技术人员来说是公知的、并且对于本发明的实现可能是必需的更具体的一些技术细节。
提供本发明的说明书的目的是为了说明和描述,而不是用来穷举或将本发明限制为所公开的形式。对本领域的普通技术人员而言,许多修改和变更都是显而易见的。
例如,也可以是这样,即SIP应用服务器实例110和120主动地、周期地向调度器236报告各自JVM的内存使用情况;SIP应用服务器实例110主动地向调度器236通报已经完成所有的事务;在SIP应用服务器实例110中垃圾收集已经完成时,SIP应用服务器实例110主动地将这一情况通知给调度器236;以及,SIP应用服务器实例120主动地向调度器236通报在SIP应用服务器实例120上已经没有这样的事务,该事务本来应当在SIP应用服务器实例110上,而不是由调度器236通过询问而得到这些信息。
因此,选择并描述实施方式是为了更好地解释本发明的原理,并使本领域普通技术人员明白,在不脱离本发明实质的前提下,所有修改和变更均落入由权利要求所限定的本发明的保护范围之内。
Claims (21)
1. 一种系列服务消息的处理方法,所述系列服务消息由多个服务消息组成,其中至少两个服务器实例提供对所述系列服务消息的实时处理,并且存储所述系列服务消息提供的信息和处理所述系列服务消息得到的结果,所述方法包括步骤:
判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为,以及
将所述系列服务消息中的后续服务消息分派到除所述至少一个服务器实例之外的其他服务器实例,以保证消息处理延时不受所述行为的影响。
2. 根据权利要求1所述的方法,其中所述信息和结果存储在内存数据库中。
3. 根据权利要求1所述的方法,其中在所述至少两个服务器实例中分别由各自的虚拟机管理内存,并且所述行为包括垃圾收集。
4. 根据权利要求3所述的方法,其中所述判定步骤包括步骤:
询问所述至少两个服务器实例的虚拟机内存使用率,
将所述至少两个服务器实例的所述虚拟机内存使用率与一个阈值相比较,如果有至少一个服务器实例的所述虚拟机内存使用率高于所述阈值,并且有至少一个服务器实例的所述虚拟机内存使用率低于所述阈值,则判定其虚拟机内存使用率高于所述阈值的该至少一个服务器实例将出现垃圾收集。
5. 根据权利要求1所述的方法,还包括步骤:
在所述判定步骤之后,修改路由策略,以避免在所述至少一个服务器实例中所述行为结束之前,将所述后续服务消息分派到所述至少一个服务器实例。
6. 根据权利要求1所述的方法,还包括步骤:
在所述判定步骤之后,发出一个命令,以触发所述至少一个服务器实例进行所述行为。
7. 根据权利要求6所述的方法,其中所述至少两个服务器实例作为SIP应用服务器实例,所述方法还包括步骤:
询问在所述至少一个服务器实例上是否还有未完成的事务;
如果在所述至少一个服务器实例上没有未完成的事务,则发出所述命令。
8. 根据权利要求1所述的方法,还包括步骤:
判定所述至少一个服务器实例中所述行为已经结束,以及
修改路由策略,以根据所述至少两个服务器实例的工作量分派后续服务消息。
9. 根据权利要求8所述的方法,其中所述至少两个服务器实例作为SIP应用服务器实例,以及根据如下准则,分派属于这样的会话的后续服务消息,该会话是在所述至少一个服务器实例上建立的:
-除了CANCEL消息,其应该被分派到对应INVITE消息分派到的那个服务器实例,所有用于其对应会话在所述至少一个服务器实例上的新事务的后续服务消息将被分派到所述至少一个服务器实例;
-用于在所述至少一个服务器实例之外的其他服务器实例上正在进行的事务的所有后续服务消息将被分派到所述至少两个服务器实例中的所述至少一个服务器实例之外的其他服务器实例。
10. 根据权利要求1所述的方法,其中所述至少两个服务器实例作为SIP应用服务器实例,以及根据如下准则,分派属于这样的会话的后续服务消息,该会话是在所述至少一个服务器实例上建立的:
-除了CANCEL消息,其应当被分派到对应INVITE消息分派到的那个服务器实例,用于新的事务,而对应的会话是在所述至少一个服务器实例上的后续服务消息将分派到所述至少两个服务器实例中的所述至少一个服务器实例之外的其他服务器实例;
-用于在所述至少一个服务器实例上的正在进行的事务的所有后续服务消息将分派到所述至少一个服务器实例。
11. 一种用于系列服务消息的处理的设备,所述系列服务消息由多个服务消息组成,其中至少两个服务器实例提供对所述系列服务消息的实时处理,并且存储所述系列服务消息提供的信息和处理所述系列服务消息得到的结果,所述设备包括:
调度器,用于判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为,以及
分派器,用于将所述系列服务消息中的后续服务消息分派到除所述至少一个服务器实例之外的其他服务器实例,以保证消息处理延时不受所述行为的影响。
12. 根据权利要求11所述的设备,其中所述信息和结果存储在内存数据库中。
13. 根据权利要求11所述的设备,其中在所述至少两个服务器实例中分别由各自的虚拟机管理内存,并且所述行为包括垃圾收集。
14. 根据权利要求13所述的设备,其中所述调度器还用于:
询问所述至少两个服务器实例的虚拟机内存使用率,
将所述至少两个服务器实例的所述虚拟机内存使用率与一个阈值相比较,如果有至少一个服务器实例的所述虚拟机内存使用率高于所述阈值,并且有至少一个服务器实例的所述虚拟机内存使用率低于所述阈值,则判定其虚拟机内存使用率高于所述阈值的该至少一个服务器实例将出现垃圾收集。
15. 根据权利要求11所述的设备,还包括:
路由策略数据库,以及
在判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为之后,所述调度器在所述路由策略数据库中修改路由策略,以避免在所述至少一个服务器实例中所述行为结束之前,将所述后续服务消息分派到所述至少一个服务器实例。
16. 根据权利要求11所述的设备,其中所述调度器还用于:
在判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述服务消息串的实时处理产生影响的行为之后,发出一个命令,以触发所述至少一个服务器实例进行所述行为。
17. 根据权利要求16所述的设备,其中所述至少两个服务器实例作为SIP应用服务器实例,所述调度器还用于:
询问在所述至少一个服务器实例上是否还有未完成的事务;
如果在所述至少一个服务器实例上没有未完成的事务,则发出所述命令。
18. 根据权利要求11所述的设备,还包括:
路由策略数据库,以及
所述调度器还用于:
判定所述至少一个服务器实例中所述行为已经结束,以及
修改路由策略数据库中的路由策略,以根据所述至少两个服务器实例的工作量分派后续服务消息。
19. 根据权利要求18所述的设备,其中所述至少两个服务器实例作为SIP应用服务器实例,以及所述分派器根据如下准则,分派属于这样的会话的后续服务消息,该会话是在所述至少一个服务器实例上建立的:
-除了CANCEL消息,其应该被分派到对应INVITE消息分派到的那个服务器实例,所有用于其对应会话在所述至少一个服务器实例上的新事务的后续服务消息将被分派到所述至少一个服务器实例;
-用于在所述至少一个服务器实例之外的其他服务器实例上正在进行的事务的所有后续服务消息将被分派到所述至少两个服务器实例中的所述至少一个服务器实例之外的其他服务器实例。
20. 根据权利要求11所述的设备,其中所述至少两个服务器实例作为SIP应用服务器实例,以及所述分派器根据如下准则,分派属于这样的会话的后续服务消息,该会话是在所述至少一个服务器实例上建立的:
-除了CANCEL消息,其应当被分派到对应INVITE消息分派到的那个服务器实例,用于新的事务,而对应的会话是在所述至少一个服务器实例上的后续服务消息将分派到所述至少两个服务器实例中的所述至少一个服务器实例之外的其他服务器实例;
-用于在所述至少一个服务器实例上的正在进行的事务的所有后续服务消息将分派到所述至少一个服务器实例。
21. 一种用于系列服务消息的处理系统,所述系列服务消息由多个服务消息组成,其中至少两个服务器实例提供对所述系列服务消息的实时处理,并且存储所述系列服务消息提供的信息和处理所述系列服务消息得到的结果,并且在所述至少两个服务器实例中由虚拟机管理内存,所述系统包括:
调度器,用于判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为,
路由策略数据库,用于存储路由策略,在判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为后,所述调度器在所述路由策略数据库中修改路由策略,以避免将后续服务消息分派到所述至少一个服务器实例,
分派器,用于通过访问路由策略数据库,将所述系列服务消息中的后续服务消息分派到除所述至少一个服务器实例之外的其他服务器实例,保证消息处理延时不受所述行为的影响,
至少两个虚拟机监视器,分别位于所述至少两个服务器实例的每一个上,用于向所述调度器提供用于判定所述至少两个服务器实例中的至少一个服务器实例将出现对所述系列服务消息的实时处理产生影响的行为的信息,以及
内存数据库,用于存储所述系列服务消息提供的信息和处理所述系列服务消息得到的结果。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100065773A CN101242392B (zh) | 2007-02-06 | 2007-02-06 | 用于系列服务消息处理的方法、设备和系统 |
US12/026,969 US8275885B2 (en) | 2007-02-06 | 2008-02-06 | Method, apparatus and system for processing a series of service messages |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100065773A CN101242392B (zh) | 2007-02-06 | 2007-02-06 | 用于系列服务消息处理的方法、设备和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101242392A true CN101242392A (zh) | 2008-08-13 |
CN101242392B CN101242392B (zh) | 2012-02-08 |
Family
ID=39686795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100065773A Expired - Fee Related CN101242392B (zh) | 2007-02-06 | 2007-02-06 | 用于系列服务消息处理的方法、设备和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8275885B2 (zh) |
CN (1) | CN101242392B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731652A (zh) * | 2015-03-17 | 2015-06-24 | 百度在线网络技术(北京)有限公司 | 业务的处理方法及装置 |
CN108881367A (zh) * | 2018-04-09 | 2018-11-23 | 阿里巴巴集团控股有限公司 | 一种业务请求处理方法、装置及设备 |
CN110908802A (zh) * | 2019-11-18 | 2020-03-24 | 北京三快在线科技有限公司 | 调用服务的方法、装置、设备及存储介质 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8374986B2 (en) * | 2008-05-15 | 2013-02-12 | Exegy Incorporated | Method and system for accelerated stream processing |
US8656018B1 (en) | 2008-09-23 | 2014-02-18 | Gogrid, LLC | System and method for automated allocation of hosting resources controlled by different hypervisors |
US20100153675A1 (en) * | 2008-12-12 | 2010-06-17 | Microsoft Corporation | Management of Native Memory Usage |
US7835309B2 (en) * | 2008-12-16 | 2010-11-16 | Microsoft Corporation | Multiplexed communication for duplex applications |
US8893156B2 (en) * | 2009-03-24 | 2014-11-18 | Microsoft Corporation | Monitoring of distributed applications |
US8266419B2 (en) * | 2009-11-25 | 2012-09-11 | Sprint Communications Company L.P. | Fast restart on a virtual machine |
US8892746B2 (en) * | 2009-12-30 | 2014-11-18 | International Business Machines Corporation | Asynchronous invocation mechanism in session initiation protocol (SIP) server clusters |
US8910176B2 (en) | 2010-01-15 | 2014-12-09 | International Business Machines Corporation | System for distributed task dispatch in multi-application environment based on consensus for load balancing using task partitioning and dynamic grouping of server instance |
US8514749B2 (en) * | 2010-03-10 | 2013-08-20 | Microsoft Corporation | Routing requests for duplex applications |
US8601226B1 (en) | 2010-05-20 | 2013-12-03 | Gogrid, LLC | System and method for storing server images in a hosting system |
CN102891833B (zh) * | 2011-07-21 | 2017-03-29 | 中兴通讯股份有限公司 | 网络容灾方法和系统 |
US8892610B1 (en) * | 2011-07-29 | 2014-11-18 | Google Inc. | System and method for garbage collection pause reduction |
EP2629475B1 (en) | 2012-02-16 | 2019-08-28 | BlackBerry Limited | Method and system for obtaining availability status for multiple sip users |
US9633093B2 (en) | 2012-10-23 | 2017-04-25 | Ip Reservoir, Llc | Method and apparatus for accelerated format translation of data in a delimited data format |
GB2541577A (en) | 2014-04-23 | 2017-02-22 | Ip Reservoir Llc | Method and apparatus for accelerated data translation |
US10942943B2 (en) | 2015-10-29 | 2021-03-09 | Ip Reservoir, Llc | Dynamic field data translation to support high performance stream data processing |
CN106331150B (zh) * | 2016-09-18 | 2018-05-18 | 北京百度网讯科技有限公司 | 用于调度云服务器的方法和装置 |
US11509732B2 (en) * | 2021-01-15 | 2022-11-22 | Dell Products L.P. | Smart service orchestrator |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
UA55489C2 (uk) * | 1997-10-07 | 2003-04-15 | Каналь+ Сосьєте Анонім | Пристрій для багатопотокової обробки даних (варіанти) |
BR9914647A (pt) * | 1998-10-20 | 2001-11-27 | Andrew Dugan | Rede inteligente |
US6496831B1 (en) * | 1999-03-25 | 2002-12-17 | Lucent Technologies Inc. | Real-time event processing system for telecommunications and other applications |
US6449618B1 (en) * | 1999-03-25 | 2002-09-10 | Lucent Technologies Inc. | Real-time event processing system with subscription model |
US6502133B1 (en) * | 1999-03-25 | 2002-12-31 | Lucent Technologies Inc. | Real-time event processing system with analysis engine using recovery information |
ATE491297T1 (de) * | 1999-06-17 | 2010-12-15 | Level 3 Communications Llc | System und verfahren zur integrierter lastverteilung und betriebsmittelverwaltung in einer internet-umgebung |
US6901409B2 (en) * | 2001-01-17 | 2005-05-31 | International Business Machines Corporation | Mapping data from multiple data sources into a single software component |
US7957999B2 (en) * | 2001-02-13 | 2011-06-07 | American Express Travel Related Services Company, Inc. | Electronic acquisition system and method |
US7117216B2 (en) | 2001-06-07 | 2006-10-03 | Sun Microsystems, Inc. | Method and apparatus for runtime merging of hierarchical trees |
US7035944B2 (en) * | 2001-09-19 | 2006-04-25 | International Business Machines Corporation | Programmatic management of software resources in a content framework environment |
US7152204B2 (en) * | 2001-10-18 | 2006-12-19 | Bea Systems, Inc. | System and method utilizing an interface component to query a document |
US8799883B2 (en) * | 2003-01-31 | 2014-08-05 | Hewlett-Packard Development Company, L. P. | System and method of measuring application resource usage |
EP1480407A1 (en) * | 2003-05-20 | 2004-11-24 | Hewlett-Packard Development Company, L.P. | Method and apparatus for load-balancing in a distributed processing system |
US8024476B2 (en) * | 2004-05-21 | 2011-09-20 | Microsoft Corporation | Efficient message routing when using server pools |
US20060209695A1 (en) * | 2005-03-15 | 2006-09-21 | Archer Shafford R Jr | Load balancing in a distributed telecommunications platform |
US7593930B2 (en) * | 2004-12-14 | 2009-09-22 | Sap Ag | Fast channel architecture |
-
2007
- 2007-02-06 CN CN2007100065773A patent/CN101242392B/zh not_active Expired - Fee Related
-
2008
- 2008-02-06 US US12/026,969 patent/US8275885B2/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731652A (zh) * | 2015-03-17 | 2015-06-24 | 百度在线网络技术(北京)有限公司 | 业务的处理方法及装置 |
CN108881367A (zh) * | 2018-04-09 | 2018-11-23 | 阿里巴巴集团控股有限公司 | 一种业务请求处理方法、装置及设备 |
CN110908802A (zh) * | 2019-11-18 | 2020-03-24 | 北京三快在线科技有限公司 | 调用服务的方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101242392B (zh) | 2012-02-08 |
US8275885B2 (en) | 2012-09-25 |
US20080195718A1 (en) | 2008-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101242392B (zh) | 用于系列服务消息处理的方法、设备和系统 | |
US10735553B2 (en) | Micro-services in a telecommunications network | |
CN1649324B (zh) | 操作带有代理的开放api网络的方法和装置 | |
EP0706685B1 (en) | An integrated plant environment system having a PROGRAM-TO-PROGRAM COMMUNICATION SERVER and method | |
JP3847364B2 (ja) | ロードシェアシステム | |
US20020156900A1 (en) | Protocol independent control module | |
KR20040075048A (ko) | 웹 팜 트래픽 제어 방법 및 장치 | |
KR20000004988A (ko) | 제한된 메모리 컴퓨터 시스템에서의 클라이언트관리흐름제어를 위한 방법과 장치 | |
CN103401947A (zh) | 多个服务器的任务分配方法和装置 | |
US20220318071A1 (en) | Load balancing method and related device | |
CN102045197A (zh) | 一种告警数据的同步方法及网管系统 | |
US20040068729A1 (en) | Non-hierarchical collaborative computing platform | |
CN111158949A (zh) | 容灾架构的配置方法、切换方法及装置、设备和存储介质 | |
CN111913784B (zh) | 任务调度方法及装置、网元、存储介质 | |
US8275889B2 (en) | Clone-managed session affinity | |
CN108694082B (zh) | 一种跨域作业流调度方法及系统 | |
CN111752728B (zh) | 消息传输方法及装置 | |
CN111314397A (zh) | 一种基于Swoole框架和Yaf框架的消息处理方法和装置 | |
CN117573291A (zh) | 跨数据中心的多集群管理方法、装置、设备及存储介质 | |
WO2012159537A1 (zh) | 一种用户信息共享的即时通讯系统及方法 | |
JP6667461B2 (ja) | Enum/dnsトラヒック制御システム、ロードバランサ、及びenum/dnsトラヒック制御方法 | |
JP4620097B2 (ja) | 仮想計算機システム及び同システムにおけるスケジュール調整方法 | |
JP3974155B2 (ja) | 通信制御装置 | |
KR20050067413A (ko) | 서비스 통합 시스템을 위한 방법 및 장치 | |
JP2001216174A (ja) | アプリケーション代替方法及びアプリケーション代替プログラムを格納した記憶媒体 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120208 Termination date: 20210206 |