关于RPC框架,首先我们要了解什么叫RPC,为什么要用RPC。

RPC是只远程过程调用,也就是说两台服务器A,B, 一个应用部署在A服务器上,另一个应用部署在B服务器上,A服务器上的应用想要调用B服务器上的应用提供的方法/函数,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语意和传递调用的参数。

比如说,一个方法可能这样定义:

Student getStudentByName(String name)

那么:

首先,要解决通讯的问题,主要是通过在客户端和服务器之间建立TCP连接,远程调用过程中所有交换的数据都在这个连接里传输,连接可以是按需连接,调用结束后就关闭,也

可以是长连接,多个远程调用共享一个连接。

第二,要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址)以及特定的端口号,方法的名称是什么,这样才能完成调用,比如基于WEB服务协议的RPC,就要提供一个endpoint URI,或者是从UDDI服务上查找。如果是RMI调用的话,还需要一个RMI Registry来注册服务的地址。

第三,当A服务器上的应用发起远程过程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于 二进制的,内存中的参数的值要序列化成二进制的形式,也就是序列化(Serialize)或编组(marshal),通过寻址和传输将序列化的二进制发送给B服务器。

第四,B服务器收到请求后,需要对参数进行反序列化(序列化的逆操作),恢复为内存中的表达方式,然后找到对应的方法(寻址的一部分)进行本地调用,然后得到返回值。

第五,返回值还要发送给A服务器上的应用,也要经过序列化的方式发送,服务器A接到后,在反序列化,恢复为内存中的表达方式,交给A服务器上的应用。

RPC框架的意义和用法,什么是RPC相关推荐

  1. Spark RPC框架源码分析(二)RPC运行时序

    前情提要: Spark RPC框架源码分析(一)简述 一. Spark RPC概述 上一篇我们已经说明了Spark RPC框架的一个简单例子,Spark RPC相关的两个编程模型,Actor模型和Re ...

  2. 分布式RPC框架Dubbo详解

    目录 1.架构演进 1.1 单体架构 1.2  垂直架构 1.3 分布式架构 1.4 SOA架构 1.5 微服务架构 2.RPC框架 2.1 RPC基本概念介绍 2.1.1 RPC协议 2.1.2 R ...

  3. spring cloud和普通rpc框架的区别

    spring cloud和普通rpc框架的区别 补了一部分,后续再补 背景 其实本文标题有点不对,Spring Cloud也是一种RPC框架,但是区别是它使用的是http协议的传输,整体技术和普通RP ...

  4. 微服务架构之 —— RPC框架

    RPC简介 RPC是什么 Remote Procedure Call,远程过程调用. 首先来说本地方法调用,假设在main方法中调用一个本地的方法multiply(同一个进程内的方法调用).无非是做了 ...

  5. 自己动手从0开始实现一个分布式RPC框架

    简介: 如果一个程序员能清楚的了解RPC框架所具备的要素,掌握RPC框架中涉及的服务注册发现.负载均衡.序列化协议.RPC通信协议.Socket通信.异步调用.熔断降级等技术,可以全方位的提升基本素质 ...

  6. 面试精讲之面试考点及大厂真题 - 分布式专栏 05 公司使用什么RPC框架,聊聊你理解的RPC原理

    05 公司使用什么RPC框架,聊聊你理解的RPC原理 引言 前些年我们在做一个规模不大的系统的时候,也就是单体架构,一台服务器部署上一个应用和数据库也就够了.但是现代化互联网公司业务逐渐扩大,服务逐渐 ...

  7. 关于设计RPC框架的几个问题

    本文来说下关于设计一个RPC框架的几个问题 文章目录 概述 什么是 RPC 分布式 RPC框架要素 注册中心 服务提供方(RPC 服务端) 服务消费方(RPC 客户端) 技术选型 注册中心 IO 通信 ...

  8. 1、微博RPC框架Motan

    RPC概述 RPC:即Remote Procedure Call Protocol,翻译过来就是远程过程调用协议. 引用知乎(https://www.zhihu.com/question/255366 ...

  9. 分布式 - 公司使用什么RPC框架,聊聊你理解的RPC原理

    不啰嗦,我们直接开始! 引言 以前在做一个规模不大的系统的时候,用的是单体架构,一台服务器部署上一个应用和数据库也就够了. 但是现代化互联网公司业务逐渐扩大,服务逐渐细分,很多服务之间需要通过远程分布 ...

最新文章

  1. 鱼眼镜头标定基本原理及实现
  2. 手动排除fbiytty和vcxlcph病毒的干扰
  3. uefi多linux系统启动盘,DIY制作无需格BIOS+UEFI双启动U盘工具|支持syslinux+grub+boomgr+grub2多启动...
  4. c语言用户管理系统的知识,C语言系统用户管理系统
  5. 接口不能被实例化的吗?接口引用是什么?
  6. python编程是啥-小学生都开始学的Python编程到底是什么?
  7. 和最大的连续子数组 Maximum Subarray
  8. 19电子设计速成实战宝典pdf_ALTIUMDESIGNER19(中文版)电子设计速成实战宝典
  9. 微信小程序 java实现登录界面_利用java实现一个微信小程序登录态维护功能
  10. Axure的基本功能
  11. MSL、TTL、RTT
  12. java拆弹_[逆向工程] 二进制拆弹Binary Bombs 快乐拆弹 详解
  13. 学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业
  14. 全国率先!北京发文推进电子劳动合同
  15. 干货!CDN内容分发网络实战技巧
  16. SNAP7 PLC协议S7 PDU程式读取长度
  17. C/C++程序员应聘常见面试题深入剖析
  18. Golang开发新手常犯的50个错误
  19. sap linux客户端,SAP 与 Linux类比
  20. BalsamiqMockups3 原型制作工具使用笔记

热门文章

  1. 前端js,join()方法
  2. python爬虫: 爬取拉勾网职位并分析
  3. 黑马程序员——C语言基础--数组和字符串
  4. php许愿墙mysql_许愿墙的搭建基于mysql
  5. 如何取消a标签的下划线
  6. 如何不写代码通过爬虫软件采集表格数据
  7. 【机器人小游戏---html(附源代码)】
  8. 吴恩达深度学习视频笔记
  9. 高斯定理证明(HTML)
  10. ArrayBuffer DataView