RPC(Remote Promote Call)

RPC(Remote Promote Call):一种进程间通信方式。允许像调用本地服务一样调用远程服务。

RPC框架的主要目标就是让远程服务调用更简单、透明。RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式(XML/JSON/二进制)和通信细节。开发人员在使用的时候只需要了解谁在什么位置提供了什么样的远程服务接口即可,并不需要关心底层通信细节和调用过程。

RPC框架原理图

例如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的接口,由于不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。

调用过程

首先,要解决通讯的问题,主要是通过客户端和服务器端之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享一个连接。
第二,要解决寻址的问题,A服务器上的应用要调用B服务器上的应用,A服务器上的应用需要通过底层RPC框架得知:如何连接到B服务器(主机或IP地址)以及特定的端口,方法的名称等信息,这样才能完成调用。
第三,A服务器上的应用发起远程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于二进制的,内存中的参数需要序列化成二进制形式,然后再通过寻址和传输将序列化的二进制发送给B服务器。
第四:B服务器收到请求后,需要进行反序列化,恢复为内存中的表达方式,然后找到对应的方法进行本地调用并返回,序列化返回值并发送给A服务器。
第五:A服务器收到B服务器的返回值后,进行反序列化,恢复为内存中的表达方式,然后交给A服务器上的应用进行处理。

为什么需要RPC,无法在一个进程,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯。由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用。

refer:

谁能用通俗的语言解释一下什么是 RPC 框架?

RPC架构简单理解

最新文章

  1. Java程序设计之裴波拉切那数列(兔子一年的数量)
  2. 使用命令行工具运行Xcode 7 UI Tests
  3. android 入门-Activity及 字体
  4. 理解Oracle TM和TX锁
  5. Http请求 post get
  6. MsSqlServer bak文件数据导入
  7. 数字证书及CA的扫盲介绍(转)
  8. bzoj 2500 幸福的道路 树上直径+set
  9. linux集群自动化搭建(生成密钥对+分发公钥+远程批量执行脚本)
  10. mzf的考验
  11. linux中,当执行rpm -e删除一个软件包时,都做了些什么事
  12. Oracle11g导出为Oracle10g版本数据,解决10g不兼容11g文件
  13. Tomcat虚拟根目录与虚拟目录
  14. <script src="../build/browser.min.js"></script> 是用来里面babel工具把ES6的语法转成ES5
  15. 如何使用淘宝 NPM 镜像,安装CNPM的方法
  16. HTML5学习笔记(十四):变量作用域
  17. ubuntu16.4安装中文输入法
  18. 解决CentOS7虚拟机无法上网并设置CentOS7虚拟机使用静态IP上网
  19. 润乾报表整合到Tomcat服务器的部署过程
  20. Java 9 中的 9 个新特性

热门文章

  1. unix进程通信方式总结(上)(转)
  2. Scala安装配置和使用
  3. python中pip的安装与更新
  4. Product - 产品经理 - 内容
  5. CentOS下安装Docker CE教程
  6. 【转载】android权限大全
  7. python 输出对齐
  8. 数据结构 双向链表 C语言实现
  9. 博客C语言I作业11
  10. python列表的切片与复制