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远程过程调用简介相关推荐

  1. spring-boot重头再来 6 分布式理论 RPC远程过程调用 Zookeeper安装 Dubbo SpringBoot + Dubbo + zookeeper Spring Security

    spring-boot重头再来 6 文章目录 spring-boot重头再来 6 分布式理论 RPC远程过程调用 Zookeeper安装 Dubbo dubbo-admin安装 dubbo-admin ...

  2. RPC(远程过程调用)

    1.RPC和HTTP对比 1.1 具体实现 RPC:可以基于TCP协议,也可以基于HTTP协议. HTTP:基于HTTP协议 1.2 效率 RPC:自定义具体实现可以减少很多无用的报文内容,使得报文体 ...

  3. 微服务之RPC(远程过程调用)的四种方式

    微服务思想 微服务思想-注册中心zookeeper 微服务: 架构设计采用分布式思想,当服务器发生故障时,可以实现自动化的故障迁移.无需人为干预. 注册中心实现原理: ZK工作原理说明 Zookeep ...

  4. rpc远程过程调用_什么是远程过程调用(RPC)?

    rpc远程过程调用 Remote Procedure Call (RPC) is a protocol or architecture which is used to run programmes ...

  5. RPC与Netty简介

    RPC 一.Socket介绍 Socket概述 Socket,套接字就是两台主机之间逻辑连接的端点.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装 ...

  6. RPC(远程过程调用协议)介绍

    RPC框架解释 谁能用通俗的语言解释一下什么是RPC框架? -远程过程调用协议RPC(Remote Procedure Call Protocol) 首先了解什么叫RPC,为什么要RPC,RPC是指远 ...

  7. RPC 远程过程调用协议

    RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议假定某些传输协议的存 ...

  8. 译:6.RabbitMQ Java Client 之 Remote procedure call (RPC,远程过程调用)

    在  译:2. RabbitMQ 之Work Queues (工作队列)  我们学习了如何使用工作队列在多个工作人员之间分配耗时的任务. 但是如果我们需要在远程计算机上运行一个函数并等待结果呢?嗯,这 ...

  9. 造轮子实现RPC框架_01_MyRPCFramework简介

    项目简介: 造轮子实现"MyRPCFramework"框架 RPC介绍: RPC是让客户端远程调用服务端方法 就像 调用本地方法一样简单的一种设计理念 一个最简单的 RPC 框架架 ...

最新文章

  1. CentOS 下 rpm包与 yum 安装与卸载
  2. HarmonyOS工程【鸿蒙开发专题02】
  3. Solr5.3.1通过copyField设置多个field(字段)同时检索
  4. go基本语法:channel未关闭遍历结束后会报错deadlock
  5. Contracts for Java
  6. Teams AppId, InstallationId 和 ExternalId 的区别
  7. swift入门之TableView
  8. vim怎么跳转到函数定义处_Vim、gvim操作跳转光标区块和代码块的跳转
  9. 1011.log4cplus移植记录
  10. 大数据之-Hadoop之HDFS_读数据流程_原理篇---大数据之hadoop工作笔记0069
  11. 答读者问(7):相关实习、在软件开发和测试等论文和关系问题
  12. 人脸识别之特征脸方法(Eigenface)PCA方法
  13. 软件源码破解工具De4Dot用法,net破解、反混淆
  14. WIN10杜比音效驱动安装[蓝奏云]
  15. 期权套利组合 matlab,期权交易:简单套利组合
  16. 分析手段之一:质谱仪GCMS质谱技术
  17. 小时候玩过的游戏之八——玻璃弹珠
  18. 一行代码实现蒲公英市场APP检查更新
  19. 电视显示通路故障或服务器不可用,我家的华为机顶盒连不上网,显示50%通路故障或AAA认证失败,这是怎回事?...
  20. 浅谈基于openssl的多级证书,Multi-level CA的签发和管理,以及双向认证

热门文章

  1. 【观察】抢先入局AIGC,新华三底层能力何在?
  2. iOS抓包工具Charles的使用
  3. 理解 Hanoi 汉诺塔非递归算法
  4. python通讯录管理系统(期末作业)
  5. 产品设计 计算机辅助设计学什么,产品设计专业课程有哪些 主要学什么
  6. 如何选择量水堰计的堰槽
  7. 什么是肉鸡服务器,黑客说的肉鸡正确解释
  8. 第十届蓝桥杯单片机省赛
  9. 小学老师 音乐 计算机,小学音乐教师个人工作总结(通用10篇)
  10. Redis介绍及可视化工具安装详解及redis基础指令(小白++)