`

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

    手写rpc的项目

    自己动手手写一个rpc框架,只是简单介绍原理,希望能够学习rpc的你给予一定的帮助。

    RPC远程过程调用详细讲解

    此文档对于RPC远程过程调用做了较为详细的介绍,对于初学者来说了解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框架原理介绍.docx

    RPC框架原理介绍.docx

    RPC框架介绍及简单实现

    包含RPC原理、NIO操作、netty简单的api、自定义RPC框架

    .net实现的rpc远程调用原理

    介绍了.net环境下rpc远程调用,包括信道远程对象,注册,激活,代理获取等。通过代码运行更好的理解rpc调用的真个过程。

    windows rpc基本使用Demo

    windows rpc接口使用,分为服务端和客户端,具体介绍详见blog:https://blog.csdn.net/herojuice/article/details/81015325

    werpc:一个简单的rpc框架

    介绍 A simple rpc framework —— werpc. RPC(Remote Procedure Call):远程过程调用,像调用本地方法一样调用远程过程。采用Client-Server结构,通过request-response消息模式实现。 RPC框架就是指封装好了参数编组...

    REST与RPC的区别.pdf

    整理了RPC和RESTful服务调用方式的区别,详细介绍了RPC和RESTful的基本内容、架构、核心组件以及两种方式的对比

    技术选型分享:JAVA中几种常用的RPC框架介绍.docx

    RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展。Java中的RPC框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等。RPC还有一个特点就是能够跨语言,本...

    TR069协议编程基础知识-RPC详细解析.pdf

    TR069协议编程基础知识-RPC详细解析.pdf,TR069 协议包数据,为了能够正确的处理设备的请求响应,就必须对 ...下面具体介绍 RPC Methods 层的内容,首先我们需要知道 ACS和 CPE建立连接的方式。这里主要介绍RPC方法。

    thrift:apache节俭rpc

    thriftapache thrift rpc一、apache thrift rpc 介绍;。二、thrift rpc 使用注意事项1、编写服务文件2、生成Java接口cd到.thrift文件结尾的目录,使用命令:thrift -r --gen java HelloService.thrift而后可以看到...

    java查看sun包源码-go-rpc-programming-guide:gitbookGoRPC开发指南[中文文档]

    RPC介绍 远程过程调用(Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。 如果涉及的软件采用面向...

    XML-RPC.rar_HTTP协议_XML-R_XML-RPC _xml rpc

    简单介绍了XML-RPC这种通过HTTP协议进行RPC通信的规范。 以Apache XML-RPC 3.0为基础,对XML-RPC的基本原理及Apache XML-RPC 3.0的主要特性进行了讨论和分析

    Unity3D之RPC

    本文档为Unity3D中使用RPC数据交互的使用方法: 介绍了什么是RPC、RPC与Socket的关系、RPC的优缺点、使用RPC前的准备、RPC的具体使用方法(包含定义和调用),详细介绍了参数的使用。

    分布式RPC系统框架-Dubbo(2.7)教程(4.31G)

    分布式RPC系统框架-Dubbo(2.7)教程(4.31G) 〖课程介绍〗: 分布式RPC系统框架-Dubbo(2.7)教程 〖课程目录〗: 〖视频截图〗:

    RPC:通过TCPDDSREST进行RPC

    介绍该存储库包含一组提供不同通信的C ++库。 eProsima Fast RPC使用通过 TCP 提供快速 RPC 通信。 eProsima RPC over DDS通过OMG DDS实现提供RPC通信。 当前,它支持和实现。 REST上的eProsima RPC通过RESTful范式...

    基于dubbo实现的rpc框架RPC

    基于dubbo实现的rpc框架RPC 框架指的是:可以让客户端直接调用服务端方法就像调用本地方法一样简单的框架,比如我前面介绍的 Dubbo、Motan、gRPC 这些.zip

Global site tag (gtag.js) - Google Analytics