一种分布式节点间的服务调用方法及系统的制作方法

文档序号:7815174阅读:171来源:国知局
一种分布式节点间的服务调用方法及系统的制作方法
【专利摘要】本申请公开了一种分布式节点间服务调用方法及系统,方法包括:在检测到第一节点需要为用户提供第一服务时,在第一节点的服务中心查找是否存在第一服务,若没有发现第一服务,则查询服务定位器,将查找到的与第一服务对应的节点确定为第二节点,然后向第二节点发送远程服务调用请求,来调用第一服务,最终接收第二节点反馈的第一服务,实现了分布式节点间服务的调用。通过本申请的方法,可以在不同节点间任意部署服务模块,而无需考虑各个服务模块之间服务关联性。更加便于服务模块的部署。
【专利说明】—种分布式节点间的服务调用方法及系统

【技术领域】
[0001]本申请涉及分布式Web应用【技术领域】,更具体地说,涉及一种分布式节点间服务调用方法及系统。

【背景技术】
[0002]传统的Web应用采用集群的部署方式,即将一整套Web应用重复部署在多台服务器上,而不能够对应用内部某些功能模块进行特殊处理,Web应用系统的不同功能模块面临的负载压力不一样,各个模块对系统资源的需求也不同,某些负载小的模块不必部署在所有节点上。
[0003]为此,现有技术提出了一种基于OSGI的分布式Web应用技术架构,该分布式结构基于OSGI规范,把Web应用从物理上拆分成多个模块,每个模块都可以单独部署运行,因此可以按照功能模块的实际负载情况调整部署结构。但是,某一个功能模块的业务实现可能需要依赖其它功能模块所提供的服务,而现有技术只能够做到同一分布式节点中的不同功能模块之间的服务调用,而无法做到不同的分布式节点中的功能模块之间的服务调用。因此,现有技术无法做到对任意一个功能模块的随意部署,而需要将服务相关的功能模块均部署在同一分布式节点上,这在一定程度上限制了 Web应用中功能模块的分布式部署。


【发明内容】

[0004]有鉴于此,本申请提供了一种分布式节点间服务调用方法及系统,用于解决现有分布式节点中各个功能模块部署不方便的问题。
[0005]为了实现上述目的,现提出的方案如下:
[0006]一种分布式节点间的服务调用方法,应用于分布式Web服务系统,该系统包括若干个节点和服务定位器,其中每个节点承载有若干个服务模块,分别提供不同的服务,每个节点还设置有存储该节点所有服务模块所注册的服务信息的服务中心,服务定位器存储有各节点中具备远程服务标识的服务模块、服务及对应节点的映射关系,所述服务调用方法包括:
[0007]在检测到第一节点需要为用户提供第一服务时,在所述第一节点的服务中心查找是否存在所述第一服务;
[0008]若所述第一节点的服务中心不存在所述第一服务,则查询所述服务定位器,将与所述第一服务对应的节点确定为第二节点;
[0009]向所述第二节点发送远程服务调用请求,以调用所述第一服务;
[0010]接收所述第二节点反馈的所述第一服务。
[0011]优选地,还包括:
[0012]将接收的所述第一服务注册到所述第一节点的服务中心。
[0013]优选地,在所述第二节点反馈的所述第一服务为序列化后的第一服务时,该方法还包括:
[0014]将序列化后的第一服务进行反序列化。
[0015]一种分布式节点间的服务调用方法,应用于分布式Web服务系统,该系统包括若干个节点和服务定位器,其中每个节点承载有若干个服务模块,分别提供不同的服务,每个节点还设置有存储该节点所有服务模块所注册的服务信息的服务中心,服务定位器存储有各节点中具备远程服务标识的服务模块、服务及对应节点的映射关系,所述服务调用方法包括:
[0016]响应第一节点发送的用于调用第一服务的远程服务调用请求,将所述远程服务调用请求转换为JAVA调用请求;
[0017]利用所述JAVA调用请求调用所述第一服务;
[0018]利用所述远程服务调用请求,将所述第一服务发往所述第一节点。
[0019]优选地,在所述利用所述JAVA调用请求调用所述第一服务之后,还包括:
[0020]将所述第一服务进行序列化处理。
[0021]优选地,在利用所述远程服务调用请求,将所述第一服务发往所述第一节点时,使用简单对象访问SOAP协议。
[0022]一种分布式节点间的服务调用系统,应用于分布式Web服务系统,该系统包括若干个节点和服务定位器,其中每个节点承载有若干个服务模块,分别提供不同的服务,每个节点还设置有存储该节点所有服务模块所注册的服务信息的服务中心,服务定位器存储有各节点中具备远程服务标识的服务模块、服务及对应节点的映射关系,所述服务调用系统包括:
[0023]第一服务查找模块,用于在检测到第一节点需要为用户提供第一服务时,在所述第一节点的服务中心查找是否存在所述第一服务;
[0024]第二服务查找模块,用于在所述第一节点的服务中心不存在所述第一服务时,查询所述服务定位器,将与所述第一服务对应的节点确定为第二节点;
[0025]服务调用请求发送模块,用于向所述第二节点发送远程服务调用请求,以调用所述第一服务;
[0026]服务接收模块,用于接收所述第二节点反馈的所述第一服务。
[0027]优选地,在所述第二节点反馈的所述第一服务为序列化后的第一服务时,还包括:
[0028]反序列化模块,用于将序列化后的第一服务进行反序列化。
[0029]一种分布式节点间的服务调用系统,应用于分布式Web服务系统,该系统包括若干个节点和服务定位器,其中每个节点承载有若干个服务模块,分别提供不同的服务,每个节点还设置有存储该节点所有服务模块所注册的服务信息的服务中心,服务定位器存储有各节点中具备远程服务标识的服务模块、服务及对应节点的映射关系,所述服务调用系统包括:
[0030]请求响应模块,用于响应第一节点发送的用于调用第一服务的远程服务调用请求,将所述远程服务调用请求转换为JAVA调用请求;
[0031]服务调用模块,用于利用所述JAVA调用请求调用所述第一服务;
[0032]服务发送模块,用于利用所述远程服务调用请求,将所述第一服务发往所述第一节点。
[0033]优选地,还包括:
[0034]序列化模块,用于将所述服务调用模块所调用的第一服务进行序列化处理。
[0035]从上述的技术方案可以看出,本申请实施例提供的分布式节点间服务调用方法,首先对现有分布式Web服务系统进行改进,在各节点中设置服务中心,用于存储本节点服务模块注册的服务,设置服务定位器,来存储各个节点中具备远程服务标识的服务模块、月艮务及对应节点的映射关系,在检测到第一节点需要为用户提供第一服务时,在第一节点的服务中心查找是否存在第一服务,若没有发现第一服务,则查询服务定位器,将查找到的与第一服务对应的节点确定为第二节点,然后向第二节点发送远程服务调用请求,来调用第一服务,最终接收第二节点反馈的第一服务。实现了分布式节点间服务的调用。通过本申请的方法,可以在不同节点间任意部署服务模块,而无需考虑各个服务模块之间服务关联性。更加便于服务模块的部署。

【专利附图】

【附图说明】
[0036]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0037]图1为本申请实施例公开的一种分布式节点间的服务调用方法流程图;
[0038]图2为本申请实施例公开的另一种分布式节点间的服务调用方法流程图;
[0039]图3为本申请实施例公开的又一种分布式节点间服务调用方法流程图;
[0040]图4为本申请实施例公开的一种分布式节点间的服务调用系统结构示意图;
[0041]图5为本申请实施例公开的另一种分布式节点间的服务调用系统结构示意图。

【具体实施方式】
[0042]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0043]现有的分布式Web应用在各个服务模块部署时,需要将服务相关联的服务模块部署在同一节点上,这样在相互调用请求时,可以直接调用同一节点上的服务。现有技术无法实现不同节点上部署的服务模块之间的服务调用,因此在一定程度上限制了 Web应用中服务模块的分布式部署。为此,本申请提供了一种解决方案,本申请的分布式节点间服务调用方法应用于分布式Web服务系统中,本申请对其进行了改造,在该系统的每个节点中分别增设服务中心。服务中心用于存储该节点上每个服务模块注册的服务信息。该系统中还设置了服务定位器,服务定位器存储了各个节点中具备远程服务标识的服务模块、服务及对应节点的映射关系。
[0044]在分布式Web服务系统启动过程中,会启动系统中各个节点。各个节点中的服务模块会在启动后将自身的服务信息注册到节点上的服务中心。在注册过程中,如果某一个服务模块所注册的服务携带有远程服务标识,也即该服务有可能被其他节点上的服务模块所使用,会将该携带有远程服务标识的服务、服务模块及该服务模块所在的节点三者之间的映射关系存储到服务定位器中。
[0045]参见图1,图1为本申请实施例公开的一种分布式节点间的服务调用方法流程图。
[0046]如图1所示,该方法包括:
[0047]步骤S100、在检测到第一节点需要为用户提供第一服务时,在所述第一节点的服务中心查找是否存在所述第一服务;
[0048]首先需要说明的是,这里我们使用第一节点、第一服务、第二节点等表述方式仅仅是为了便于进行解释,其并没有限定的意思。
[0049]若第一节点某一时刻需要为用户提供第一服务,首先去第一节点的服务中心去查找是否存在已经注册的第一服务,也即判断第一节点中的服务模块是否能够提供第一服务。
[0050]步骤S110、若所述第一节点的服务中心不存在所述第一服务,则查询所述服务定位器,将与所述第一服务对应的节点确定为第二节点;
[0051]具体地,在第一节点的服务中心不存在第一服务时,也意味着第一节点无法为用户提供此服务,此时本申请通过查询服务定位器,查询能够提供第一服务的节点,将其确定为第二节点。而如果在第一节点服务中心上查找到第一服务,则直接调用第一服务来响应用户的请求。
[0052]步骤S120、向所述第二节点发送远程服务调用请求,以调用所述第一服务;
[0053]具体地,在查找到第二节点后,向第二节点发送远程服务调用请求,来调用第一服务。
[0054]需要说明的是,节点间进行服务调用时需要使用远程服务调用请求,而节点内进行服务调用时使用JAVA调用请求。这是两种不同类型的服务调用请求。
[0055]步骤S130、接收所述第二节点反馈的所述第一服务。
[0056]本申请实施例提供的分布式节点间服务调用方法,首先对现有分布式Web服务系统进行改进,在各节点中设置服务中心,用于存储本节点服务模块注册的服务,设置服务定位器,来存储各个节点中具备远程服务标识的服务模块、服务及对应节点的映射关系,在检测到第一节点需要为用户提供第一服务时,在第一节点的服务中心查找是否存在第一服务,若没有发现第一服务,则查询服务定位器,将查找到的与第一服务对应的节点确定为第二节点,然后向第二节点发送远程服务调用请求,来调用第一服务,最终接收第二节点反馈的第一服务。实现了分布式节点间服务的调用。通过本申请的方法,可以在不同节点间任意部署服务模块,而无需考虑各个服务模块之间服务关联性。更加便于服务模块的部署。
[0057]为了便于对上述服务调用过程进行理解,我们以一个具体的例子来详细说明上述整个过程。
[0058]首先介绍一下应用场景:某学校教务管理系统中有考试管理和学生管理两个功能模块,学生管理模块部署在节点1,考试管理模块部署在节点2。考试管理功能模块需要使用“获取学生信息”的服务,该服务由学生管理模块提供。
[0059]为了解释方便,“获取学生信息”的服务简称为服务A。结合应用场景,整个流程如下:
[0060]教务管理系统启动过程中会启动节点I和节点2,节点I在启动过程中会注册服务A到服务中心,因为服务A带有远程服务标识,在该服务A进行注册时,同时生成服务A的服务端代理。并且会将学生管理模块、服务A和节点I的映射关系存储到服务定位器。
[0061]教务管理系统启动完成,某位老师在考试管理页面点击了学生成绩查询按钮,该请求交给节点2的考试管理功能模块来处理,处理该请求的后台Java程序调用了服务A (此时服务A只是个空对象),程序首先会在节点2的服务中心寻找服务A,如果服务A不存在,会进一步去服务定位器中查询远程服务,同时生成服务A的客户端代理,考试管理功能模块暂时使用服务A的客户端代理(之前Java调用的服务A由空对象转化为客户端代理),如果在服务定位器中查询到服务A的远程服务,则根据此前注册的映射关系,去节点I请求服务A,请求最终会返回节点I注册的服务A (可以获取学生信息的服务A),再将该服务A赋值给节点2的考试管理功能模块使用的客户端代理,此时考试管理功能模块使用服务A“获取学生信息”,查询考试成绩的请求处理完成,浏览器中正确显示考试成绩和关联的学生信息。
[0062]需要说明的是,第二节点反馈的第一服务可能是经过序列化后的第一服务,因此对应的上述过程需要增加一个对第一服务进行反序列化的过程。
[0063]进一步,参见图2,图2为本申请实施例公开的另一种分布式节点间的服务调用方法流程图。
[0064]结合图1和图2可知,该方法还可以包括:
[0065]步骤S200、将接收的所述第一服务注册到所述第一节点的服务中心。
[0066]相比于上一实施例,本实施例中将获取的第一服务进一步注册到第一节点的服务中心中。这样,后续如果还需要使用第一服务的话,可以直接在第一节点的服务中心中调用第一服务,而无需再次向第二节点调用,在节省时间的同时也提供了效率。
[0067]上述服务调用方法是以发起调用请求一侧的角度进行描述的,可想而知,一个节点在具备发起服务调用功能的同时,还需要具备响应其它节点发送的服务调用请求的能力,因此接下来我们站在上述实施例中第二节点的角度再对服务调用方法进行阐述。
[0068]参见图3,图3为本申请实施例公开的又一种分布式节点间服务调用方法流程图。
[0069]该方法所应用的分布式Web服务系统与实施例中相同,此处不进行赘述。
[0070]该方法包括:
[0071]步骤S300、响应第一节点发送的用于调用所述第一服务的远程服务调用请求,将所述远程服务调用请求转换为JAVA调用请求;
[0072]具体地,这里第一节点是服务调用请求发起者。在接收第一节点发送的用于调用第一服务的远程服务调用请求后,需要将远程服务调用请求转换为JAVA调用请求,只有转换为JAVA调用请求后才可以在节点内进行服务的调用。
[0073]步骤S310、利用所述JAVA调用请求调用所述第一服务;
[0074]步骤S320、利用所述远程服务调用请求,将所述第一服务发往所述第一节点。
[0075]在调用了第一服务之后,需要理由远程服务调用请求再将第一服务发往第一节点。这个过程中,可以使用简单对象访问S0AP(Simple Object Access Protocol)协议进行服务的传输。
[0076]进一步,在利用JAVA调用请求调用第一服务之后,还可以增加一个对第一服务进行序列化的过程。通过序列化将信息转换为便于传输的格式。
[0077]本实施例中,介绍了分布式节点在接收其它节点发送的服务调用请求后的处理过程,通过上述方案可以实现远程服务的调用过程。需要说明的是,在两个不同节点进行远程服务调用时,服务调用请求发起方和服务供应方可以分别按照上述实施例中提供的方式运行。
[0078]下面对本申请实施例提供的分布式节点间的服务调用系统进行描述,下文描述的分布式节点间的服务调用系统与上文描述的分布式节点间的服务调用方法可相互对应参照。
[0079]在上述论述中,我们分别以第一节点和第二节点两个不同的角度对本申请公开的服务调用方法进行了介绍,对应的,下面分别从服务调用请求发起方的角度及服务提供方的角度介绍本申请的服务调用系统。
[0080]参见图4,图4为本申请实施例公开的一种分布式节点间的服务调用系统结构示意图。
[0081]如图4所示,该系统包括:
[0082]第一服务查找模块41,用于在检测到第一节点需要为用户提供第一服务时,在所述第一节点的服务中心查找是否存在所述第一服务;
[0083]第二服务查找模块42,用于在所述第一节点的服务中心不存在所述第一服务时,查询所述服务定位器,将与所述第一服务对应的节点确定为第二节点;
[0084]服务调用请求发送模块43,用于向所述第二节点发送远程服务调用请求,以调用所述第一服务;
[0085]服务接收模块44,用于接收所述第二节点反馈的所述第一服务。
[0086]可选的,在上述基础上还可以增加服务注册模块,用于将接收的第一服务注册到第一节点的服务中心中。
[0087]可选的,还可以包括反序列化模块,用于当第二节点反馈的第一服务为序列化后的第一服务时,将序列化后的第一服务进行反序列化。
[0088]本申请实施例首先对现有分布式Web服务系统进行改进,在各节点中设置服务中心,用于存储本节点服务模块注册的服务,设置服务定位器,来存储各个节点中具备远程服务标识的服务模块、服务及对应节点的映射关系,本申请实施例中的服务调用系统在检测到第一节点需要为用户提供第一服务时,在第一节点的服务中心查找是否存在第一服务,若没有发现第一服务,则查询服务定位器,将查找到的与第一服务对应的节点确定为第二节点,然后向第二节点发送远程服务调用请求,来调用第一服务,最终接收第二节点反馈的第一服务。实现了分布式节点间服务的调用。通过本申请的方法,可以在不同节点间任意部署服务模块,而无需考虑各个服务模块之间服务关联性。更加便于服务模块的部署。
[0089]接下来从另一个角度再介绍本申请实施例公开的分布式节点间的服务调用系统。
[0090]参见图5,图5为本申请实施例公开的另一种分布式节点间的服务调用系统结构示意图。
[0091]如图5所示,该服务调用系统包括:
[0092]请求响应模块51,用于响应第一节点发送的用于调用第一服务的远程服务调用请求,将所述远程服务调用请求转换为JAVA调用请求;
[0093]服务调用模块52,用于利用所述JAVA调用请求调用所述第一服务;
[0094]服务发送模块53,用于利用所述远程服务调用请求,将所述第一服务发往所述第一节点。
[0095]可选的,服务调用系统还可以包括:
[0096]序列化模块,用于将所述服务调用模块52所调用的第一服务进行序列化处理。
[0097]需要说明的是,上述图4和图5所公开的两种服务调用系统分别应用于远程服务调用请求过程和远程服务调用请求响应过程。两个不同节点在进行远程服务调用过程中,分别使用上述两个服务调用系统来完成服务调用。
[0098]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0099]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0100]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【权利要求】
1.一种分布式节点间的服务调用方法,其特征在于,应用于分布式Web服务系统,该系统包括若干个节点和服务定位器,其中每个节点承载有若干个服务模块,分别提供不同的服务,每个节点还设置有存储该节点所有服务模块所注册的服务信息的服务中心,服务定位器存储有各节点中具备远程服务标识的服务模块、服务及对应节点的映射关系,所述服务调用方法包括: 在检测到第一节点需要为用户提供第一服务时,在所述第一节点的服务中心查找是否存在所述第一服务; 若所述第一节点的服务中心不存在所述第一服务,则查询所述服务定位器,将与所述第一服务对应的节点确定为第二节点; 向所述第二节点发送远程服务调用请求,以调用所述第一服务; 接收所述第二节点反馈的所述第一服务。
2.根据权利要求1所述的服务调用方法,其特征在于,还包括: 将接收的所述第一服务注册到所述第一节点的服务中心。
3.根据权利要求1所述的服务调用方法,其特征在于,在所述第二节点反馈的所述第一服务为序列化后的第一服务时,该方法还包括: 将序列化后的第一服务进行反序列化。
4.一种分布式节点间的服务调用方法,其特征在于,应用于分布式Web服务系统,该系统包括若干个节点和服务定位器,其中每个节点承载有若干个服务模块,分别提供不同的服务,每个节点还设置有存储该节点所有服务模块所注册的服务信息的服务中心,服务定位器存储有各节点中具备远程服务标识的服务模块、服务及对应节点的映射关系,所述服务调用方法包括: 响应第一节点发送的用于调用第一服务的远程服务调用请求,将所述远程服务调用请求转换为JAVA调用请求; 利用所述JAVA调用请求调用所述第一服务; 利用所述远程服务调用请求,将所述第一服务发往所述第一节点。
5.根据权利要求4所述的服务调用方法,其特征在于,在所述利用所述JAVA调用请求调用所述第一服务之后,还包括: 将所述第一服务进行序列化处理。
6.根据权利要求4所述的服务调用方法,其特征在于,在利用所述远程服务调用请求,将所述第一服务发往所述第一节点时,使用简单对象访问SOAP协议。
7.一种分布式节点间的服务调用系统,其特征在于,应用于分布式Web服务系统,该系统包括若干个节点和服务定位器,其中每个节点承载有若干个服务模块,分别提供不同的服务,每个节点还设置有存储该节点所有服务模块所注册的服务信息的服务中心,服务定位器存储有各节点中具备远程服务标识的服务模块、服务及对应节点的映射关系,所述服务调用系统包括: 第一服务查找模块,用于在检测到第一节点需要为用户提供第一服务时,在所述第一节点的服务中心查找是否存在所述第一服务; 第二服务查找模块,用于在所述第一节点的服务中心不存在所述第一服务时,查询所述服务定位器,将与所述第一服务对应的节点确定为第二节点; 服务调用请求发送模块,用于向所述第二节点发送远程服务调用请求,以调用所述第一服务; 服务接收模块,用于接收所述第二节点反馈的所述第一服务。
8.根据权利要求7所述的服务调用系统,其特征在于,在所述第二节点反馈的所述第一服务为序列化后的第一服务时,还包括: 反序列化模块,用于将序列化后的第一服务进行反序列化。
9.一种分布式节点间的服务调用系统,其特征在于,应用于分布式Web服务系统,该系统包括若干个节点和服务定位器,其中每个节点承载有若干个服务模块,分别提供不同的服务,每个节点还设置有存储该节点所有服务模块所注册的服务信息的服务中心,服务定位器存储有各节点中具备远程服务标识的服务模块、服务及对应节点的映射关系,所述服务调用系统包括: 请求响应模块,用于响应第一节点发送的用于调用第一服务的远程服务调用请求,将所述远程服务调用请求转换为JAVA调用请求; 服务调用模块,用于利用所述JAVA调用请求调用所述第一服务; 服务发送模块,用于利用所述远程服务调用请求,将所述第一服务发往所述第一节点。
10.根据权利要求9所述的服务调用系统,其特征在于,还包括: 序列化模块,用于将所述服务调用模块所调用的第一服务进行序列化处理。
【文档编号】H04L29/08GK104202427SQ201410491943
【公开日】2014年12月10日 申请日期:2014年9月24日 优先权日:2014年9月24日
【发明者】朱伟, 沈丽菁, 朱征 申请人:国家电网公司, 北京中电普华信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1