本发明专利技术提出一种远程调用方法,包括以下步骤:客户端向服务器端发送调用远程方法以及获取返回值的请求;服务器端接收请求,并创建多个线程以执行被调用的远程方法,其中,在被调用的远程方法的执行过程中,允许多个线程中的任意线程通过部分返回接口任意次地返回部分返回值;当返回值全部返回后,服务器端向客户端发送调用结束通知。本发明专利技术的方法,允许任意线程通过部分返回接口任意次地返回部分返回值,减少了数据平均返回时间,加快了分布式系统层间数据聚集,将数据的产生和传输交错运行,缩短了整个系统的响应时间。本发明专利技术还提出一种远程调用系统。
【技术实现步骤摘要】
远程调用方法及系统
本专利技术涉及分布式技术与系统领域,尤其涉及一种远程调用方法及系统。
技术介绍
目前,构建大型分布式系统通常通过“层”的抽象:“层”可能是多层架构中的“层”,也可能是组件系统中的一个组件,或者是面向服务架构(Service-OrientedArchitecture, SOA)中的一个服务。在这种架构中,系统被划分为多个“层”,而各个“层”之间需要定义接口来进行交互。在系统设计和实现中,远程调用(Remote Calling)这种层间交互方式愈发不可替代。通常采用的远程调用技术有:传统的远程过程调用(RemoteProcedure Call, RPC), Java语言的远程方法调用(Remote Method Invocation,RMI),.NET远程技术(.NET Remoting),以及Thrift技术。与此同时,数据聚集(Data Aggregation)成为当前分布式系统中典型的数据流模式。例如,普遍应用的MapReduce的“shuffle”阶段,任意一个reducer会向所有mapper索要自己对应部分的中间数据。这种分割-聚集设计模式已经成为很多大型分布式应用的基础,诸如网页搜索、社交网络内容组合等。然而,当数据聚集遇到多层架构时,传统的远程调用的服务器只能在最慢的数据获得后才统一返回给客户端,这样会明显增加系统的平均响应时间。虽然一些数据流优化的机制涵盖了对数据流的优化,但是这些机制依赖于特定的编程框架,缺乏普遍适用性。而且,它们与传统的“层”抽象容易产生冲突。若采用此种系统设计,需要完全重构,带来诸多问题。异步远程调用可以缓解调用者对慢数据的等待,但有些不支持返回值,有些只允许客户端通过访问特定的对象来获取返回值。现有工作对上述问题的处理无法满足分布式系统的需求,即不能良好地支持服务器端的多线程和分布式编程环境。
技术实现思路
本专利技术旨在至少解决上述技术问题之一。为此,本专利技术的第一个目的在于提出一种远程调用方法。该方法能够加快分布式系统的层间数据聚集,将数据的产生和传输交错运行,缩短了整个系统的响应时间。本专利技术的第二个目的在于提出一种远程调用系统。为了实现上述目的,本专利技术第一方面实施例的远程调用方法包括以下步骤:客户端向服务器端发送调用远程方法以及获取返回值的请求;所述服务器端接收所述请求,并创建多个线程以执行被 调用的所述远程方法,其中,在所述被调用的远程方法的执行过程中,允许所述多个线程中的任意线程通过部分返回接口任意次地返回部分目标数据;以及当所述目标数据全部返回后,所述服务器端向所述客户端发送调用结束通知。根据本专利技术实施例的远程调用方法,允许多个线程中的任意线程通过部分返回接口任意次地返回部分返回值,减少了数据平均返回时间,加快了分布式系统层间数据聚集,防止慢数据拖累其他数据,增强了后续处理的流水线,将数据的产生和传输交错运行,缩短了整个系统的响应时间。在一些示例中,为每个所述被调用的远程方法赋予一个初始值为0的整型引用计数,其支持如下两个原子操作:p操作对所述引用计数减一 ;v操作对所述引用计数加一。进一步地,在一些示例中,每一个点绑定一个所述P操作,每一条边绑定一个所述V操作,其中,点为执行所述被调用的远程方法所涉及的线程,边为一个线程创建另一个线程的派生关系。在一些示例中,所述执行所述被调用的远程方法和所述发送调用结束通知通过偏序协议完成,所述偏序协议具体包括:当一个线程创建另一个线程时,与相应的所述边绑定的所述V操作被执行;当一个线程结束时,与所述点绑定的所述P操作被执行;调用结束通知在根绑定的所有所述V操作之后发生,其中,根为所述被调用的远程方法所在的线程;调用结束通知在所述引用计数变为0后发生。在一些示例中,还包括:所述客户端在所述远程服务调用后获取部分或全部所述返回值。本专利技术第二方面实施例的远程调用系统,包括:客户端,用于向服务器端发送调用远程方法的请求,以及查询所述服务器端返回的返回值;服务器端,用于接收所述客户端发送的调用请求,执行被调用的远程方法,并向所述客户端发送返回值和调用结束通知。根据本专利技术实施例的远程调用系统,允许多个线程中的任意线程通过部分返回接口任意次地返回部分返回值,减少了数据平均返回时间,加快了分布式系统层间数据聚集,防止慢数据拖累其他数据,增强了后续处理的流水线,将数据的产生和传输交错运行,缩短了整个系统的响应时间。在一些示例中,为每个所述被调用的远程方法赋予一个初始值为0的整型引用计数,其支持如下两个原子操作:p操作对所述引用计数减一 ;v操作对所述引用计数加一。进一步地,在一些示例中,每一个点绑定一个所述P操作,每一条边绑定一个所述V操作,其中,点为执行所述被调用的远程方法所涉及的线程,边为一个线程创建另一个线程的派生关系。在一些示例中,所述服务器端通过部分返回接口向客户端发送所述返回值和调用结束通知。所述执行所述被调用的远程方法和所述发送调用结束通知通过偏序协议完成,所述偏序协议具体包括:当一个线程创建另一个线程时,与相应的所述边绑定的所述V操作被执行;当一个线程结束时,与所述点绑定的所述P操作被执行;调用结束通知在根绑定的所有所述V操作之后发生,其中,根为所述被调用的远程方法所在的线程;调用结束通知在所述引用计数变为0后发生。在一些示例中,还包括:所述客户端在所述远程服务调用后获取部分或全部所述返回值。本专利技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术的实践了解到。【附图说明】本专利技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,图1是根据本专利技术一个实施例的远程调用方法的流程图;图2是本专利技术一个实施例的服务器端运行的Java代码示例图;图3是本专利技术一个实施例与传统的远程调用的客户端与服务器的交互对比示意图;图4是根据本专利技术实施例的偏序协议示意图;图5是本专利技术一个实施例的客户端运行的Java代码示例图;图6是本专利技术一个实施例的远程调用方法应用于云存储系统Corsair的仿真结果图;和图7是根据本专利技术一个实施例的远程调用系统的结构框图。【具体实施方式】下面详细描述本专利技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本专利技术,而不能理解为对本专利技术的限制。相反,本专利技术的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。在本专利技术的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本专利技术的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本专利技术中的具体含义。此外,在本专利技术的描述中,除非另有说明,“多个”的含义是两个或两个以上。流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻本文档来自技高网...
【技术保护点】
一种远程调用方法,其特征在于,包括以下步骤:客户端向服务器端发送调用远程方法以及获取返回值的请求;所述服务器端接收所述请求,并创建多个线程以执行被调用的所述远程方法,其中,在所述被调用的远程方法的执行过程中,允许所述多个线程中的任意线程通过部分返回接口任意次地返回部分返回值;以及当所述返回值全部返回后,所述服务器端向所述客户端发送调用结束通知。
【技术特征摘要】
1.一种远程调用方法,其特征在于,包括以下步骤: 客户端向服务器端发送调用远程方法以及获取返回值的请求; 所述服务器端接收所述请求,并创建多个线程以执行被调用的所述远程方法,其中,在所述被调用的远程方法的执行过程中,允许所述多个线程中的任意线程通过部分返回接口任意次地返回部分返回值;以及 当所述返回值全部返回后,所述服务器端向所述客户端发送调用结束通知。2.如权利要求1所述的方法,其特征在于,还包括: 为每个所述被调用的远程方法赋予一个初始值为O的整型引用计数,其支持如下两个原子操作: P操作对所述引用计数减一; V操作对所述引用计数加一。3.如权利要求2所述的方法,其特征在于,每一个点绑定一个所述P操作,每一条边绑定一个所述V操作,其中,点为执行所述被调用的远程方法所涉及的线程,边为一个线程创建另一个线程的派生关系。4.如权利要求1任一项所述的方法,其特征在于,所述执行所述被调用的远程方法和所述发送调用结束通知通过 偏序协议完成,所述偏序协议具体包括: 当一个线程创建另一个线程时,与相应的所述边绑定的所述V操作被执行; 当一个线程结束时,与所述点绑定的所述P操作被执行; 调用结束通知在根绑定的所有所述V操作之后发生,其中,根为所述被调用的远程方法所在的线程; 调用结束通知在所述引用计数变为O后发生。5.如权利要求1所述的方法,其特征在于,还包括:所述客户端在所述远程...
【专利技术属性】
技术研发人员:武永卫,郑纬民,陈康,任晶磊,
申请(专利权)人:清华大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。