RPC
一 基本介绍
RPC(Remote Procedure
Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。
二 协议结构
远程过程调用(RPC)信息协议由两个不同结构组成:调用信息和答复信息。
三 工作原理
运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:
1.调用客户端句柄;执行传送参数
2.调用本地系统内核发送网络消息
3.消息传送到远程主机
4.服务器句柄得到消息并取得参数
5.执行远程过程
6.执行的过程将结果返回服务器句柄
7.服务器句柄返回结果,调用远程系统内核
8.消息传回本地主机
9.客户句柄由内核接收消息
10.客户接收句柄返回的数据
nfs-rpc
nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。
其支持的功能主要为:
1、透明的调用远端服务器提供的功能,例如UserService.getUserNameById;
2、单连接或多连接;
3、连接复用,因此在多线程获取连接时无需阻塞;
4、同步调用;
5、超时机制;
6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB);
7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。
疑问:http是rpc?
HTTP并不是RPC
人们常常错误地将HTTP称作一种远程过程调用(RPC)[23]机制,仅仅是因为它包括了请求和响应。调用远程机器上的一个过程(procedure)的观念,是RPC与其他形式的基于网络的应用通信的区别所在。RPC的协议识别出过程并且传递给它固定的一组参数,然后等待在使用相同接口返回的一个消息中提供的回答。远程方法调用(RMI)也是类似的,除了过程被标识为一个{对象,方法}的组合,而不是一个简单的服务过程(service procedure)。被代理的RMI添加了名称服务的间接层和少量其他的技巧(trick),但是接口基本上是相同的。将HTTP和RPC区分开的并不是语法,甚至也不是使用一个流作为参数所获得的不同的特性,尽管它帮助解释了为何现有的RPC机制对于Web来说是不可用的。使得HTTP与RPC存在重大不同的是:请求是使用具有标准语义的通用的接口定向到资源的,这些语义能够被中间组件和提供服务的来源机器进行解释。结果是使得一个应用支持分层的转换(layers of transformation)和间接层(indirection),并且独立于消息的来源,这对于一个Internet规模、多个组织、无法控制的可伸缩性的信息系统来说,是非常有用的。与之相比较,RPC的机制是根据语言的API(language API)来定义的,而不是根据基于网络的应用来定义的。
HTTP并不是一种传输协议
HTTP并不是被设计为一种传输协议(transport protocol),它是一种转移协议(transfer protocol)(译者注:非常不幸,HTTP刚刚传入我国时,即被翻译为“超文本传输协议”,因为“transport”和“transfer”在中文中都具有“传输”的含意,之后以讹传讹贻害无穷。为了以示区别,译文中一律将“transfer”翻译为“转移”)。在HTTP协议中,消息通过在那些资源的表述上的转移和操作,来对资源执一些动作,从而反映出Web架构的语义。使用这个非常简单的接口来获得广泛的功能是完全有可能的,但是必须要遵循这个接口,以便
HTTP的语义被保持为对于中间组件是可见的。这就是为何HTTP可以穿越防火墙的原因。大多数当前提议的对于HTTP的扩展,除了WebDAV[60]以外,仅仅使用HTTP作为一种使其他的应用协议穿越防火墙的方法,这从根本上来说是一种有误导性的想法。不仅仅是因为这种扩展方式挫败了拥有一个防火墙的目的,而且从长远来看它将无法工作,因为防火墙的厂商将会不得不执行额外的协议过滤。因此这种扩展方式对于那些在HTTP之上的扩展而言是没有意义的,因为在这种情况下HTTP所完成的唯一的事情就是添加了来自一个遗留语法的负载(译者注:即添加了额外的HTTP协议负载)。一个真正的HTTP应用应该将协议用户的动作映射到能够使用HTTP语义来表达的某个事物,以这种方式创建一个基于网络的API来提供服务,能够被用户代理和中间组件所理解,而不需要知道关于应用的任何知识。
分享到:
相关推荐
RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 客户端在不知道调用细节的情况下,调用存在远程机器上的方法,就像...
1. **Phprpc介绍**:Phprpc是一个开源项目,设计目的是简化分布式系统中的通信。它支持多种编程语言,包括PHP、Java、C#等,使得不同语言开发的服务能够无缝协作。Phprpc的核心特性包括高速、低延迟、易于使用和高度...
详细介绍了如何使用Java编写XML-RPC客户端,包括设置环境、发送请求以及处理响应的具体步骤。 ##### 4.4 构建XML-RPC服务器 阐述了构建XML-RPC服务器的过程,包括初始化服务器、定义服务方法以及处理客户端请求的...
联系web和windows 应用的软件PHPRPC. PHPRPC for Delphi 是针对 Delphi 6 - 2009 原生程序开发版本的。如果你想将 PHPRPC 用于 Delphi.NET,请参见 PHPRPC for .NET 章节的相关内容。...这里就不再单独介绍了。
- RPC基础理论:介绍RPC的工作原理,包括调用流程、数据封装和解封装等。 - MIDL使用指南:详细讲解如何编写和使用.idl文件,以及生成的代理和存根代码的作用。 - 服务器端开发:指导如何创建服务,包括注册服务、...
本文将详细介绍 RPC 服务属性按钮全部都是灰色的原因和解决方案,包括手动启动“远程过程调用”服务时出现的错误信息“Could not start the Remote Procedure Call (RPC) Service. Error 1058”、使用注册表编辑器...
文中首先介绍了基于严格成像模型的RPC参数求解方法,然后对天绘一号高分辨率影像进行了实验,结果表明RPC参数的拟合精度很高,完全可以替代严格成像模型。 一、严格成像模型的定义 严格成像模型是指通过数学方法来...
此外,还介绍了如何进行协议的扩展以适应特定需求。 综上所述,JSON-RPC 2.0 规范通过简洁的数据结构和明确的操作流程,为开发人员提供了一个易于理解且灵活的远程过程调用解决方案。无论是对于新手还是有经验的...
2. **INSTALL**:这是安装指南,详细介绍了如何在目标环境中配置和安装PHPRPC3.0。包括系统需求、依赖库、配置步骤等,对于初次接触该框架的开发者来说,这是不可或缺的参考资料。 3. **LICENSE**:文件包含了...
文档会详细介绍如何选择和使用合适的序列化器。 6. **异常处理与错误报告** 当服务调用出现错误时,Phprpc提供了一套完善的异常处理机制。开发者可以自定义错误处理策略,以确保服务的健壮性和稳定性。 7. **安全...
下面将详细介绍如何在Linux上进行RPC实例操作,确保你能够成功编译并得到预期的结果。 首先,我们需要了解RPC的基本概念。RPC允许客户端程序调用服务器上的特定函数,而无需知道底层网络协议的细节。这个过程包括...
RPC 框架原理介绍 RPC 框架是远程过程调用(Remote Procedure Call)的缩写,通过网络通信调用不同的服务,共同支撑一个软件系统,微服务实现的基石技术。使用 RPC 可以解耦系统,方便维护,同时增加系统处理请求的...
**扫描工具介绍** 标题中提到的"RPC溢出漏洞扫描工具"是一款专门用于检测RPC服务中潜在溢出漏洞的安全软件。这类工具通常会模拟不同的RPC请求,尝试触发服务器的异常行为,以此来发现可能的溢出漏洞。它们可能包含...
总结而言,RPC 2000系列PLC软件手册为使用者提供了版权说明、PLC及软件介绍、基础知识要求、软件运行与安装指南、编程与调试操作、操作界面详解、进阶编程知识以及售后服务与技术支持等全方位的知识点。通过这份手册...
下面我们将详细介绍 RPC 服务器不可用的原因和解决方法。 什么是 RPC? RPC 是英文 Remote Procedure Call Protocol 的简写,中文释义为远程过程调用协议。这是一种通过网络从远程计算机程序上请求服务,而不需要...
下面将详细介绍RPC的基本概念、工作原理以及如何实现三方通信。 首先,RPC的核心思想是隐藏网络通信的复杂性,提供一种透明的调用方式。在客户端,开发者只需像调用本地函数一样调用远程服务,而底层的网络传输、...
RPC(Remote Procedure Call)是一种分布式... - README.md或其他文档:介绍项目背景、使用方法和注意事项。 通过对这些知识点的深入理解和应用,开发者可以更好地理解和构建自己的RPC框架,适应微服务架构的需求。
本文将详细介绍手写RPC框架的基本原理,并提供相关知识点。 首先,了解RPC的基本概念。RPC使得客户端可以调用服务器上的方法,而无需知道底层网络协议或细节。这个过程通常包括以下步骤: 1. **序列化与反序列化**...