RPC远程过程调用简介
1. 什么是RPC
远程过程调用(英语:Remote Procedure Call,缩写为 RPC,也叫远程程序调用)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用。
2. 背景与用途
在单台计算机中,我们可以通过程序调用来传递控制和数据;或者说通过程序调用,我们可以将多个程序组成一个整体来实现某个功能。
如果将这种调用机制推广到多台彼此间可以进行网络通讯的计算机,由多台计算机中的多个程序组成一个整体来实现某个功能,这也是可以的。调用的一方(发起远程过程调用,然后调用这方的环境挂起,参数通过网络传递给被调用方,被调用的一方执行程序,当程序执行完成后,产生的结果再通过网络回传给调用的一方,调用的一方恢复继续执行。这样一种原型思想,就是我们所说的RPC远程过程调用。
RPC这种思想最早可以追溯到1976年,RPC的发展到今天已经40年有余了。
如今的计算机应用中,单机性能上很难承受住产品的压力,需要不断扩充多台机器来提升整体的性能。同时为了充分利用这些集群里的计算机,需要对其从架构上进行划分,以提供不同的服务,服务间相互调用完成整个产品的功能。RPC就能帮助我们解决这些服务间的信息传递和调用。
3. 概念说明
关于RPC的概念,我们可以从广义和狭义来分别进行理解。
广义
我们可以将所有通过网络来进行通讯调用的实现统称为RPC。
按照这样来理解的话,那我们发现HTTP其实也算是一种RPC实现。
狭义
区别于HTTP的实现方式,在传输的数据格式上和传输的控制上独立实现。比如在机器间通讯传输的数据不采用HTTP协议的方式(分为起始行、header、body三部份),而是使用自定义格式的二进制方式。
我们更多时候谈到的RPC都是指代这种狭义上的理解。
4. 优缺点
相比于传统HTTP的实现而言:
优点
- 效率高
- 发起RPC调用的一方,在编写代码时可忽略RPC的具体实现,如同编写本地函数调用一样
缺点
- 通用性不如HTTP好
因为传输的数据不是HTTP协议格式,所以调用双方需要专门实现的通信库,对于不同的编程开发语言,都要有相关实现。而HTTP作为一个标准协议,大部分的语言都已有相关的实现,通用性更好。
HTTP更多的面向用户与产品服务器的通讯。
RPC更多的面向产品内部服务器间的通讯。 thrift
RPC结构
RPC的设计思想是力图使远程调用中的通讯细节对于使用者透明,调用双方无需关心网络通讯的具体实现。因而实现RPC要进行一定的封装。
RPC原理上是按如下结构流程进行实现的。
流程:
调用者(Caller, 也叫客户端、Client)以本地调用的方式发起调用;
Client stub(客户端存根,可理解为辅助助手)收到调用后,负责将被调用的方法名、参数等打包编码成特定格式的能进行网络传输的消息体;
Client stub将消息体通过网络发送给对端(服务端)
Server stub(服务端存根,同样可理解为辅助助手)收到通过网络接收到消息后按照相应格式进行拆包解码,获取方法名和参数;
Server stub根据方法名和参数进行本地调用;
被调用者(Callee,也叫Server)本地调用执行后将结果返回给server stub;
Server stub将返回值打包编码成消息,并通过网络发送给对端(客户端);
Client stub收到消息后,进行拆包解码,返回给Client;
Client得到本次RPC调用的最终结果。
RPC远程过程调用简介相关推荐
- spring-boot重头再来 6 分布式理论 RPC远程过程调用 Zookeeper安装 Dubbo SpringBoot + Dubbo + zookeeper Spring Security
spring-boot重头再来 6 文章目录 spring-boot重头再来 6 分布式理论 RPC远程过程调用 Zookeeper安装 Dubbo dubbo-admin安装 dubbo-admin ...
- RPC(远程过程调用)
1.RPC和HTTP对比 1.1 具体实现 RPC:可以基于TCP协议,也可以基于HTTP协议. HTTP:基于HTTP协议 1.2 效率 RPC:自定义具体实现可以减少很多无用的报文内容,使得报文体 ...
- 微服务之RPC(远程过程调用)的四种方式
微服务思想 微服务思想-注册中心zookeeper 微服务: 架构设计采用分布式思想,当服务器发生故障时,可以实现自动化的故障迁移.无需人为干预. 注册中心实现原理: ZK工作原理说明 Zookeep ...
- rpc远程过程调用_什么是远程过程调用(RPC)?
rpc远程过程调用 Remote Procedure Call (RPC) is a protocol or architecture which is used to run programmes ...
- RPC与Netty简介
RPC 一.Socket介绍 Socket概述 Socket,套接字就是两台主机之间逻辑连接的端点.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装 ...
- RPC(远程过程调用协议)介绍
RPC框架解释 谁能用通俗的语言解释一下什么是RPC框架? -远程过程调用协议RPC(Remote Procedure Call Protocol) 首先了解什么叫RPC,为什么要RPC,RPC是指远 ...
- RPC 远程过程调用协议
RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议假定某些传输协议的存 ...
- 译:6.RabbitMQ Java Client 之 Remote procedure call (RPC,远程过程调用)
在 译:2. RabbitMQ 之Work Queues (工作队列) 我们学习了如何使用工作队列在多个工作人员之间分配耗时的任务. 但是如果我们需要在远程计算机上运行一个函数并等待结果呢?嗯,这 ...
- 造轮子实现RPC框架_01_MyRPCFramework简介
项目简介: 造轮子实现"MyRPCFramework"框架 RPC介绍: RPC是让客户端远程调用服务端方法 就像 调用本地方法一样简单的一种设计理念 一个最简单的 RPC 框架架 ...
最新文章
- CentOS 下 rpm包与 yum 安装与卸载
- HarmonyOS工程【鸿蒙开发专题02】
- Solr5.3.1通过copyField设置多个field(字段)同时检索
- go基本语法:channel未关闭遍历结束后会报错deadlock
- Contracts for Java
- Teams AppId, InstallationId 和 ExternalId 的区别
- swift入门之TableView
- vim怎么跳转到函数定义处_Vim、gvim操作跳转光标区块和代码块的跳转
- 1011.log4cplus移植记录
- 大数据之-Hadoop之HDFS_读数据流程_原理篇---大数据之hadoop工作笔记0069
- 答读者问(7):相关实习、在软件开发和测试等论文和关系问题
- 人脸识别之特征脸方法(Eigenface)PCA方法
- 软件源码破解工具De4Dot用法,net破解、反混淆
- WIN10杜比音效驱动安装[蓝奏云]
- 期权套利组合 matlab,期权交易:简单套利组合
- 分析手段之一:质谱仪GCMS质谱技术
- 小时候玩过的游戏之八——玻璃弹珠
- 一行代码实现蒲公英市场APP检查更新
- 电视显示通路故障或服务器不可用,我家的华为机顶盒连不上网,显示50%通路故障或AAA认证失败,这是怎回事?...
- 浅谈基于openssl的多级证书,Multi-level CA的签发和管理,以及双向认证