Java实现RPC框架
什么是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框架相关推荐
- Java分布式 RPC 框架性能大比拼,Dubbo真的最差吗?
点击上方"搜云库技术团队",选择"设为星标" 回复"1024"或"面试题"获取学习资料 Dubbo 是阿里巴巴公司开源的 ...
- Java分布式 RPC 框架性能大比拼,Dubbo最差?
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RP ...
- Java 分布式 RPC 框架性能大比拼,Dubbo 排第几?
Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. 不过,略有遗憾的是,据说在淘宝内部,du ...
- java 分布式rpc框架_分布式RPC框架Apache Dubbo(一)
4 Dubbo快速入门 Dubbo作为一个RPC框架,其最核心的功能就是要实现跨网络的远程调用.本小节就是要创建两个应用,一个作为服务的提供方,一个作为服务的消费方.通过Dubbo来实现服务消费方远程 ...
- 【JAVA】Java实现rpc框架QJAVA所需方法(类似Dubbo)
线程池ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliv ...
- Java实现简单的RPC框架
一.RPC简介 RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议.它允许像调用本地服务一样调用远程服务.它可以有不同的实现方式.如RMI(远程方法调用) ...
- Java 动态代理及 RPC 框架介绍
所谓动态代理,指的是语言提供的一种语法,能够将对对象中不同方法的调用重定向到一个统一的处理函数中来. python重写__getattr__函数能够做到这一点,就连世界上最好的语言也提供称为魔术方法的 ...
- Java 中几种常用的 RPC 框架介绍
RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展.Java中的RPC框架比较多,各有特色,广泛使用的有RMI.Hessian.Dubbo等.RPC还 ...
- 实现java RPC框架
http://javatar.iteye.com/blog/1123915 主要利用socket通信,反射,代理实现类似RMI的RPC框架 首先是框架的代码 package framework;imp ...
最新文章
- python爬虫能干什么-python爬虫能干什么
- 阿里云故障演练平台获得可信云最高等级认证,为企业数字韧性能力保驾护航
- python教程:dict字典常用方法总结,数据解构(解包)
- [图解tensorflow源码] [原创] Tensorflow 图解分析 (Session, Graph, Kernels, Devices)
- C和指针之字符串strchr、strpbrk、strstr
- SQL Server数学函数
- Nginx For Windows 关于 worker_connections 不生效问题
- 地摊叫卖、超市播音工具-简洁的文字转语音播音软件
- 编码-京东实习笔试编程题-生日礼物-动态规划
- 异常检测算法分类及经典模型概览
- 蓝桥杯 ADV-207 算法提高 最长字符序列
- pytorch:定义自己的网络结构
- 获取网页html内容
- 转型实践|产品设计从青铜到王者—青铜篇
- Aegisub彩虹字特效代码
- 李嘉诚语录/汪涵语录/史玉柱趣事
- 【移动端】屏幕、像素、视口、 viewport 控制
- wx微信小程序实现通讯录
- 互联网公司的岗位英文简写
- 龙族幻想导入数据id_龙族幻想:一键捏脸数据ID 快速捏脸数据ID汇总分享
热门文章
- Android -- 网络请求
- SQL Server 数据库中的几个常见的临界值
- window.open以post方式提交
- 【推荐】.NET批量上传控件——HtmlInputFiles
- ASP.NET面试题 (转)
- android10无法获取ssid,解决Android 8.0和9.0无法获取SSID (unknow ssid)
- linux安装ssh放在,Linux安装SSH
- python数据按照分组进行频率分布_python 等频率切分数据
- python猴子偷桃递归_C++猴子偷桃问题
- 春节传统元素素材,帮助设计师完成中国风海报设计