rpc(Remote process call 即远程过程调用)是一种请求-相应的协议, 主要使用于C/S架构中,使得分布式系统成为可能。由客户端发起请求,服务端调用各种参数处理请求,当服务器在处理请求时,客户端处于阻塞状态,除非发起一个异步请求。

rpc的理论开始于1970年代,而具体的实现要开始于1980年代早期,随着面向对象编程的兴起,RMI广泛地被实现,尤其是CORBA和Java RMI。而2000年后,RMI们也随着互联网的兴起而逐渐衰落。

rpc的劣势在于由于网络的不稳定性,远程调用可能出错。客户端需要处理许多可能的错误。rpc也不是一个标准,仅仅是一个idea。

我使用的语言主要是Java,在Java中,RPC是基于面向对象技术的。Java也有RMI,因为使用面向对象语言,所以是面向对象的,可以把对象发送到网络中。关于rpc和rmi的区别可以看这篇 http://stackoverflow.com/questions/2728495/what-is-the-difference-between-java-rmi-and-rpc

而详细的介绍在这边 https://www.cs.rutgers.edu/~pxk/416/notes/15-rpc.html

RPC的过程:

  1. 客户端调用stub,通常是调用本地方法,把参数放入stub中
  2. stub把参数打包进一个信息,并发起一个call来发送信息,打包参数的过程叫做marshalling
  3. 客户端本地的操作系统 通过system call 把信息发送到服务器
  4. 服务器本地的操作系统把数据包发送至服务器stub
  5. 服务器stub解包
  6. 服务器调用过程,而返回值以相反的路径传回客户端

而RESTful风格是一种替代。

rpc的学习的更多相关文章

  1. 微软RPC技术学习小结

    RPC,即Remote Procedure Call,远程过程调用,是进程间通信(IPC, Inter Process Communication)技术的一种.由于这项技术在自己所在项目(Window ...

  2. 简易RPC框架-学习使用

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  3. RPC框架学习+小Demo实例

    一.什么是RPC协议? 全称:远程过程调度协议 效果:使消费者向调用本地方法一样调用远程服务方法,对使用者透明 目前常用:Dubbo.Thirft.Sofa.... 功能: 建立远程通信(socket ...

  4. RPC的学习 & gprotobuf 和 thrift的比较

    参考 http://blog.csdn.net/pi9nc/article/details/17336663 集成libevent,google protobuf的RPC框架 RPC(Remote P ...

  5. RPC框架学习总结

    1.RPC是一种技术框架的称呼,不是某种具体协议,不局限于某种协议,RPC顾名思义就是远程过程调用,其核心思想是,RPC客户端调用远程服务器上的接口完成过程调用,远程服务器把结果返回. 2.RPC的最 ...

  6. Spring RPC 入门学习(1)-HelloWorld入门

    Spring搭建RPC环境 第一,下载所需要的jar包,下载地址:https://yunpan.cn/cPErQeANrSMyB (提取码:63e5),见下图: 第二,新建动态WebProject,把 ...

  7. Spring RPC 入门学习(3)-插入Student对象

    Spring RPC 向后台传递对象 1. 新建RPC接口:StudentInterface.java package com.cvicse.ump.rpc.interfaceDefine; impo ...

  8. Spring RPC 入门学习(3)-获取Student对象

    Spring RPC传递对象. 1. 新建RPC接口:StudentInterface.java package com.cvicse.ump.rpc.interfaceDefine; import ...

  9. Spring RPC 入门学习(2)-获取Map对象

    Spring RPC传递Map用例编写 1. 新建RPC接口类 package com.cvicse.ump.rpc.interfaceDefine; import java.util.Map; pu ...

随机推荐

  1. hosts文件简析

    什么是hosts文件 hosts文件是个什么文件呢?Hosts虽然没有后缀名,其实是个纯文本文件,可以用记事本等文本编辑软件打开.Hosts文件主要用于在本地电脑强制解析域名,Hosts文件里包含映射 ...

  2. php用百度地图API进行IP定位和GPS定位

    <?php /** * 根据地理坐标获取国家.省份.城市,及周边数据类(利用百度Geocoding API实现) * 百度密钥获取方法:http://lbsyun.baidu.com/apico ...

  3. Oracle操作数据库oracleHelper

    1 Oracle OracleHelper //============================================================================ ...

  4. ExtJS4.2学习(二)——入门基础

    1.工程的目录结构: src里放后台的文件,WebRoot里放前台的文件. index.html或者index.jsp等是整个项目的首页,在首页我们要引入ExtJS的CSS样式文件和ExtJS的核心类 ...

  5. zoj 2071 Technology Trader 最大权闭合子图

    传送门 和上一题一样, 也是一个最大权闭合子图.不过建图好麻烦的感觉  写了好久. 源点和原材料连边, 权值为val. 汇点和产品连边, 权值为val. 产品与和它有关系的材料连边, 权值inf. 最 ...

  6. python网络编程-01

    python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...

  7. Pro/Engineer wildfire 5.0 野火版系列下载及安装方法

    三.PTC Pro/Engineer wildfire 5.0 M030 野火版最新版 DVD 下载(多国语言) 1.野火下载站下载32&64位下载:[32位] http://down.pro ...

  8. openStack deep dive,Retake Policy

    Method of Payment: visa MasterCard American Express Discover

  9. Juicy Couture_百度百科

    Juicy Couture_百度百科 Juicy Couture

  10. 毕业bg(dfs)

    毕业bg Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...