当前位置:首页 » 《休闲阅读》 » 正文

一文弄懂 RPC 通信流程全过程_帅枫的博客

10 人参与  2022年01月03日 08:19  分类 : 《休闲阅读》  评论

点击全文阅读


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

什么是 RPC 呢

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

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

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

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

RPC 通信流程

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

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

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

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

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

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

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

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


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/32560.html

调用  方法  请求  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1