`

rpc介绍

 
阅读更多

RPC

基本介绍

RPCRemote Procedure Call Protocol——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCPUDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

 

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。

协议结构

远程过程调用RPC)信息协议由两个不同结构组成:调用信息和答复信息。

 

工作原理

  运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:

  1.调用客户端句柄;执行传送参数

  2.调用本地系统内核发送网络消息

  3.消息传送到远程主机

  4.服务器句柄得到消息并取得参数

  5.执行远程过程

  6.执行的过程将结果返回服务器句柄

  7.服务器句柄返回结果,调用远程系统内核

  8.消息传回本地主机

  9.客户句柄由内核接收消息

  10.客户接收句柄返回的数据

 

 

nfs-rpc

nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps168k/秒。

其支持的功能主要为:

1、透明的调用远端服务器提供的功能,例如UserService.getUserNameById;

2、单连接或多连接;

3、连接复用,因此在多线程获取连接时无需阻塞;

4、同步调用;

5、超时机制;

6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB);

7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。

 

疑问:httprpc?

HTTP并不是RPC

    人们常常错误地将HTTP称作一种远程过程调用(RPC[23]机制,仅仅是因为它包括了请求和响应。调用远程机器上的一个过程(procedure)的观念,是RPC与其他形式的基于网络的应用通信的区别所在。RPC的协议识别出过程并且传递给它固定的一组参数,然后等待在使用相同接口返回的一个消息中提供的回答。远程方法调用(RMI)也是类似的,除了过程被标识为一个{对象,方法}的组合,而不是一个简单的服务过程(service procedure)。被代理的RMI添加了名称服务的间接层和少量其他的技巧(trick),但是接口基本上是相同的。将HTTPRPC区分开的并不是语法,甚至也不是使用一个流作为参数所获得的不同的特性,尽管它帮助解释了为何现有的RPC机制对于Web来说是不可用的。使得HTTPRPC存在重大不同的是:请求是使用具有标准语义的通用的接口定向到资源的,这些语义能够被中间组件和提供服务的来源机器进行解释。结果是使得一个应用支持分层的转换(layers of transformation)和间接层(indirection),并且独立于消息的来源,这对于一个Internet规模、多个组织、无法控制的可伸缩性的信息系统来说,是非常有用的。与之相比较,RPC的机制是根据语言的APIlanguage 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来提供服务,能够被用户代理和中间组件所理解,而不需要知道关于应用的任何知识。

分享到:
评论
2 楼 bruce.yuan 2015-11-22  
一看 tps为168k次/秒 ,我就觉得不专业了 。请把完整的性能测试结果拿出来。考虑过各种软件、硬件环境后再说。
1 楼 wge838 2015-09-01  
太泛泛了!

相关推荐

    RPC介绍及开发指南

    RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 客户端在不知道调用细节的情况下,调用存在远程机器上的方法,就像...

    phprpc_3.0.2_java,webservice

    1. **Phprpc介绍**:Phprpc是一个开源项目,设计目的是简化分布式系统中的通信。它支持多种编程语言,包括PHP、Java、C#等,使得不同语言开发的服务能够无缝协作。Phprpc的核心特性包括高速、低延迟、易于使用和高度...

    2001_Programming Web Services with XML-RPC

    详细介绍了如何使用Java编写XML-RPC客户端,包括设置环境、发送请求以及处理响应的具体步骤。 ##### 4.4 构建XML-RPC服务器 阐述了构建XML-RPC服务器的过程,包括初始化服务器、定义服务方法以及处理客户端请求的...

    phprpc_3.0_delphi.zip_Free!_PHPRPC delp_PHPRPC for delp_delphi

    联系web和windows 应用的软件PHPRPC. PHPRPC for Delphi 是针对 Delphi 6 - 2009 原生程序开发版本的。如果你想将 PHPRPC 用于 Delphi.NET,请参见 PHPRPC for .NET 章节的相关内容。...这里就不再单独介绍了。

    RPC.rar_C++ 远程调用_VC6.0 开发RPC_windows RPC_远程过程调用

    - RPC基础理论:介绍RPC的工作原理,包括调用流程、数据封装和解封装等。 - MIDL使用指南:详细讲解如何编写和使用.idl文件,以及生成的代理和存根代码的作用。 - 服务器端开发:指导如何创建服务,包括注册服务、...

    解决 RPC服务 属性按钮全部都是灰色

    本文将详细介绍 RPC 服务属性按钮全部都是灰色的原因和解决方案,包括手动启动“远程过程调用”服务时出现的错误信息“Could not start the Remote Procedure Call (RPC) Service. Error 1058”、使用注册表编辑器...

    基于严格成像模型的遥感影像RPC参数求解.pdf

    文中首先介绍了基于严格成像模型的RPC参数求解方法,然后对天绘一号高分辨率影像进行了实验,结果表明RPC参数的拟合精度很高,完全可以替代严格成像模型。 一、严格成像模型的定义 严格成像模型是指通过数学方法来...

    JSON-RPC 2.0 规范(中文版)

    此外,还介绍了如何进行协议的扩展以适应特定需求。 综上所述,JSON-RPC 2.0 规范通过简洁的数据结构和明确的操作流程,为开发人员提供了一个易于理解且灵活的远程过程调用解决方案。无论是对于新手还是有经验的...

    PHPRPC3.0分享

    2. **INSTALL**:这是安装指南,详细介绍了如何在目标环境中配置和安装PHPRPC3.0。包括系统需求、依赖库、配置步骤等,对于初次接触该框架的开发者来说,这是不可或缺的参考资料。 3. **LICENSE**:文件包含了...

    phprpc中文文档

    文档会详细介绍如何选择和使用合适的序列化器。 6. **异常处理与错误报告** 当服务调用出现错误时,Phprpc提供了一套完善的异常处理机制。开发者可以自定义错误处理策略,以确保服务的健壮性和稳定性。 7. **安全...

    RPC linux 实例,亲测

    下面将详细介绍如何在Linux上进行RPC实例操作,确保你能够成功编译并得到预期的结果。 首先,我们需要了解RPC的基本概念。RPC允许客户端程序调用服务器上的特定函数,而无需知道底层网络协议的细节。这个过程包括...

    RPC框架原理介绍.docx

    RPC 框架原理介绍 RPC 框架是远程过程调用(Remote Procedure Call)的缩写,通过网络通信调用不同的服务,共同支撑一个软件系统,微服务实现的基石技术。使用 RPC 可以解耦系统,方便维护,同时增加系统处理请求的...

    RPC溢出漏洞扫描工具.

    **扫描工具介绍** 标题中提到的"RPC溢出漏洞扫描工具"是一款专门用于检测RPC服务中潜在溢出漏洞的安全软件。这类工具通常会模拟不同的RPC请求,尝试触发服务器的异常行为,以此来发现可能的溢出漏洞。它们可能包含...

    RPC 2000 系列PLc 软件手册

    总结而言,RPC 2000系列PLC软件手册为使用者提供了版权说明、PLC及软件介绍、基础知识要求、软件运行与安装指南、编程与调试操作、操作界面详解、进阶编程知识以及售后服务与技术支持等全方位的知识点。通过这份手册...

    rpc服务器不可用是什么意思.docx

    下面我们将详细介绍 RPC 服务器不可用的原因和解决方法。 什么是 RPC? RPC 是英文 Remote Procedure Call Protocol 的简写,中文释义为远程过程调用协议。这是一种通过网络从远程计算机程序上请求服务,而不需要...

    基于RPC实现的三方通信实例

    下面将详细介绍RPC的基本概念、工作原理以及如何实现三方通信。 首先,RPC的核心思想是隐藏网络通信的复杂性,提供一种透明的调用方式。在客户端,开发者只需像调用本地函数一样调用远程服务,而底层的网络传输、...

    rpc-demo.zip

    RPC(Remote Procedure Call)是一种分布式... - README.md或其他文档:介绍项目背景、使用方法和注意事项。 通过对这些知识点的深入理解和应用,开发者可以更好地理解和构建自己的RPC框架,适应微服务架构的需求。

    手写rpc的项目

    本文将详细介绍手写RPC框架的基本原理,并提供相关知识点。 首先,了解RPC的基本概念。RPC使得客户端可以调用服务器上的方法,而无需知道底层网络协议或细节。这个过程通常包括以下步骤: 1. **序列化与反序列化**...

Global site tag (gtag.js) - Google Analytics