文章目录

  • 一、RPC是什么
  • 二、RPC需要解决的问题
    • 1、Call ID映射
    • 2、序列化和反序列化
    • 3、网络传输
    • 4、RPC的调用流程图
  • 三、常用的RPC框架

一、RPC是什么

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

二、RPC需要解决的问题

1、Call ID映射

  我们怎么告诉远程机器我们要调用funA,而不是funB或者funC呢?在本地调用中,函数体是直接通过函数指针来指定的,我们调用funA,编译器就自动帮我们调用它相应的函数指针。但是在远程调用中,函数指针是不行的,因为两个进程的地址空间是完全不一样的

  所以,在RPC中,所有的函数都必须有自己的一个ID。这个ID在所有进程中都是唯一确定的。客户端在做远程过程调用时,必须附上这个ID。然后我们还需要在客户端和服务端分别维护一个 {函数 <–> Call ID} 的对应表。两者的表不一定需要完全相同,但相同的函数对应的Call ID必须相同

  【Note】当客户端需要进行远程调用时,它就查一下这个表,找出相应的Call ID,然后把它传给服务端,服务端也通过查表,来确定客户端需要调用的函数,然后执行相应函数的代码。

2、序列化和反序列化

  客户端怎么把参数值传给远程的函数呢?在本地调用中,我们只需要把参数压到栈里,然后让函数自己去栈里读就行。

  但是在远程过程调用时,客户端跟服务端是不同的进程,不能通过内存来传递参数。甚至有时候客户端和服务端使用的都不是同一种语言(比如服务端用C++,客户端用Java或者Python)。

  【Note】这时候就需要客户端把参数先转成一个字节流(编码),传给服务端后,再把字节流转成自己能读取的格式(解码)。这个过程叫序列化和反序列化。同理,从服务端返回的值也需要序列化反序列化的过程。

  为什么需要序列化?

  • 转换为字节流方便进行网络传输

  • 实现跨平台、跨语言;如果是跨平台的序列化,则发送方序列化后,接收方可以用任何其支持的平台反序列化成相应的版本,比如 Java序列化后, 用.net、phython等反序列化。

3、网络传输

  远程调用往往用在网络上,客户端和服务端是通过网络连接的。所有的数据都需要通过网络传输,因此就需要有一个网络传输层。

  【Note】网络传输层需要把Call ID和序列化后的参数字节流传给服务端,然后再把序列化后的调用结果传回客户端。只要能完成这两者的,都可以作为传输层使用。因此,它所使用的协议其实是不限的,能完成传输就行。尽管大部分RPC框架都使用TCP协议,但其实UDP也可以,而gRPC干脆就用了HTTP2。

  所以,要实现一个RPC框架,其实只需要把以上三点实现了就基本完成了。Call ID映射可以直接使用函数字符串,也可以使用整数ID。映射表一般就是一个哈希表。序列化反序列化可以自己写,也可以使用Protobuf或者FlatBuffers之类的。网络传输库可以自己写socket,或者用asio,ZeroMQ,Netty之类。

4、RPC的调用流程图

三、常用的RPC框架

  • gRPC是Google公布的开源软件,基于最新的HTTP2.0协议,并支持常见的众多编程语言。 我们知道HTTP2.0是基于二进制的HTTP协议升级版本,目前各大浏览器都在快马加鞭的加以支持。 这个RPC框架是基于HTTP协议实现的,底层使用到了Netty框架的支持。

  • Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架。它有一个代码生成器来对它所定义的IDL定义文件自动生成服务代码框架。用户只要在其之前进行二次开发就行,对于底层的RPC通讯等都是透明的。不过这个对于用户来说的话需要学习特定领域语言这个特性,还是有一定成本的。

  • Dubbo是阿里集团开源的一个极为出名的RPC框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是及其鲜明的特色。同样的远程接口是基于Java Interface,并且依托于spring框架方便开发。可以方便的打包成单一文件,独立进程运行,和现在的微服务概念一致。

参考:https://blog.csdn.net/zhenghhgz/article/details/80595358

RPC(远程过程调用)详解相关推荐

  1. RPC远程过程调用详解

    RPC概念解析 首先要知道RPC是什么,以及RPC能做什么.RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不 ...

  2. RPC框架的实现原理,及RPC架构组件详解

    RPC的由来 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时, ...

  3. 分布式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 ...

  4. 跨语言RPC框架Thrift详解

    一. 概念 Apache的Thrift软件框架,是用来进行可伸缩的.跨语言的服务开发,它通过一个代码生成引擎来构建高效.无缝的服务,这些服务能够实现跨语言调度,目前支持的语言有: C++, Java, ...

  5. RPC架构组件详解刨析

    一个基本的RPC架构里面应该至少包含以下4个组件: 1.客户端(Client):服务调用方(服务消费者) 2.客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数数 据信息打包 ...

  6. optee的RPC设计(模型)详解

    快速链接: .

  7. 详解RPC远程调用和消息队列MQ的区别

    谈到分布式架构,就不得不谈到分布式架构的基石RPC. 什么是RPC RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制. RPC服 ...

  8. Hadoop中RPC机制详解之Server端

    2019独角兽企业重金招聘Python工程师标准>>> Hadoop 中 RPC 机制详解之 Client 端 1. Server.Listener RPC Client 端的 RP ...

  9. 阿里P8架构师谈:主流RPC框架详解,以及与SOA、SOAP、REST的区别

    什么是RPC RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. 简言之,RPC使 ...

  10. SOA 微服务 RPC WebService Soap关系详解

    SOA.RMI.RPC.Rest.RestFul.Soap.WebService详解 目录 一.SOA是什么? SOA的应用场景: SOA主要的使用场景:   ​ 数据总线是什么? SOA最显著的优势 ...

最新文章

  1. wp7中的fill_parent
  2. 后端系统架构 听课笔记
  3. .NET 跨平台服务端资料
  4. 用多媒体库 Bass.dll 播放 mp3 [8] - 实时显示左右声道的峰值
  5. Oracle数据恢复、数据库恢复、灾难恢复专题
  6. Django Bootstrap开发笔记03 - Bootstrap环境配置
  7. Shell脚本学习-数组
  8. python命令行解析库——argparse库的使用
  9. python dll注入 网络_dll注入
  10. 我喜欢计算机作文450字,我喜欢的一种游戏作文450字(精选8篇)
  11. java 算法,Java的十大算法你掌握好了吗?
  12. 微擎api.php,微擎支付api发起支付并验证
  13. YOLOv5中autoanchor.py的def metric(k)的r = wh[:, None] / k[None]的理解
  14. js逆向系列之猿人学爬虫第13题
  15. 云原生时代一站式DevOps平台--阿里云效
  16. Storm入门与实践(3)通过WordCount展开Storm的编程之旅
  17. dns服务器无法自动,dns服务存在问题如何解决【解决方法】
  18. 最快捷有效的Au贴唱流程攻略
  19. 【微信小程序】---- redux 在原生微信小程序的使用实例
  20. 邮票问题---动态规划

热门文章

  1. computer browser服务无法启动 错误1068 依存服务或组无法启动
  2. 名编辑电子杂志大师教程 | 安装名编辑电子杂志大师
  3. 【xlwings api语言参考】Range.FormulaR1C1 属性
  4. Viper--方便好用的Golang 配置库
  5. hypermesh分析流程
  6. (转载)c# winform comboBox的常用一些属性和用法
  7. Web大学生网页作业成品 基于HTML+CSS+JavaScript-----苹果商城Apple商城 8页 三级带视频
  8. consulandnacos
  9. 英国经济学专业哪些院校比较好?
  10. 美团点评后台开发实习生面经