RPC通信原理

什么是 RPC
RPC(Remote Procedure Call Protocol)远程过程调用协议。
通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算上的某个过程或函数,就像调用本地应用程序中的一样。

正式的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

RPC 主要特质:

RPC 是协议:协议意味着规范。目前典型的 RPC 实现包括Hetty 等。但这些实现往往都会附加其他重要功能,例如 Du理、访问权限管理等功能。

网络协议和网络 IO 模型对其透明:既然 RPC 的客户端认地对象。那么传输层使用的是 TCP/UDP 还是 HTTP 协议,又或络协议它就不需要关心了。既然网络对其透明,那么调哪一种网络 IO 模型调用者也不需要关心。

信息格式对其透明:远程调用过程中,需要传递一些参调用结果。至于这些参数会以某种信息格式传递给网络上的个信息格式是怎样构成的,调用方是不需要关心的。

跨语言能力:对于调用方来说,不知道也无需知道远程语言运行的,无论服务器方使用的是什么语言,本次调用都值也应该按照调用方程序语言所能理解的形式进行描

RPC 原理:
实现 RPC 的程序包括 5 个部分:User、User-stub、RPCRuntime、Server-stub、Server。


user 就是发起 RPC 调用的 client ,当 user 想发起一个远程调用时,它实际是通过本地调用 user-stub。 user-stub 负责将调用的接口、方法和参数通过约定的协议规范进行编码并通过本地的 RPCRuntime 实例传输到远端的实例。远端 RPCRuntim 实例收到请求后交给 server-stub 进行解码后发起本地端调用,调用结果再返回给 user 端。

stub:为屏蔽客户调用远程主机上的对象,必须提供某种方式来模拟本地对象,这种本地对象称为存根(stub),存根负责接收本地方法调用,并将它们委派给各自的具体实现对象

原文地址:https://www.cnblogs.com/alexzhang92/p/10526347.html

时间: 2024-08-09 08:52:33

RPC通信原理的相关文章

Hadoop学习<四>--HDFS的RPC通信原理总结

这里先写下自己学习RPC的笔记总结,下面将详细介绍学习过程: RPC(remote procedure call) 不同java进程间的对象方法的调用. 一方称作服务端(server),一方称作客户端(client). server端提供对象,供客户端调用的,被调用的对象的方法的执行发生在server端. RPC是hadoop框架运行的基础. 通过rpc小例子获得的认识? 1. 服务端提供的对象必须是一个接口,接口extends VersioinedProtocal 2. 客户端能够的对象中的方

Hadoop RPC通信Client客户端的流程分析

Hadoop的RPC的通信与其他系统的RPC通信不太一样,作者针对Hadoop的使用特点,专门的设计了一套RPC框架,这套框架个人感觉还是有点小复杂的.所以我打算分成Client客户端和Server服务端2个模块做分析.如果你对RPC的整套流程已经非常了解的前提下,对于Hadoop的RPC,你也一定可以非常迅速的了解的.OK,下面切入正题. Hadoop的RPC的相关代码都在org.apache.hadoop.ipc的包下,首先RPC的通信必须遵守许多的协议,其中最最基本的协议即使如下: /**

基于框架的RPC通信技术原理解析

RPC的由来 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本. 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键. 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率. 此时,用于加速前端页面开发的 Web框架(MVC) 是关键

RPC 的原理和简单使用

RPC 的原理和简单使用 RPC 的概念 RPC,Remote Procedure Call ,翻译成中文就是远程过程调用,是一种进程间通信方式.它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数.在调用的过程中,不用程序员显式编码这个远程调用的细节.即无论是调用本地的接口/服务还是远程的接口/服务,本质上编写的调用代码基本相同. 说起 RPC,就不能不提到分布式,这个促使RPC诞生的领域. 假设你有一个计算器接口,Calculator 模块,以及它的实现类 Calcula

网络编程 -- RPC实现原理 -- RPC -- 迭代版本V1 -- 本地方法调用

网络编程 -- RPC实现原理 -- 目录 啦啦啦 V2--RPC -- 本地方法调用:不通过网络 入门 1. RPCObjectProxy rpcObjectProxy = new RPCObjectProxy(new LocalRPCClient()); : 绑定目标对象 2. IUserService userService = (IUserService) rpcObjectProxy.create(IUserService.class); :返回代理类 3. List<User> u

通信原理系列(0)——开篇

通信原理系列(0)——开篇 该系列主要讲述通信原理上的一些知识点,作为通信专业出生的人,如果不做点笔记,没过多久差不多就全忘了,在这里做点笔记,给自己提提醒. 目录 1.通信系统模型 2.信道的概念 3.调制与编码

网络编程 -- RPC实现原理 -- Netty -- 迭代版本V4 -- 粘包拆包

网络编程 -- RPC实现原理 -- 目录 啦啦啦 V2--Netty -- new LengthFieldPrepender(2) : 设置数据包 2 字节的特征码 new LengthFieldBasedFrameDecoder(65535, 0, 2, 0, 2) :  65535 :数据包长度.0:分隔符偏移值.2:分隔符长度.0:数据包偏移值.2:数据包长度. Class : Server package lime.pri.limeNio.netty.netty04; import j

RPC通信框架——RCF介绍(替换COM)

阅读目录 RPC通信框架 为什么选择RCF 简单的性能测试 参考资料 总结 现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方.那么为了实现跨平台,支持Linux系统,以及后续的分布式,首要任务是去除COM接口. 在对大量框架进行调研后,决定使用RCF替换COM接口. 回到顶部 RPC通信框架 CORBA ICE Thrift zeromq dbus RCF YAMI4 TAO 回到顶部 为什么选择RCF 经过各项对比,认为: RCF

RPC通信框架&mdash;&mdash;RCF介绍

现有的软件中用了大量的COM接口,导致无法跨平台,当然由于与Windows结合的太紧密,还有很多无法跨平台的地方.那么为了实现跨平台,支持Linux系统,以及后续的分布式,首要任务是去除COM接口. 在对大量框架进行调研后,决定使用RCF替换COM接口. RPC通信框架 CORBA ICE Thrift zeromq dbus RCF YAMI4 TAO 为什么选择RCF 经过各项对比,认为: RCF的使用方式与现有的COM接口方式非常类似,在开发上可以更快速.更容易的替换COM,并且可以少犯错