一文弄懂 RPC 通信流程全过程

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了一文弄懂 RPC 通信流程全过程脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一文弄懂 RPC 通信流程全过程

什么是 RPC 呢

RPC 的全称是 Remote PRocedure Call,即远程过程调用

从字面意思可以知道,远程肯定是指要跨机器而非本机,需要网络编程才能实现。但是不是只要通过网络通信访问到另一台机器的应用程序,就可以称之为 RPC 调用了F1f;

其实 RPC 是帮助我们用来屏蔽网络编程细节,实现调用远程方法就跟调用本地方法(同一个项目中的方法)一样的简单,不需要因为网络编程而写很多与业务无关的代码。总之,RPC 的作用体现在两方面:

  1. 屏蔽远程调用根本地调用的区别,调用远程方法就像调用本地方法一样简单
  2. 隐藏底层网络通信的复杂性,让我们更专注于业务逻辑

RPC 通信流程

一个完整的 RPC 会涉及到哪些步骤呢?

  1. 由于 RPC 的远程调用必然会通过网络来传输数据,且需要保证可靠性,所以 RPC 一般默认采用 TCP 来进行传输
  2. 网络传输的数据必须是二进制数据,但是调用方请求的出入参数都是对象,而对象是无法直接在网络中传输的,因此我们需要把对象转换为二进制数据才能在网络上传输,这个过程我们称之为“序列化”
  3. 当二进制数据进过网络传输给了服务提供方之后,那提供方怎么知道一个请求的数据哪里结束,是一个什么类型的请求呢
  4. 于是我们将数据格式的约定叫做“协议“,一般分为消息头和消息体,服务方根据协议格式就可以从二进制数据中分割出不同的请求来,同时根据请求类型和序列化类型,把二进制的消息体逆向还原成请求对象,称之为”反序列化“
  5. 服务方根据反序列化出来的请求对象找到对应的实现类,完成真正的方法调用,再将结果传输序列化之后通过 TCP 传输给调用方
  6. 调用方再反序列化即可获得应答对象,这样就完成了一次 RPC 调用。

一文弄懂 RPC 通信流程全过程

注意:这里序列化是对方法调用的请求信息进行处理,编解码是对网络传输消息进行处理

那 RPC 是怎么简化 API,屏蔽掉 RPC 细节,使用方只需要关注业务接口,像调用本地一样来调用远程方法呢?

  • 由服务提供方给出业务接口申明,在调用方的程序里面, RPC 框架根据调用的服务接口提前生成动态代理实现类,并通过依赖注入等技注入到声明了接口的相关业务逻辑里面。该代理实现类会拦截所有的方法调用,在提供的方法逻辑里面完成一套完整的远程调用,并把远程调用结果返回个调用方,这样调用方在调用远程方法的时候就像调用本地方法一样。

有上述流程就一定是一个 RPC 框架了吗?

  • RPC 不仅有上述的作用,其真正强大的地方是他的治理功能,比如连接管理、健康检测、负载均衡、熔断限流等等

该文是作者的看极客的学习笔记

脚本宝典总结

以上是脚本宝典为你收集整理的一文弄懂 RPC 通信流程全过程全部内容,希望文章能够帮你解决一文弄懂 RPC 通信流程全过程所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。