[发明专利]用于处理远程过程调用请求的方法及系统无效
申请号: | 201210037171.2 | 申请日: | 2012-02-17 |
公开(公告)号: | CN102594891A | 公开(公告)日: | 2012-07-18 |
发明(设计)人: | 唐宏伟;霍志刚;余璜;冯圣中 | 申请(专利权)人: | 中国科学院计算技术研究所 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L12/56 |
代理公司: | 北京泛华伟业知识产权代理有限公司 11280 | 代理人: | 王勇 |
地址: | 100190 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 处理 远程 过程 调用 请求 方法 系统 | ||
技术领域
本发明属于分布式计算领域,尤其涉及远程过程调用。
背景技术
远程过程调用(Remote Procedure Call,RPC)是指在分布式系统中,由本地系统上的进程或线程激活远程系统上的进程或线程,并将控制从本地传递到远程,由远程进程或线程执行特定的过程以完成相应的在本地系统上无法完成的功能。远程过程调用是一种易于编程的分布式编程模型,它隐藏了通信细节,给上层提供与本地过程调用一致的编程接口。
目前比较流行的RPC实现包括Sun RPC、OSF/DCE RPC等。它们关注的是对系统跨平台性的支持、对异构网络环境的支持、安全性特征、故障恢复等问题,同时也采用了包括多线程等在内的技术以提高RPC的并发性。但在一些需要极高并发性和高吞吐率的系统中,这些系统都比较难以达到要求。例如,Linux操作系统中实现的NFS服务器一般支持的客户端数量仅为30台左右,很大程度上是因为在RPC服务器端处理来自客户端的远程过程调用请求的机制限制了其扩展性,在客户端数量超过一定数量以后,RPC服务器端不能及时地响应客户端的请求。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种用于处理远程过程调用请求的方法,可以满足高并发和高吞吐的需求。
本发明的目的是通过以下技术方案实现的:
本发明提供了一种用于处理远程过程调用请求的方法,所述方法包括:
步骤1)接收来自客户端的远程过程调用(RPC)请求;
步骤2)将所收到的RPC请求以流水线的方式进行处理;
其中,所述流水线由多个流水段构成,每个流水段包括一个或多个线程,每个流水段中的每个线程处理的是相同的子任务,不同的流水段中的线程处理的是不同的子任务,前一个流水段的输出作为后一个流水段的输入,各个流水段的子任务组合起来共同完成对来自客户端的RPC请求的处理。
上述技术方案中,所述流水线中的流水段的划分应符合下述条件:
各个流水段的子任务对系统资源的需求应尽量不同;每个流水段的子任务之间没有重叠,且各个流水段的子任务组合起来应完成对来自客户端的RPC请求的处理过程。
上述技术方案中,所述流水线可以包括5个流水段:
流水段1的子任务为与RPC客户端建立通信连接;
流水段2的子任务为从所建立的连接接收RPC请求分片;
流水段3的子任务为将所接收的RPC请求的分片组合成完整的RPC请求包;
流水段4的子任务为基于RPC请求包对RPC请求进行处理;
流水段5的子任务为将对RPC请求处理的结果作为应答返回到客户端。
上述技术方案中,所述步骤2)可以包括以下步骤:
将收到的来自客户端的RPC请求提交给流水段1中的线程进行处理;
流水段1中的线程与该RPC客户端建立通信连接,并在将连接标识符传递到流水段2后,返回继续处理其他的RPC请求;
流水段2中的线程基于连接标识符来从将所建立的连接接收RPC请求分片,在将所接收的分片传递到流水段3后,返回继续处理其他的RPC请求;
流水段3中的线程将所接收的RPC请求的分片组合成完整的RPC请求包并传递到流水段4,然后返回继续处理其他的RPC请求;
流水段4中的线程基于RPC请求包对RPC请求进行处理,并将处理的结果传递到流水段5后,返回继续处理其他的RPC请求;
流水段5中的线程将对RPC请求处理的结果作为应答返回到客户端后,返回继续处理其他的RPC请求。
上述技术方案中,流水段之间的数据传递是通过流水段之间的数据通路来实现的,每个流水段都有一个输入数据通路和一个输出数据通路,每个数据通路既是前一个流水段的输出数据通路也是后一个流水段段的输入数据通路,每个流水段中的所有线程共享该流水段的输入数据通路和输出数据通路。
上述技术方案中,所述数据通路可以为先进先出队列。
上述技术方案中,每个流水段所包含的线程数量可以是固定的。
上述技术方案中,还可以包括动态调整每个流水段所包含的线程数量的步骤。
上述技术方案中,动态调整每个流水段所包含的线程数量的步骤可以包括:周期性地调整各个流水段中的线程数量,以使得各个流水段具有相同的每线程平均待处理任务数,所述每线程平均待处理任务数是由每个流水段的待处理任务的数量除以该流水段的线程的数量得到的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算技术研究所,未经中国科学院计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210037171.2/2.html,转载请声明来源钻瓜专利网。