什么是RPC?

Remote Procedure Call,远程过程调用。也就是说,调用过程代码并不是在调用者本地运行,而是要实现调用者与被调用者二地之间的连接与通信。比较严格的定义是:这样一讲,容易联想到C/S模式的程序设计,我想是对的。RPC的基本通信模型是基于Client/Server进程间相互通信模型的一种同步通信形式;它对Client提供了远程服务的过程抽象,其底层消息传递操作对Client是透明的。在RPC中,Client即是请求服务的调用者(Caller),而Server则是执行Client的请求而被调用的程序 (Callee)。

一:RPC 远程过程调用

RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。

一次RPC调用的过程大概有10步:

  1.执行客户端调用语句,传送参数

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

  3.消息传送到远程主机

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

  5.根据调用请求以及参数执行远程过程(服务)

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

  7.服务器句柄返回结果,调用远程主机的系统网络服务发送结果

  8.消息传回本地主机

  9.客户端句柄由本地主机的网络服务接收消息

  10.客户端接收到调用语句返回的结果数据

简单点说,举个列子我们用springboot框架里面,把cotroller的代码放到一个服务器A上,把serviceIMPL的代码放到另外一个服务器B上,当客户请求服务器B上的方法的时候,就需要用到远程调用,这个过程就是RPC调用。

二:RMI 远程方法调用

RMI:远程方法调用(Remote Method Invocation)。能够让在客户端Java虚拟机上的对象像调用本地对象一样调用服务端java 虚拟机中的对象上的方法。

RMI远程调用步骤:

1,客户调用客户端辅助对象stub上的方法

2,客户端辅助对象stub打包调用信息(变量,方法名),通过网络发送给服务端辅助对象skeleton

3,服务端辅助对象skeleton将客户端辅助对象发送来的信息解包,找出真正被调用的方法以及该方法所在对象

4,调用真正服务对象上的真正方法,并将结果返回给服务端辅助对象skeleton

5,服务端辅助对象将结果打包,发送给客户端辅助对象stub

6,客户端辅助对象将返回值解包,返回给调用者

7,客户获得返回值

三:RPC与RMI的区别

1:方法调用方式不同:

RMI中是通过在客户端的Stub对象作为远程接口进行远程方法的调用每个远程方法都具有方法签名。如果一个方法在服务器上执行,但是没有相匹配的签名被添加到这个远程接口(stub)上,那么这个新方法就不能被RMI客户方所调用

RPC中是通过网络服务协议向远程主机发送请求,请求包含了一个参数集和一个文本值,通常形成“classname.methodname(参数集)”的形式。RPC远程主机就去搜索与之相匹配的类和方法,找到后就执行方法并把结果编码,通过网络协议发回。

2:适用语言范围不同:

RMI只用于Java;

RPC是网络服务协议,与操作系统和语言无关。

3:调用结果的返回形式不同:

Java是面向对象的,所以RMI的调用结果可以是对象类型或者基本数据类型;

RMI的结果统一由外部数据表示 (External Data Representation, XDR) 语言表示,这种语言抽象了字节序类和数据类型结构之间的差异。

Java实现RPC框架相关推荐

  1. Java分布式 RPC 框架性能大比拼,Dubbo真的最差吗?

    点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取学习资料 Dubbo 是阿里巴巴公司开源的 ...

  2. Java分布式 RPC 框架性能大比拼,Dubbo最差?

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RP ...

  3. Java 分布式 RPC 框架性能大比拼,Dubbo 排第几?

    Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. 不过,略有遗憾的是,据说在淘宝内部,du ...

  4. java 分布式rpc框架_分布式RPC框架Apache Dubbo(一)

    4 Dubbo快速入门 Dubbo作为一个RPC框架,其最核心的功能就是要实现跨网络的远程调用.本小节就是要创建两个应用,一个作为服务的提供方,一个作为服务的消费方.通过Dubbo来实现服务消费方远程 ...

  5. 【JAVA】Java实现rpc框架QJAVA所需方法(类似Dubbo)

    线程池ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliv ...

  6. Java实现简单的RPC框架

    一.RPC简介 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议.它允许像调用本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用) ...

  7. Java 动态代理及 RPC 框架介绍

    所谓动态代理,指的是语言提供的一种语法,能够将对对象中不同方法的调用重定向到一个统一的处理函数中来. python重写__getattr__函数能够做到这一点,就连世界上最好的语言也提供称为魔术方法的 ...

  8. Java 中几种常用的 RPC 框架介绍

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

  9. 实现java RPC框架

    http://javatar.iteye.com/blog/1123915 主要利用socket通信,反射,代理实现类似RMI的RPC框架 首先是框架的代码 package framework;imp ...

最新文章

  1. python爬虫能干什么-python爬虫能干什么
  2. 阿里云故障演练平台获得可信云最高等级认证,为企业数字韧性能力保驾护航
  3. python教程:dict字典常用方法总结,数据解构(解包)
  4. [图解tensorflow源码] [原创] Tensorflow 图解分析 (Session, Graph, Kernels, Devices)
  5. C和指针之字符串strchr、strpbrk、strstr
  6. SQL Server数学函数
  7. Nginx For Windows 关于 worker_connections 不生效问题
  8. 地摊叫卖、超市播音工具-简洁的文字转语音播音软件
  9. 编码-京东实习笔试编程题-生日礼物-动态规划
  10. 异常检测算法分类及经典模型概览
  11. 蓝桥杯 ADV-207 算法提高 最长字符序列
  12. pytorch:定义自己的网络结构
  13. 获取网页html内容
  14. 转型实践|产品设计从青铜到王者—青铜篇
  15. Aegisub彩虹字特效代码
  16. 李嘉诚语录/汪涵语录/史玉柱趣事
  17. 【移动端】屏幕、像素、视口、 viewport 控制
  18. wx微信小程序实现通讯录
  19. 互联网公司的岗位英文简写
  20. 龙族幻想导入数据id_龙族幻想:一键捏脸数据ID 快速捏脸数据ID汇总分享

热门文章

  1. Android -- 网络请求
  2. SQL Server 数据库中的几个常见的临界值
  3. window.open以post方式提交
  4. 【推荐】.NET批量上传控件——HtmlInputFiles
  5. ASP.NET面试题 (转)
  6. android10无法获取ssid,解决Android 8.0和9.0无法获取SSID (unknow ssid)
  7. linux安装ssh放在,Linux安装SSH
  8. python数据按照分组进行频率分布_python 等频率切分数据
  9. python猴子偷桃递归_C++猴子偷桃问题
  10. 春节传统元素素材,帮助设计师完成中国风海报设计