RPC简介

1. 什么是RPC

远程过程调用(英语:Remote Procedure Call,缩写为 RPC,也叫远程程序调用)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用。

2. RPC背景与用途

在单台计算机中,我们可以通过程序调用来传递控制和数据;或者说通过程序调用,我们可以将多个程序组成一个整体来实现某个功能。

如果将这种调用机制推广到多台彼此间可以进行网络通讯的计算机,由多台计算机中的多个程序组成一个整体来实现某个功能,这也是可以的。调用的一方(发起远程过程调用,然后调用这方的环境挂起,参数通过网络传递给被调用方,被调用的一方执行程序,当程序执行完成后,产生的结果再通过网络回传给调用的一方,调用的一方恢复继续执行。这样一种原型思想,就是我们所说的RPC远程过程调用。

RPC这种思想最早可以追溯到1976年,RPC的发展到今天已经40年有余了。

如今的计算机应用中,单机性能上很难承受住产品的压力,需要不断扩充多台机器来提升整体的性能。同时为了充分利用这些集群里的计算机,需要对其从架构上进行划分,以提供不同的服务,服务间相互调用完成整个产品的功能。RPC就能帮助我们解决这些服务间的信息传递和调用。

3. RPC概念说明

关于RPC的概念,我们可以从广义和狭义来分别进行理解。

广义

我们可以将所有通过网络来进行通讯调用的实现统称为RPC。

按照这样来理解的话,那我们发现HTTP其实也算是一种RPC实现。

狭义

区别于HTTP的实现方式,在传输的数据格式上和传输的控制上独立实现。比如在机器间通讯传输的数据不采用HTTP协议的方式(分为起始行、header、body三部份),而是使用自定义格式的二进制方式。

我们更多时候谈到的RPC都是指代这种狭义上的理解。

4. RPC优缺点

相比于传统HTTP的实现而言:

优点

  • 效率高
  • 发起RPC调用的一方,在编写代码时可忽略RPC的具体实现,如同编写本地函数调用一样

缺点

  • 通用性不如HTTP好 因为传输的数据不是HTTP协议格式,所以调用双方需要专门实现的通信库,对于不同的编程开发语言,都要有相关实现。而HTTP作为一个标准协议,大部分的语言都已有相关的实现,通用性更好。

HTTP更多的面向用户与产品服务器的通讯。

RPC更多的面向产品内部服务器间的通讯。 thrift

RPC结构

RPC的设计思想是力图使远程调用中的通讯细节对于使用者透明,调用双方无需关心网络通讯的具体实现。因而实现RPC要进行一定的封装。

RPC原理上是按如下结构流程进行实现的。

流程:

  1. 调用者(Caller, 也叫客户端、Client)以本地调用的方式发起调用;
  2. Client stub(客户端存根,可理解为辅助助手)收到调用后,负责将被调用的方法名、参数等打包编码成特定格式的能进行网络传输的消息体;
  3. Client stub将消息体通过网络发送给对端(服务端)
  4. Server stub(服务端存根,同样可理解为辅助助手)收到通过网络接收到消息后按照相应格式进行拆包解码,获取方法名和参数;
  5. Server stub根据方法名和参数进行本地调用;
  6. 被调用者(Callee,也叫Server)本地调用执行后将结果返回给server stub;
  7. Server stub将返回值打包编码成消息,并通过网络发送给对端(客户端);
  8. Client stub收到消息后,进行拆包解码,返回给Client;
  9. Client得到本次RPC调用的最终结果。

130、RPC远程过程调用相关推荐

  1. Windows RPC 远程过程调用

    本文章转载自 http://blog.csdn.net/xxxluozhen/article/details/5605818  作者写的很详细并且通俗易懂 一.什么是远程过程调用 什么是远程过程调用 ...

  2. RPC 远程过程调用

    RPC简介 RPC,英文全称: Remote Procedure Call. 中文名: 远程过程调用,是一个计算机通讯协议.借助RPC可以像调用本地服务一样地调用远程服务.比如两台服务器订单服务器和商 ...

  3. zkcli远程连接_高级框架第一天RPC:远程过程调用

    RPC:远程过程调用 主要内容 1.项目结构变化 2.RPC简介 3.RMI实现RPC 4.HttpClient实现RPC 5.Zookeeper安装 6.Zookeeper客户端常用命令 7.向Zo ...

  4. 架构师之路 — 分布式系统 — RPC 远程过程调用

    目录 文章目录 目录 RPC RPC 架构 成熟的开演 RPC 框架 RPC RPC(Remote Procedure Call,远程过程调用)是一种计算机程序通信方式,允许运行于一台计算机中的程序调 ...

  5. RabbitMQ学习系列(五): RPC 远程过程调用

    前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/ca ...

  6. (扫盲)RPC远程过程调用

    https://blog.csdn.net/mindfloating/article/details/39473807 https://blog.csdn.net/mindfloating/artic ...

  7. 分布式机构 RPC远程过程调用

  8. 远程过程调用RPC简介

    RPC(Remote Procedure Call, 远程过程调用):是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想. RPC是一种技术思想而非一种规范或协议,常见RPC技术 ...

  9. RPC(Remote Procedure Calls)远程过程调用

    很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单 ...

最新文章

  1. MySQL sysdate-5_mysql sysdate 1
  2. 赵劲松:预知潜在风险,做化工安全科技创新的引领者
  3. 使用PowerDesigner 15对现有数据库进行反向工程(图解教程) by Yulh
  4. linq 实现查询字符串拼接 : And 和 OR 两种方式
  5. 分区脚本(fdisk)
  6. mongodb连接java_如何从Java EE无状态应用程序连接到MongoDB
  7. 【ES】分布式调度系统之 Elastic-Job-Lite
  8. 河南科技学院去年对口计算机分数线,河南科技学院录取分数线2021是多少分(附历年录取分数线)...
  9. const 与 readonle 的异同
  10. H5常用代码:适配方案5
  11. PHP 获取微视无水印源地址_PHP快速实现解析无水印播放地址URL——快手篇
  12. 【毕设狗】【单片机毕业设计】基于单片机的智能衣柜设计–实物设计
  13. 运放为什么可以虚短虚断
  14. CSS中几种解决高度坍塌方式分析
  15. 记一次Redis出问题及解决方案
  16. 软件工程c语言2000行代码,C语言教务管理系统(2000行代码)
  17. 敏捷ACP 常用关键词整理 敏捷ACP 常用知识点整理
  18. 检查计算机电源,台式机电源如何检测 电脑电源检测方法【详解】
  19. CSS综合案例-品优购电商04
  20. 官方确认:新增一所“双一流”大学!

热门文章

  1. express框架在nodejs中的使用+解决跨域问题(cors三方库)
  2. 查看手机已经保存的所有wifi密码--红米Note3
  3. 华硕ASUS,无线网络功能差解决方案
  4. 从效能公式解构研发效能
  5. 微信小游戏广告位iphonex底部适配问题
  6. window10 戴尔电脑浏览照片、视频缩小放大操作,浏览网页等出现屏闪,但显示桌面,其它应用正常的情况解决办法
  7. 电子元器件-------电阻(R)
  8. MySQL之初始化配置
  9. 数据库DB、DBMS、DBA、DBS概念
  10. 密信云时间戳使用指南