一种服务调用方法和设备及系统的制作方法

文档序号:7985608阅读:101来源:国知局
一种服务调用方法和设备及系统的制作方法
【专利摘要】本发明公开了一种服务调用方法和设备,应用于包含有服务模块的能力开放系统,其特征在于,所述能力开放系统中还设置有控制装置,所述方法包括:控制装置接收服务模块发送的调用其它服务模块的请求消息,请求消息中携带了被调用的服务模块的标识或所请求的业务类型;控制装置根据被调用的服务模块的标识或所请求的业务类型确定被调用的服务模块;控制装置将请求消息发送给确定出的被调用的服务模块。通过采用本发明,使各服务模块不需要直接与其他服务模块通信,也不需要获知其他模块的地址,降低了模块设计的复杂度,在加入新的模块时,只需对控制装置进行修改,对于已有模块只需要进行简单的更新,从而提高了能力开放系统的兼容性和可扩展性。
【专利说明】一种服务调用方法和设备及系统
【技术领域】
[0001]本发明涉及通信【技术领域】,尤其涉及一种服务调用方法和设备及系统。
【背景技术】
[0002]能力开放系统是指在整合和利用现有电信资源的基础上,采用统一的多层级的开放接口来开放电信能力,聚集在互联网上的开发者利用这些能力不断创造出更好的商业应用和服务。
[0003]如图1所示,为现有技术中能力开放系统的系统架构示意图,其中,接入模块、鉴权模块、管理模块等服务模块用于执行特定的业务逻辑,如特定Web服务。基于传统Web服务方式来实现的能力开放系统中的各服务模块以一种紧耦合的方式彼此两两间通信,形成网状通信模式。这种方式显著的特点就是将路由等与业务逻辑无关的部分与业务逻辑交融
在一起。
[0004]现有技术中任意两个服务模块之间的交互过程为:
(1)调用模块发送SOAP(Simple Object Access Protocol,简单对象访问协议)请求;
(2)被调用模块收到请求之后,通过内部处理逻辑处理该请求,并将处理结果以SOAP形式返回给调用模块。
[0005]对于同步Web Service (网络服务)调用方式,调用模块发送请求之后,在被调用模块处理请求的时间内,由于调用模块发送SOAP请求和接收SOAP响应是在同一个线程执行的,因此调用模块会一直等待被调用模块的响应。对于异步Web Service调用方式,调用模块的主线程可以及时返回,继续响应其他事务。之后待被调用模块处理完请求之后,将处理结果通知给调用模块。
[0006]基于传统Web服务方式来实现的能力开放系统,通常采用同步调用方式,该同步调用方式存在以下缺点:
(I)调用模块需要知道被调用模块的URI (Uniform Resource Location,统一资源定位符),以便基于服务模块的URI进行调用。如果将Web服务部署到新的位置(如更新服务模块的URI ),则必须让其他服务模块获知的新URI。
[0007](2)在服务运行期间,调用模块的线程必须阻塞。如果被调用模块的响应时间过长,则调用模块会在接收到被调用模块的响应之前放弃所调用的请求。
[0008]现有技术中,为了解决上述问题,可采用异步方式实现服务模块间的调用。异步方式虽然可以解决上述缺陷(2),但是,仍然需要各服务模块预先获知其他服务模块的地址。另外,由于各服务模块的接口可能不同,要求每个服务模块能够处理各种不同类型的消息,导致了模块的设计十分复杂,且每当加入新的服务模块时,为了处理新加入的服务模块发送的消息,需要进行复杂繁琐的操作以更新其他服务模块,导致了能力开放系统的兼容性和扩展性差。

【发明内容】
[0009]本发明实施例提供一种服务调用方法和设备及系统,以降低模块设计的复杂度,并提高能力开放系统的兼容性和可扩展性。
[0010]为达到上述目的,本发明实施例提供了一种服务调用方法,应用于包含有服务模块的能力开放系统,所述能力开放系统中还设置有控制装置,所述方法包括:
控制装置接收服务模块发送的调用其它服务模块的请求消息,所述请求消息中携带了被调用的服务模块的标识或所请求的业务类型;
所述控制装置根据所述被调用的服务模块的标识或所请求的业务类型确定被调用的服务模块;
所述控制装置将所述请求消息发送给确定出的被调用的服务模块。
[0011]优选的,各服务模块对应设置有接收队列和发送队列;
所述控制装置接收到服务模块发送的请求消息之后,还包括:将接收到的请求消息放入发送该请求消息的服务模块所对应的发送队列;
所述控制装置将所述请求消息发送给确定出的被调用的服务模块,具体包括:所述控制装置从发送所述请求消息的服务模块所对应的发送队列中取出所述请求消息,将取出的请求消息放入确定出的被调用的服务模块所对应的接收队列,并从所述接收队列中复制所述请求消息,将复制得到的请求消息发送给所述确定出的被调用的服务模块。
[0012]优选的,所述控制装置将复制得到的请求消息发送给确定出的被调用的服务模块之后,还包括:
若所述控制装置确认所述确定出的被调用的服务模块未接收到所述请求消息,则再次复制所述请求消息并发送给所述确定出的被调用的服务模块;
若所述控制装置确认所述确定出的被调用的服务模块接收到所述请求消息,则从所述接收队列中删除所述请求消息。
[0013]优选的,所述将请求消息发送给确定出的被调用的服务模块之后,还包括:
所述控制装置接收所述确定出的被调用的服务模块根据所述请求消息返回的应答消
息,所述应答消息中携带了发送所述请求消息的服务模块的标识;
所述控制装置根据发送所述请求消息的服务模块的标识确定发送所述请求消息的服务模块;
所述控制装置将所述应答消息发送给发送所述请求消息的服务模块。
[0014]优选的,各服务模块对应设置有接收队列和发送队列;
所述控制装置接收到所述确定出的被调用的服务模块返回的应答消息之后,还包括:将接收到的应答消息放入所述确定出的被调用的服务模块对应的发送队列;
所述控制装置将所述应答消息发送给发送所述请求消息的服务模块,具体包括:所述控制装置从所述确定出的被调用的服务模块对应的发送队列中取出所述应答消息,将取出的应答消息发送给发送所述请求消息的服务模块所对应的接收队列,并从所述接收队列中复制所述应答消息,将复制得到的应答消息发送给发送所述请求消息的服务模块。
[0015]优选的,所述控制装置将复制得到的应答消息发送给发送所述请求消息的服务模块之后,还包括:
若所述控制装置确认发送所述请求消息的服务模块未接收到所述应答消息,则再次复制所述应答消息并发送给发送所述请求消息的服务模块; 若所述控制装置确认发送所述请求消息的服务模块接收到所述应答消息,则从所述接收队列中删除所述应答消息。
[0016]优选的,所述接收队列和所述发送队列为先进先出队列,所述控制装置从所述确定出的被调用的服务模块对应的发送队列中取出所述应答消息,具体包括:
所述控制装置根据发送队列中各应答消息的时间先后顺序从所述确定出的被调用的服务模块对应的发送队列中取出应答消息;
所述控制装置从所述接收队列中复制所述应答消息,具体包括:
所述控制装置根据接收队列中各应答消息的时间先后顺序复制应答消息。
[0017]优选的,所述控制装置根据所请求的业务类型,将所述请求消息发送给所述被调用的服务模块,具体包括:
若所请求的业务类型对应至少两个服务模块,则所述控制装置根据所述至少两个服务模块的负载或/和处理延迟从中选择一个服务模块,并将所述请求消息发送给选择出的服务模块。
[0018]本发明实施例还提供了一种控制装置,应用于包含有服务模块的能力开放系统,所述控制装置包括:
接收单元,用于接收服务模块发送的调用其他服务模块的请求消息,所述请求消息中携带了被调用的服务模块的标识或所请求的业务类型;
控制单元,用于根据所述被调用的服务模块的标识或所请求的业务类型确定被调用的服务模块;
发送单元,用于根据所述控制单元确定出的被调用的服务模块,将所述接收单元接收到的所述请求消息发送给确定出的被调用的服务模块。
[0019]优选的,各服务模块对应设置有接收队列和发送队列,所述控制单元包括第一存储子单元、第一复制子单元,
所述第一存储子单元,用于在所述接收单元接收到所述请求消息后,将接收到的所述请求消息放入发送所述请求消息的服务模块所对应的发送队列,以及用于将所述发送队列中的请求消息取出,并将取出的请求消息放入所述确定出的被调用的服务模块所对应的接收队列;
所述第一复制子单元,用于在所述第一存储子单元将取出的请求消息放入所述确定出的被调用的服务模块所对应的接收队列后,从所述接收队列中复制所述请求消息;
所述发送单元,具体用于将所述第一复制子单元复制得到的所述请求消息发送给确定出的被调用的服务模块。
[0020]优选的,所述控制单元还包括第一确认子单元、第一删除子单元,
所述第一确认子单元,用于在所述发送单元将复制得到的请求消息发送给确定出的被调用的服务模块后,确认所述确定出的被调用的服务模块是否接收到所述请求消息,并在确认为是时,指示所述第一删除子单元删除请求消息,在确认为否时,指示所述第一复制子单元复制所述请求消息;
所述第一复制子单元,还用于根据所述第一确认子单元的指示,复制所述请求消息;所述第一删除子单元,用于根据所述第一确认子单元的指示,从所述接收队列中删除所述请求消息。[0021]优选的,所述接收单元,还用于接收所述确定出的被调用的服务模块根据所述请求消息返回的应答消息,所述应答消息中携带了发送所述请求消息的服务模块的标识;
所述控制单元,还用于根据所述发送请求消息的服务模块的标识确定发送所述请求消息的服务模块;
所述发送单元,还用于根据所述控制单元确定出的发送所述请求消息的服务模块,将所述接收单元接收到的所述应答消息发送给发送所述请求消息的服务模块。
[0022]优选的,各服务模块对应设置有接收队列和发送队列,所述控制单元包括第二存储子单元、第二复制子单元,
所述第二存储子单元,用于在所述接收单元接收到所述应答消息之后,将接收到的所述应答消息放入所述确定出的被调用的服务模块对应的发送队列,以及用于将所述发送队列中的应答消息取出,并将取出的应答消息放入发送所述请求消息的服务模块所对应的接收队列;
所述第二复制子单元,用于在所述第二存储子单元将取出的应答消息放入发送所述请求消息的服务模块对应的接收队列后,从所述接收队列中复制所述应答消息;
所述发送单元,具体用于将所述第二复制子单元复制得到的应答消息发送给发送所述请求消息的服务模块。
[0023]优选的,所述控制单元还包括第二确认子单元、第二删除子单元,
所述第二确认子单元,用于在所述发送单元将复制得到的应答消息发送给发送所述请求消息的服务模块后,确认发送所述请求消息的服务模块是否接收到所述应答消息,并在确认为是时,指示所述第二删除子单元删除请求消息,在确认为否时,指示所述第二复制子单元复制所述请求消息;
所述第二复制子单元,还用于根据所述第二确认子单元的指示,复制所述应答消息;所述第二删除子单元,用于根据所述第二确认子单元的指示,从所述接收队列中删除所述应答消息。
[0024]本发明实施例还提供了一种能力开放服务器,包含控制装置和至少2个服务模块;
所述服务模块,用于向所述控制装置发送调用其他服务模块的请求消息,所述请求消息中携带了被调用的服务模块的标识或所请求的业务类型,以及用于接收所述控制装置发送的所述被调用的服务模块根据所述请求消息返回的应答消息;
所述控制装置,用于接收所述服务模块发送的请求消息,并根据所述被调用的服务模块的标识或所请求的业务类型确定被调用的服务模块,并将所述请求消息发送给确定出的被调用的服务模块,以及用于接收所述被调用的服务模块发送的携带了发送所述请求消息的服务模块的标识的所述应答消息,并根据发送所述请求消息的服务模块的标识确定发送所述请求消息的服务模块,并将所述应答消息发送给发送所述请求消息的服务模块。
[0025]优选的,各服务模块对应设置有接收队列和发送队列,
所述控制装置,还用于在接收到服务模块发送的请求消息之后,将接收到的请求消息放入发送该请求消息的服务模块所对应的发送队列,以及还用于从发送所述请求消息的服务模块所对应的发送队列中取出所述请求消息,并将取出的请求消息放入确定出的被调用的服务模块所对应的接收队列,并从所述接收队列中复制所述请求消息,将复制得到的请求消息发送给所述确定出的被调用的服务模块。
[0026]优选的,所述控制装置,还用于在将复制得到的请求消息发送给确定出的被调用的服务模块之后,确认所述确定出的被调用的服务模块是否接收到所述请求消息,以及还用于在确认所述确定出的被调用的服务模块未接收到所述请求消息后,再次复制所述请求消息并发送给所述确定出的被调用的服务模块,在确认所述确定出的被调用的服务模块接收到所述请求消息后,从所述接收队列中删除所述请求消息。
[0027]优选的,各服务模块对应设置有接收队列和发送队列,
所述控制装置,还用于在接收到所述确定出的被调用的服务模块返回的应答消息之后,将接收到的应答消息放入所述确定出的被调用的服务模块对应的发送队列,以及还用于从所述确定出的被调用的服务模块对应的发送队列中取出所述应答消息,将取出的应答消息发送给发送所述请求消息的服务模块所对应的接收队列,并从所述接收队列中复制所述应答消息,将复制得到的应答消息发送给发送所述请求消息的服务模块。
[0028]优选的,所述控制装置,还用于在将复制得到的应答消息发送给发送所述请求消息的服务模块之后,确认发送所述请求消息的服务模块是否接收到所述应答消息,以及还用于在确认发送所述请求消息的服务模块未接收到所述应答消息后,再次复制所述应答消息并发送给发送所述请求消息的服务模块,在确认发送所述请求消息的服务模块接收到所述应答消息后,从所述接收队列中删除所述应答消息。
[0029]优选的,还包含适配模块;
所述适配模块,用于接收控制装置发送的消息,将所述控制装置发送的消息转换为能力提供系统能够解析的消息,并发送给所述能力提供系统,以及用于接收能力提供系统发送的消息,并将所述能力提供系统发送的消息转换为所述控制装置能够解析的消息,并发送给所述控制装置。
[0030]与现有技术相比,本发明实施例至少具有以下优点:
通过在能力开发系统中设置控制装置,由控制装置根据服务模块发送的请求消息中携带的被调用的服务模块的标识或所请求的业务类型,将请求消息发送给被调用的服务模块,使各服务模块之间以松耦合的方式通过控制装置进行通信,从而使服务模块不需要直接与其他服务模块通信,也不需要获知其他服务模块的地址,降低了模块设计的复杂度,在加入新的服务模块时,只需要对控制装置进行修改,对于已有服务模块只需要进行简单的更新,从而提高了能力开放系统的兼容性和可扩展性。
【专利附图】

【附图说明】
[0031]图1是现有技术中能力开放系统的系统架构示意图;
图2是本发明实施例提供的能力开放系统的系统架构示意图;
图3是本发明实施例提供的服务模块之间的调用流程示意图;
图4是本发明实施例提供的服务模块之间的调用流程示意图;
图5是本发明实施例提供的服务模块之间的调用流程示意图;
图6是本发明实施例提供的在能力开放系统下接入适配模块以及能力提供系统后的系统架构示意图;
图7是本发明实施例提供的控制装置的结构示意图; 图8是本发明实施例提供的在能力开放服务器下接入适配模块以及能力提供系统后的系统架构不意图;
图9是本发明实施例提供的能力开放服务器的结构示意图。
【具体实施方式】
[0032]下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033]如图2所示,为本发明实施例提供的能力开放系统的系统架构示意图。该能力开放系统中设置有控制装置,各服务模块均与控制装置具有通信连接,并通过控制装置与其他服务模块通信。
[0034]能力开放系统主要用于对用户(即能力使用者)发送的能力调用请求进行接入控制。能力开放系统中的服务模块通常包括接入模块、鉴权模块,还可进一步包括管理模块,以及一些辅助功能模块,比如业务统计模块和告警模块,当然能力开放系统中的服务模块并不限于上述几种,根据需要可在此基础上进行增减。其中,接入模块和鉴权模块可相互配合以实现对该能力开放系统接收到的能力调用请求进行接入控制,在对能力调用请求进行接入控制过程中,接入模块或/和鉴权模块还可调用业务统计模块进行业务统计,调用告警模块进行业务告警等。
[0035]该能力开放系统可以是集中式系统,即控制装置和所有服务模块均集中设置在一个网络设备上,也可以是分布式系统,即控制装置和服务模块至少由两个独立的网络设备实现,各网络设备间通过网络进行通信。
[0036]在各服务模块中,配置有其他各模块的标识与相应模块的业务类型(即相应模块所执行的业务逻辑的业务类型)的对应关系,其中服务模块的标识用于在该能力开放系统中唯一标识服务模块,服务模块的标识可以是能够唯一标识服务模块的任何信息。在控制装置中预先配置有各服务模块的标识和地址的对应关系,用于在控制装置接收到服务模块发送的携带有被调用服务模块的标识的请求消息后,根据请求消息中的被调用服务模块的标识查找该被调用服务模块的地址,并根据查找到的地址,将该调用请求消息发送给相应的被调用服务模块。
[0037]需要说明的是,在本发明实施例中,能力开放系统中的服务模块作为调用模块还是被调用模块,是由该服务模块作为业务的调用者还是被调用者所决定的,即同一个服务模块,在其调用其他服务模块的业务时,该服务模块为调用模块,在其业务被其他服务模块调用时,该服务模块为被调用模块。
[0038]基于上述能力开放系统,服务模块之间的调用流程可如图3所示,包括以下步骤: 步骤301,控制装置接收调用模块发送的携带被调用模块的标识的请求消息,用于请求
调用被调用模块。
[0039]其中,该请求消息中还可以携带调用模块的标识。具体的,在本发明实施例中,以调用模块为接入模块,被调用模块为告警模块为例进行说明,其中,接入模块的ID为001,告警模块的ID为002,当接入模块接收到能力使用者发送的能力调用请求,需要调用告警业务时,接入模块查找自身配置的各模块的标识与业务类型的对应关系,获知ID为002的模块可以提供相应服务,并将被调用模块ID (002)以及自身ID (001)携带在请求消息中发送给控制装置。
[0040]步骤302,控制装置将请求消息发送给与被调用模块的标识对应的被调用模块。
[0041]具体的,控制装置在接收到请求消息后,解析出请求消息中携带的被调用模块的ID为002,控制装置查询自身配置的各服务模块的标识和地址的对应关系,获知ID为002的服务模块的地址为1.1.1.1,控制装置将请求消息发送到目的地址为1.1.1.1的服务模块。
[0042]步骤303,控制装置接收被调用模块根据请求消息返回的携带调用模块标识的应答消息。
[0043]具体的,告警模块接收到请求消息后,由请求消息中携带的调用模块ID获知发起调用请求的服务模块的ID为001,告警模块根据该请求消息进行相应告警判决,例如若用户已使用的流量超过套餐限定流量,则告警模块判定需要发出告警,此种情况下,告警模块将相应的告警信息携带在应答消息中,并将接入模块ID作为目的服务模块的标识携带在应答消息中,并将应答消息发送给控制装置。
[0044]步骤304,控制装置将应答消息返回给发起该请求的服务模块。
[0045]具体的,控制装置接收到告警模块发送的应答消息后,解析出应答消息中携带的作为接收方的服务模块的ID为001,控制装置查询自身配置的各服务模块的标识和地址的对应关系,获知ID为001的服务模块的地址为1.1.1.2,控制装置将应答消息发送到目的地址为1.1.1.2的服务模块。
[0046]通过采用本发明实施例提供的方案,使各服务模块不需要直接与其他服务模块通信,也不需要获知其他模块的地址,降低了模块设计的复杂度,在加入新的模块时,只需要对控制装置进行修改,对于已有服务模块只需要进行简单的更新,从而提高了能力开放系统的兼容性和可扩展性。
[0047]本发明实施例还提供了一种能力开放系统,其结构与图2所示的系统结构相同,不同之处在于:各服务模块中可以不用预先配置业务类型与其他各服务模块的标识的对应关系;控制装置中也可以不用预先配置模块标识和模块地址的对应关系,而是配置业务类型与模块地址的对应关系。
[0048]该系统中,提供相同业务的服务模块可以有多个,即一种业务类型可以对应多个服务模块的地址,以实现服务模块的负载均衡。
[0049]基于该能力开放系统,服务模块之间的调用流程可如图4所示,包括以下步骤: 步骤401,控制装置接收调用模块发送的携带业务类型的请求消息,该业务类型表示该
调用模块所请求的业务的类型。
[0050]步骤402,控制装置根据该请求消息中携带的业务类型,将该请求消息发送给能够提供相应类型业务的被调用模块。
[0051]具体的,控制装置根据该业务类型查询业务类型与服务模块地址的对应关系,若查询到一个服务模块的地址,则根据查询到的地址将该请求消息发送给相应服务模块;若查询到多个服务模块的地址,则从这些服务模块中选择出一个,并根据选择出的服务模块的地址,将该请求消息发送给相应服务模块。[0052]控制装置在选择服务模块时,可根据服务模块的负载或处理延迟进行选择。控制装置可以主动获取能力开放系统中各服务模块的负载信息,也可以由各服务模块周期上报自身的负载信息,控制装置可以从所请求的业务类型对应的多个服务模块中,选择负载最低的服务模块。控制装置可以在与各服务模块通信时,根据服务模块的响应时间,获知各服务模块的处理延迟信息,控制装置可以从所请求的业务类型对应的多个服务模块中,选择处理延迟最小的模块。其中,对于集中式能力开放系统,服务模块的处理延迟主要是指服务模块进行业务处理的响应时间;对于分布式能力开放系统,服务模块的处理延迟主要是指网络通信延迟。
[0053]步骤403,控制装置接收被调用模块根据请求消息返回的携带调用模块标识的应答消息。
[0054]步骤404,控制装置将应答消息返回给发起该请求的服务模块。
[0055]通过采用本发明实施例提供的方案,使控制装置可以根据各服务模块的负载和处理延迟优化请求消息的发送策略,从而在提高能力开放系统的兼容性和可扩展性的基础上,进一步实现能力开放系统的负载分担。
[0056]考虑到控制装置的线程数量有限,当控制装置接收到大量请求消息或/和应答消息时,有限的线程不足以同时处理所有消息,此时需要暂时缓存不能及时处理的消息,同时,通过缓存消息,还可以避免当调用模块或被调用模块故障时,请求消息或应答消息丢失,因此,在本发明的另一实施例中,在以上各能力开放系统的基础上,为其中的每个服务模块设置了发送队列和接收队列,发送队列用于缓存调用模块向控制装置发送的请求消息和被调用模块想控制装置发送的应答消息,接收队列用于缓存控制装置发送的请求消息和应答消息。
[0057]基于设置了接收队列和发送队列的能力开放系统,服务模块之间的调用流程可如图5所示,包括以下步骤:
步骤501,控制装置接收调用模块发送的携带被调用模块的标识的请求消息。
[0058]步骤502,控制装置将该请求消息放入该调用模块对应的发送队列。
[0059]步骤503,控制装置根据该发送队列的队列机制(如先进先出)从调用模块对应的发送队列中取出请求消息,并将取出的请求消息发送给被调用模块对应的接收队列。
[0060]步骤504,控制装置根据该接收队列的队列机制(如先进先出)复制该接收队列中的一个或多个请求消息,将复制的请求消息发送给被调用模块。此处,可根据被调用模块的标识或所请求的业务的类型,将该请求消息发送给被调用模块,其具体实现同前所述,在此不再赘述。
[0061]该步骤中,为了避免请求消息被重复取出,控制装置在从接收队列中取请求消息时,取没有被标记的请求消息,在取得请求消息后,可对取到的请求消息进行标记,以指示相应请求消息已经被发送给被调用模块。
[0062]进一步的,若有多个服务模块对应的接收队列中均有请求消息,则控制装置可采用轮询机制或其它方式,依次从这些接收队列中取得请求消息。
[0063]步骤505,控制装置根据是否成功将该请求消息成功发送给被调用模块,进行后续相应处理。若将该请求消息成功发送给被调用模块,则执行步骤506,否则执行步骤507。
[0064]控制装置可根据被调用模块的反馈,判断是否成功将请求消息发送给被调用模块。本发明实施例要求服务模块在收到请求消息后,向控制装置反馈响应消息,以将自己已接收到请求消息的情况通知给控制装置。若控制装置在发送出去请求消息后,在设定长时间内接收到被调用模块返回的用于通知已接收到请求消息的响应消息,则判定已成功将请求消息发送给被调用模块;若控制装置在发送出去请求消息后,在设定长时间内未接收到被调用模块返回的用于通知已接收到请求消息的响应消息,则判定未成功将请求消息发送给被调用模块。
[0065]步骤506,控制装置删除该被调用模块对应的接收队列中已经成功被该被调用模块接收的请求消息。
[0066]步骤507,对于调用模块发出的未能被被调用模块成功接收的请求消息,控制装置从该被调用模块对应的接收队列中复制该请求消息,并将其发送给被调用模块,然后转入步骤505。
[0067]步骤508,控制装置接收被调用模块根据请求消息返回的应答消息。
[0068]步骤509,控制装置将该应答消息放入该被调用模块对应的发送队列。
[0069]步骤510,控制装置根据该发送队列的队列机制(如先进先出)从被调用模块对应的发送队列中取出应答消息,并将取出的应答消息发送给调用模块对应的接收队列。
[0070]步骤511,控制装置根据该接收队列的队列机制(如先进先出)复制该接收队列中的一个或多个应答消息,根据发起相应请求消息的调用模块的标识,将复制的应答消息发送给该调用模块。
[0071]该步骤中,为了避免应答消息被重复取出,控制装置在从接收队列中取应答消息时,取没有被标记的应答消息,在取得应答消息后,可对取到的应答息进行标记,以指示相应应答消息已经被发送给调用模块。
[0072]进一步的,若有多个服务模块对应的接收队列中均有应答消息,则控制装置可采用轮询机制或其它方式,依次从这些接收队列中取得应答消息。
[0073]步骤512,控制装置根据是否成功将该应答消息发送给调用模块,进行后续相应处理。若控制装置判断已成功将该应答消息发送给调用模块,则执行步骤513,否则执行步骤514。
[0074]同前所述,控制装置可根据调用模块的反馈,判断是否成功将应答消息发送给调用模块。
[0075]步骤513,控制装置删除该被调用模块对应的接收队列中已经成功被调用模块接收的应答消息。
[0076]步骤514,对于被调用模块发出的未能被调用模块成功接收的应答消息,控制装置从该调用模块对应的接收队列中复制该应答消息,并将其发送给调用模块,然后转入步骤512。
[0077]考虑到一些服务模块需要按照请求消息的发送时间顺序,接收并处理相应的响应消息,因此优选的,各服务模块所对应的接收队列和发送队列均采用先进先出的队列机制。
[0078]通过采用本发明实施例提供的方案,使控制装置可以通过接收队列和发送队列缓存请求消息和应答消息,从而在服务模块发生故障未能成功接收请求消息或应答消息时,避免因请求消息或应答消息丢失导致的调用失败,以在提高能力开放系统的兼容性和可扩展性的基础上,进一步提高能力开放系统的稳定性。[0079]考虑到能力开放系统通常连接有能力提供系统,用以向业务开发者和业务使用者提供接入能力开放系统的接口,为了使能力开放系统与能力提供系统更好的进行通信,在本发明实施例中优选的,如图6所示,可以在能力开放系统中增加适配模块,该适配模块连接在控制装置和能力提供系统之间,通过适配模块,可以实现能力提供系统的接口和能力开放系统的接口之间的协议适配,即,将能力提供系统和能力开放系统向对方发送的消息转换为对方可以解析的消息。
[0080]对于本发明提出的如图6所示的系统架构图,当需要增加新的能力提供系统时,仅需要针对新接入的能力提供系统的接口上配置的协议,开发相应的适配模块,再在能力开放系统中增加该能力提供系统的配置信息即可。
[0081]通过采用本发明实施例提供的方案,使用适配模块实现能力提供系统的接口和能力开放系统的接口之间的协议适配,从而避免因能力提供系统和能力开放系统的协议不同,对能力开放系统的接口进行改进,进而实现在提高能力开放系统的兼容性和可扩展性的基础上,降低能力开放系统的开发和维护成本。
[0082]如前所述,本发明实施例提供的能力开放系统可以是分布式系统,也可以是集中式系统,相应的,本发明实施例还提供了一种可用于上述分布式系统的控制装置,以及一种可实现上述集中式系统的能力开放服务器。
[0083]如图7所示,本发明实施例提供的控制装置可由网络设备实现,优选的,可由独立的服务器实现,该控制装置包括:
接收单元710,用于接收服务模块发送的调用其他服务模块的请求消息,所述请求消息中携带了被调用的服务模块的标识或所请求的业务类型;
控制单元720,用于根据所述被调用的服务模块的标识或所请求的业务类型确定被调用的服务模块;
发送单元730,用于根据所述控制单元720确定出的被调用的服务模块,将所述接收单元710接收到的所述请求消息发送给确定出的被调用的服务模块。
[0084]各服务模块对应设置有接收队列和发送队列,所述控制单元720包括第一存储子单元721、第一复制子单元722,
所述第一存储子单元721,用于在所述接收单元710接收到所述请求消息后,将接收到的所述请求消息放入发送所述请求消息的服务模块所对应的发送队列,以及用于将所述发送队列中的请求消息取出,并将取出的请求消息放入所述确定出的被调用的服务模块所对应的接收队列;
所述第一复制子单元722,用于在所述第一存储子单元721将取出的请求消息放入所述确定出的被调用的服务模块所对应的接收队列后,从所述接收队列中复制所述请求消息;
所述发送单元730,具体用于将所述第一复制子单元722复制得到的所述请求消息发送给确定出的被调用的服务模块。
[0085]所述控制单元720还包括第一确认子单元723、第一删除子单元724,
所述第一确认子单元723,用于在所述发送单元730将复制得到的请求消息发送给确定出的被调用的服务模块后,确认所述确定出的被调用的服务模块是否接收到所述请求消息,并在确认为是时,指示所述第一删除子单元724删除请求消息,在确认为否时,指示所述第一复制子单元722复制所述请求消息;
所述第一复制子单元722,还用于根据所述第一确认子单元723的指示,复制所述请求消息;
所述第一删除子单元724,用于根据所述第一确认子单元723的指示,从所述接收队列中删除所述请求消息。
[0086]所述接收单元710,还用于接收所述确定出的被调用的服务模块根据所述请求消息返回的应答消息,所述应答消息中携带了发送所述请求消息的服务模块的标识;
所述控制单元720,还用于根据所述发送请求消息的服务模块的标识确定发送所述请求消息的服务模块;
所述发送单元730,还用于根据所述控制单元720确定出的发送所述请求消息的服务模块,将所述接收单元710接收到的所述应答消息发送给发送所述请求消息的服务模块。
[0087]各服务模块对应设置有接收队列和发送队列,所述控制单元720包括第二存储子单元725、第二复制子单元726,
所述第二存储子单元725,用于在所述接收单元710接收到所述应答消息之后,将接收到的所述应答消息放入所述确定出的被调用的服务模块对应的发送队列,以及用于将所述发送队列中的应答消息取出,并将取出的应答消息放入发送所述请求消息的服务模块所对应的接收队列;
所述第二复制子单元726,用于在所述第二存储子单元725将取出的应答消息放入发送所述请求消息的服务模块对应的接收队列后,从所述接收队列中复制所述应答消息;所述发送单元730,具体用于将所述第二复制子单元726复制得到的应答消息发送给发送所述请求消息的服务模块。
[0088]所述控制单元720还包括第二确认子单元727、第二删除子单元728,
所述第二确认子单元727,用于在所述发送单元730将复制得到的应答消息发送给发送所述请求消息的服务模块后,确认发送所述请求消息的服务模块是否接收到所述应答消息,并在确认为是时,指示所述第二删除子单元728删除请求消息,在确认为否时,指示所述第二复制子单元726复制所述请求消息;
所述第二复制子单元726,还用于根据所述第二确认子单元727的指示,复制所述应答消息;
所述第二删除子单元728,用于根据所述第二确认子单元727的指示,从所述接收队列中删除所述应答消息。
[0089]可实现上述集中式系统的能力开放服务器,其架构可如图8所示,该架构与前述的能力开放系统结构类似,包括控制装置和至少一个服务模块。控制装置和服务模块的功能与分布式系统相同,在此不再赘述;与分布式系统不同的是,控制装置和服务模块之间的通信机制为服务器内部通信机制。
[0090]如图9所示,本发明实施例提供的控制装置可由网络设备实现,优选的,可由集中式的服务器实现,该服务器包括:
所述服务模块910,用于向所述控制装置发送调用其他服务模块的请求消息,所述请求消息中携带了被调用的服务模块的标识或所请求的业务类型,以及用于接收所述控制装置发送的所述被调用的服务模块根据所述请求消息返回的应答消息; 所述控制装置920,用于接收所述服务模块发送的请求消息,并根据所述被调用的服务模块的标识或所请求的业务类型确定被调用的服务模块,并将所述请求消息发送给确定出的被调用的服务模块,以及用于接收所述被调用的服务模块发送的携带了发送所述请求消息的服务模块的标识的所述应答消息,并根据发送所述请求消息的服务模块的标识确定发送所述请求消息的服务模块,并将所述应答消息发送给发送所述请求消息的服务模块。
[0091]各服务模块对应设置有接收队列和发送队列,
所述控制装置920,还用于在接收到服务模块发送的请求消息之后,将接收到的请求消息放入发送该请求消息的服务模块所对应的发送队列,以及还用于从发送所述请求消息的服务模块所对应的发送队列中取出所述请求消息,并将取出的请求消息放入确定出的被调用的服务模块所对应的接收队列,并从所述接收队列中复制所述请求消息,将复制得到的请求消息发送给所述确定出的被调用的服务模块。
[0092]所述控制装置920,还用于在将复制得到的请求消息发送给确定出的被调用的服务模块之后,确认所述确定出的被调用的服务模块是否接收到所述请求消息,以及还用于在确认所述确定出的被调用的服务模块未接收到所述请求消息后,再次复制所述请求消息并发送给所述确定出的被调用的服务模块,在确认所述确定出的被调用的服务模块接收到所述请求消息后,从所述接收队列中删除所述请求消息。
[0093]各服务模块对应设置有接收队列和发送队列,
所述控制装置920,还用于在接收到所述确定出的被调用的服务模块返回的应答消息之后,将接收到的应答消息放入所述确定出的被调用的服务模块对应的发送队列,以及还用于从所述确定出的被调用的服务模块对应的发送队列中取出所述应答消息,将取出的应答消息发送给发送所述请求消息的服务模块所对应的接收队列,并从所述接收队列中复制所述应答消息,将复制得到的应答消息发送给发送所述请求消息的服务模块。
[0094]所述控制装置920,还用于在将复制得到的应答消息发送给发送所述请求消息的服务模块之后,确认发送所述请求消息的服务模块是否接收到所述应答消息,以及还用于在确认发送所述请求消息的服务模块未接收到所述应答消息后,再次复制所述应答消息并发送给发送所述请求消息的服务模块,在确认发送所述请求消息的服务模块接收到所述应答消息后,从所述接收队列中删除所述应答消息。
[0095]还包含适配模块930 ;
所述适配模块930,用于接收控制装置920发送的消息,将所述控制装置920发送的消息转换为能力提供系统能够解析的消息,并发送给所述能力提供系统,以及用于接收能力提供系统发送的消息,并将所述能力提供系统发送的消息转换为所述控制装置920能够解析的消息,并发送给所述控制装置920。
[0096]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0097]本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0098]本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0099]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0100]以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
【权利要求】
1.一种服务调用方法,应用于包含有服务模块的能力开放系统,其特征在于,所述能力开放系统中还设置有控制装置,所述方法包括: 控制装置接收服务模块发送的调用其它服务模块的请求消息,所述请求消息中携带了被调用的服务模块的标识或所请求的业务类型; 所述控制装置根据所述被调用的服务模块的标识或所请求的业务类型确定被调用的服务模块; 所述控制装置将所述请求消息发送给确定出的被调用的服务模块。
2.如权利要求1所述的方法,其特征在于,各服务模块对应设置有接收队列和发送队列; 所述控制装置接收到服务模块发送的请求消息之后,还包括:将接收到的请求消息放入发送该请求消息的服务模块所对应的发送队列; 所述控制装置将所述请求消息发送给确定出的被调用的服务模块,具体包括:所述控制装置从发送所述请求消息的服务模块所对应的发送队列中取出所述请求消息,将取出的请求消息放入确定出的被调用的服务模块所对应的接收队列,并从所述接收队列中复制所述请求消息,将复制得到的请求消息发送给所述确定出的被调用的服务模块。
3.如权利要求2所述的方法,其特征在于,所述控制装置将复制得到的请求消息发送给确定出的被调用的服务模块之后,还包括: 若所述控制装置确认所述确定出的被调用的服务模块未接收到所述请求消息,则再次复制所述请求消息并发送给所述确定出的被调用的服务模块; 若所述控制装置确认所述确定出的被调用的服务模块接收到所述请求消息,则从所述接收队列中删除所述请求消息。
4.如权利要求1所述的方法,其特征在于,所述将请求消息发送给确定出的被调用的服务1吴块之后,还包括: 所述控制装置接收所述确定出的被调用的服务模块根据所述请求消息返回的应答消息,所述应答消息中携带了发送所述请求消息的服务模块的标识; 所述控制装置根据发送所述请求消息的服务模块的标识确定发送所述请求消息的服务模块; 所述控制装置将所述应答消息发送给发送所述请求消息的服务模块。
5.如权利要求4所述的方法,其特征在于,各服务模块对应设置有接收队列和发送队列; 所述控制装置接收到所述确定出的被调用的服务模块返回的应答消息之后,还包括:将接收到的应答消息放入所述确定出的被调用的服务模块对应的发送队列; 所述控制装置将所述应答消息发送给发送所述请求消息的服务模块,具体包括:所述控制装置从所述确定出的被调用的服务模块对应的发送队列中取出所述应答消息,将取出的应答消息发送给发送所述请求消息的服务模块所对应的接收队列,并从所述接收队列中复制所述应答消息,将复制得到的应答消息发送给发送所述请求消息的服务模块。
6.如权利要求5所述的方法,其特征在于,所述控制装置将复制得到的应答消息发送给发送所述请求消息的服务模块之后,还包括: 若所述控制装置确认发送所述请求消息的服务模块未接收到所述应答消息,则再次复制所述应答消息并发送给发送所述请求消息的服务模块; 若所述控制装置确认发送所述请求消息的服务模块接收到所述应答消息,则从所述接收队列中删除所述应答消息。
7.如权利要求5所述的方法,其特征在于,所述接收队列和所述发送队列为先进先出队列,所述控制装置从所述确定出的被调用的服务模块对应的发送队列中取出所述应答消息,具体包括: 所述控制装置根据发送队列中各应答消息的时间先后顺序从所述确定出的被调用的服务模块对应的发送队列中取出应答消息; 所述控制装置从所述接收队列中复制所述应答消息,具体包括: 所述控制装置根据接收队列中各应答消息的时间先后顺序复制应答消息。
8.如权利要求1所述的方法,其特征在于,所述控制装置根据所请求的业务类型,将所述请求消息发送给所述被调用的服务模块,具体包括: 若所请求的业务类型对应至少两个服务模块,则所述控制装置根据所述至少两个服务模块的负载或/和处理延迟从中选择一个服务模块,并将所述请求消息发送给选择出的服务模块。
9.一种控制装置,应用于包含有服务模块的能力开放系统,其特征在于,所述控制装置包括: 接收单元,用于接收服务模块发送的调用其他服务模块的请求消息,所述请求消息中携带了被调用的服务模块的标识或所请求的业务类型; 控制单元,用于根据所述被调用的服务模块的标识或所请求的业务类型确定被调用的服务模块; 发送单元,用于根据所述控制单元确定出的被调用的服务模块,将所述接收单元接收到的所述请求消息发送给确定出的被调用的服务模块。
10.如权利要求9所述的控制装置,其特征在于,各服务模块对应设置有接收队列和发送队列,所述控制单元包括第一存储子单元、第一复制子单元, 所述第一存储子单元,用于在所述接收单元接收到所述请求消息后,将接收到的所述请求消息放入发送所述请求消息的服务模块所对应的发送队列,以及用于将所述发送队列中的请求消息取出,并将取出的请求消息放入所述确定出的被调用的服务模块所对应的接收队列; 所述第一复制子单元,用于在所述第一存储子单元将取出的请求消息放入所述确定出的被调用的服务模块所对应的接收队列后,从所述接收队列中复制所述请求消息; 所述发送单元,具体用于将所述第一复制子单元复制得到的所述请求消息发送给确定出的被调用的服务模块。
11.如权利要求10所述的控制装置,其特征在于,所述控制单元还包括第一确认子单元、第一删除子单元, 所述第一确认子单元,用于在所述发送单元将复制得到的请求消息发送给确定出的被调用的服务模块后,确认所述确定出的被调用的服务模块是否接收到所述请求消息,并在确认为是时,指示所述第一删除子单元删除请求消息,在确认为否时,指示所述第一复制子单元复制所述请求消息;所述第一复制子单元,还用于根据所述第一确认子单元的指示,复制所述请求消息; 所述第一删除子单元,用于根据所述第一确认子单元的指示,从所述接收队列中删除所述请求消息。
12.如权利要求9所述的控制装置,其特征在于,所述接收单元,还用于接收所述确定出的被调用的服务模块根据所述请求消息返回的应答消息,所述应答消息中携带了发送所述请求消息的服务模块的标识; 所述控制单元,还用于根据所述发送请求消息的服务模块的标识确定发送所述请求消息的服务模块; 所述发送单元,还用于根据所述控制单元确定出的发送所述请求消息的服务模块,将所述接收单元接收到的所述应答消息发送给发送所述请求消息的服务模块。
13.如权利要求12所述的控制装置,其特征在于,各服务模块对应设置有接收队列和发送队列,所述控制单元包括第二存储子单元、第二复制子单元, 所述第二存储子单元,用于在所述接收单元接收到所述应答消息之后,将接收到的所述应答消息放入所述确定出的被调用的服务模块对应的发送队列,以及用于将所述发送队列中的应答消息取出,并将取出的应答消息放入发送所述请求消息的服务模块所对应的接收队列; 所述第二复制子单元,用于在所述第二存储子单元将取出的应答消息放入发送所述请求消息的服务模块对应的接收队列后,从所述接收队列中复制所述应答消息; 所述发送单元,具体用于将所述第二复制子单元复制得到的应答消息发送给发送所述请求消息的服务模块。
14.如权利要求13所 述的控制装置,其特征在于,所述控制单元还包括第二确认子单元、第二删除子单元, 所述第二确认子单元,用于在所述发送单元将复制得到的应答消息发送给发送所述请求消息的服务模块后,确认发送所述请求消息的服务模块是否接收到所述应答消息,并在确认为是时,指示所述第二删除子单元删除请求消息,在确认为否时,指示所述第二复制子单元复制所述请求消息; 所述第二复制子单元,还用于根据所述第二确认子单元的指示,复制所述应答消息; 所述第二删除子单元,用于根据所述第二确认子单元的指示,从所述接收队列中删除所述应答消息。
15.一种能力开放服务器,其特征在于,包含控制装置和至少2个服务模块; 所述服务模块,用于向所述控制装置发送调用其他服务模块的请求消息,所述请求消息中携带了被调用的服务模块的标识或所请求的业务类型,以及用于接收所述控制装置发送的所述被调用的服务模块根据所述请求消息返回的应答消息; 所述控制装置,用于接收所述服务模块发送的请求消息,并根据所述被调用的服务模块的标识或所请求的业务类型确定被调用的服务模块,并将所述请求消息发送给确定出的被调用的服务模块,以及用于接收所述被调用的服务模块发送的携带了发送所述请求消息的服务模块的标识的所述应答消息,并根据发送所述请求消息的服务模块的标识确定发送所述请求消息的服务模块,并将所述应答消息发送给发送所述请求消息的服务模块。
16.如权利要求15所述的能力开放服务器,其特征在于,各服务模块对应设置有接收队列和发送队列, 所述控制装置,还用于在接收到服务模块发送的请求消息之后,将接收到的请求消息放入发送该请求消息的服务模块所对应的发送队列,以及还用于从发送所述请求消息的服务模块所对应的发送队列中取出所述请求消息,并将取出的请求消息放入确定出的被调用的服务模块所对应的接收队列,并从所述接收队列中复制所述请求消息,将复制得到的请求消息发送给所述确定出的被调用的服务模块。
17.如权利要求16所述的能力开放服务器,其特征在于,所述控制装置,还用于在将复制得到的请求消息发送给确定出的被调用的服务模块之后,确认所述确定出的被调用的服务模块是否接收到所述请求消息,以及还用于在确认所述确定出的被调用的服务模块未接收到所述请求消息后,再次复制所述请求消息并发送给所述确定出的被调用的服务模块,在确认所述确定出的被调用的服务模块接收到所述请求消息后,从所述接收队列中删除所述请求消息。
18.如权利要求15所述的能力开放服务器,其特征在于,各服务模块对应设置有接收队列和发送队列, 所述控制装置,还用于在接收到所述确定出的被调用的服务模块返回的应答消息之后,将接收到的应答消息放入所述确定出的被调用的服务模块对应的发送队列,以及还用于从所述确定出的被调用的服务模块对应的发送队列中取出所述应答消息,将取出的应答消息发送给发送所述请求消息的服务模块所对应的接收队列,并从所述接收队列中复制所述应答消息,将复制得到的应答消息发送给发送所述请求消息的服务模块。
19.如权利要求18所述的能力开放服务器,其特征在于, 所述控制装置,还用于在将复制得到的应答消息发送给发送所述请求消息的服务模块之后,确认发送所述请求消息的服务模块是否接收到所述应答消息,以及还用于在确认发送所述请求消息的服务模块未接收到所述应答消息后,再次复制所述应答消息并发送给发送所述请求消息的服务模块,在确认发送所述请求消息的服务模块接收到所述应答消息后,从所述接收队列中删除所述应答消息。
20.如权利要求15所述的能力开放服务器,其特征在于,还包含适配模块; 所述适配模块,用于接收控制装置发送的消息,将所述控制装置发送的消息转换为能力提供系统能够解析的消息,并发送给所述能力提供系统,以及用于接收能力提供系统发送的消息,并将所述能力提供系统发送的消息转换为所述控制装置能够解析的消息,并发送给所述控制装置。
【文档编号】H04L29/06GK103812838SQ201210453028
【公开日】2014年5月21日 申请日期:2012年11月13日 优先权日:2012年11月13日
【发明者】李锦枝 申请人:中国移动通信集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1